- updated object_types, event_types tables
[plcapi.git] / planetlab4.sql
index 1eda80d..b17a040 100644 (file)
@@ -9,7 +9,7 @@
 --
 -- Copyright (C) 2006 The Trustees of Princeton University
 --
--- $Id: planetlab4.sql,v 1.9 2006/10/11 19:53:42 mlhuang Exp $
+-- $Id: planetlab4.sql,v 1.15 2006/10/18 20:54:28 tmack Exp $
 --
 
 --------------------------------------------------------------------------------
@@ -121,7 +121,8 @@ CREATE TABLE address_types (
     address_type_id serial PRIMARY KEY, -- Address type identifier
     name text UNIQUE NOT NULL, -- Address type
     description text -- Address type description
-);
+) WITH OIDS;
+
 INSERT INTO address_types (name) VALUES ('Personal');
 INSERT INTO address_types (name) VALUES ('Shipping');
 -- XXX Used to be Site
@@ -506,8 +507,8 @@ GROUP BY person_id;
 --------------------------------------------------------------------------------
 
 -- Slice attribute types
-CREATE TABLE attributes (
-    attribute_id serial PRIMARY KEY, -- Attribute type identifier
+CREATE TABLE slice_attribute_types (
+    attribute_type_id serial PRIMARY KEY, -- Attribute type identifier
     name text UNIQUE NOT NULL, -- Attribute name
     description text, -- Attribute description
     min_role_id integer REFERENCES roles DEFAULT 10 -- If set, minimum (least powerful) role that can set or change this attribute
@@ -518,7 +519,7 @@ CREATE TABLE slice_attribute (
     slice_attribute_id serial PRIMARY KEY, -- Slice attribute identifier
     slice_id integer REFERENCES slices NOT NULL, -- Slice identifier
     node_id integer REFERENCES nodes, -- Sliver attribute if set
-    attribute_id integer REFERENCES attributes NOT NULL, -- Attribute type identifier
+    attribute_type_id integer REFERENCES slice_attribute_types NOT NULL, -- Attribute type identifier
     value text
 ) WITH OIDS;
 CREATE INDEX slice_attribute_slice_id_idx ON slice_attribute (slice_id);
@@ -530,10 +531,98 @@ array_to_string(array_accum(slice_attribute_id), ',') AS slice_attribute_ids
 FROM slice_attribute
 GROUP BY slice_id;
 
+--------------------------------------------------------------------------------
+-- Events
+--------------------------------------------------------------------------------
+
+-- event types
+CREATE TABLE event_types (
+       event_type text PRIMARY KEY -- Event type
+
+) WITH OIDS;
+
+INSERT INTO event_types (event_type) VALUES ('Add');
+INSERT INTO event_types (event_type) VALUES ('AddTo');
+INSERT INTO event_types (event_type) VALUES ('Get');
+INSERT INTO event_types (event_type) VALUES ('Update');
+INSERT INTO event_types (event_type) VALUES ('Delete');
+INSERT INTO event_types (event_type) VALUES ('Unknown');
+
+-- object types
+CREATE TABLE object_types (
+       object_type text PRIMARY KEY -- Object type 
+
+) WITH OIDS;
+
+INSERT INTO object_types (object_type) VALUES ('AddressType');
+INSERT INTO object_types (object_type) VALUES ('Address');
+INSERT INTO object_types (object_type) VALUES ('BootState');
+INSERT INTO object_types (object_type) VALUES ('KeyType');
+INSERT INTO object_types (object_type) VALUES ('Key');
+INSERT INTO object_types (object_type) VALUES ('NetworkMethod');
+INSERT INTO object_types (object_type) VALUES ('NetworkType');
+INSERT INTO object_types (object_type) VALUES ('Network');
+INSERT INTO object_types (object_type) VALUES ('NodeGroup');
+INSERT INTO object_types (object_type) VALUES ('NodeNetwork');
+INSERT INTO object_types (object_type) VALUES ('Node');
+INSERT INTO object_types (object_type) VALUES ('PCU');
+INSERT INTO object_types (object_type) VALUES ('Person');
+INSERT INTO object_types (object_type) VALUES ('Role');
+INSERT INTO object_types (object_type) VALUES ('Site');
+INSERT INTO object_types (object_type) VALUES ('SliceAttributeType');
+INSERT INTO object_types (object_type) VALUES ('SliceAttribute');
+INSERT INTO object_types (object_type) VALUES ('Slice');
+INSERT INTO object_types (object_type) VALUES ('Unknown');
+
+-- events
+CREATE TABLE events (
+       event_id serial PRIMARY KEY,  -- Event identifier
+       person_id  integer REFERENCES persons, -- person responsible for event
+       event_type text REFERENCES  event_types NOT NULL DEFAULT 'Unknown', -- Event type 
+       object_type text REFERENCES object_types NOT NULL DEFAULT 'Unknown', -- Object type associated with event
+       fault_code integer NOT NULL DEFAULT 0, -- did this event result in error
+        call text NOT NULL, -- call responsible for this event
+       runtime float, -- Event run time
+
+       -- Timestamps
+       time timestamp without time zone  NOT NULL DEFAULT CURRENT_TIMESTAMP
+   
+) WITH OIDS;
+
+-- event objects
+CREATE TABLE event_object (
+        event_id integer REFERENCES events NOT NULL, -- Event identifier
+        object_id integer NOT NULL -- Object identifier
+
+) WITH OIDS;
+
+CREATE INDEX event_object_event_id_idx ON event_object (event_id);
+CREATE INDEX event_object_object_id_idx ON event_object (object_id);
+
+CREATE VIEW event_objects AS
+SELECT event_id,
+array_to_string(array_accum(object_id), ',') AS object_ids
+FROM event_object
+GROUP BY event_id;
 --------------------------------------------------------------------------------
 -- Useful views
 --------------------------------------------------------------------------------
 
+--view_events
+CREATE VIEW view_events AS
+SELECT
+events.event_id,
+events.person_id,
+event_objects.object_ids,
+events.event_type,
+events.object_type,
+events.fault_code,
+events.call,
+events.time
+From events
+LEFT JOIN event_objects USING (event_id);
+
+-- view_persons
 CREATE VIEW view_persons AS
 SELECT
 persons.person_id,
@@ -681,13 +770,13 @@ SELECT
 slice_attribute.slice_attribute_id,
 slice_attribute.slice_id,
 slice_attribute.node_id,
-attributes.attribute_id,
-attributes.name,
-attributes.description,
-attributes.min_role_id,
+slice_attribute_types.attribute_type_id,
+slice_attribute_types.name,
+slice_attribute_types.description,
+slice_attribute_types.min_role_id,
 slice_attribute.value
 FROM slice_attribute
-INNER JOIN attributes USING (attribute_id);
+INNER JOIN slice_attribute_types USING (attribute_type_id);
 
 --------------------------------------------------------------------------------
 -- Built-in maintenance account and default site