-- This is the database schema for the 'scan-ipmitool' Scan Agent.
CREATE TABLE scan_ipmitool (
scan_ipmitool_uuid uuid not null primary key ,
scan_ipmitool_host_uuid uuid not null ,
scan_ipmitool_sensor_host text not null , -- The hostname of the machine we pulled the sensor value from. We don't link this to a host_uuid because it is possible the host doesn't doesn't have an entry (yet)
scan_ipmitool_sensor_name text not null ,
scan_ipmitool_sensor_units text not null , -- Temperature (°C), vDC, vAC, watt, amp, percent
scan_ipmitool_sensor_status text not null ,
scan_ipmitool_sensor_high_critical numeric not null ,
scan_ipmitool_sensor_high_warning numeric not null ,
scan_ipmitool_sensor_low_critical numeric not null ,
scan_ipmitool_sensor_low_warning numeric not null ,
modified_date timestamp with time zone not null ,
FOREIGN KEY ( scan_ipmitool_host_uuid ) REFERENCES hosts ( host_uuid )
) ;
ALTER TABLE scan_ipmitool OWNER TO admin ;
CREATE TABLE history . scan_ipmitool (
history_id bigserial ,
scan_ipmitool_uuid uuid ,
scan_ipmitool_host_uuid uuid ,
scan_ipmitool_sensor_host text ,
scan_ipmitool_sensor_name text ,
scan_ipmitool_sensor_units text ,
scan_ipmitool_sensor_status text ,
scan_ipmitool_sensor_high_critical numeric ,
scan_ipmitool_sensor_high_warning numeric ,
scan_ipmitool_sensor_low_critical numeric ,
scan_ipmitool_sensor_low_warning numeric ,
modified_date timestamp with time zone not null
) ;
ALTER TABLE history . scan_ipmitool OWNER TO admin ;
CREATE FUNCTION history_scan_ipmitool ( ) RETURNS trigger
AS $ $
DECLARE
history_scan_ipmitool RECORD ;
BEGIN
SELECT INTO history_scan_ipmitool * FROM scan_ipmitool WHERE scan_ipmitool_uuid = new . scan_ipmitool_uuid ;
INSERT INTO history . scan_ipmitool
( scan_ipmitool_uuid ,
scan_ipmitool_host_uuid ,
scan_ipmitool_sensor_host ,
scan_ipmitool_sensor_name ,
scan_ipmitool_sensor_units ,
scan_ipmitool_sensor_status ,
scan_ipmitool_sensor_high_critical ,
scan_ipmitool_sensor_high_warning ,
scan_ipmitool_sensor_low_critical ,
scan_ipmitool_sensor_low_warning ,
modified_date )
VALUES
( history_scan_ipmitool . scan_ipmitool_uuid ,
history_scan_ipmitool . scan_ipmitool_host_uuid ,
history_scan_ipmitool . scan_ipmitool_sensor_host ,
history_scan_ipmitool . scan_ipmitool_sensor_name ,
history_scan_ipmitool . scan_ipmitool_sensor_units ,
history_scan_ipmitool . scan_ipmitool_sensor_status ,
history_scan_ipmitool . scan_ipmitool_sensor_high_critical ,
history_scan_ipmitool . scan_ipmitool_sensor_high_warning ,
history_scan_ipmitool . scan_ipmitool_sensor_low_critical ,
history_scan_ipmitool . scan_ipmitool_sensor_low_warning ,
history_scan_ipmitool . modified_date ) ;
RETURN NULL ;
END ;
$ $
LANGUAGE plpgsql ;
ALTER FUNCTION history_scan_ipmitool ( ) OWNER TO admin ;
CREATE TRIGGER trigger_scan_ipmitool
AFTER INSERT OR UPDATE ON scan_ipmitool
FOR EACH ROW EXECUTE PROCEDURE history_scan_ipmitool ( ) ;
-- This contains the ever-changing sensor values. This is a separate table to keep the database as small as
-- possible.
CREATE TABLE scan_ipmitool_values (
scan_ipmitool_value_uuid uuid not null primary key ,
scan_ipmitool_value_host_uuid uuid not null ,
scan_ipmitool_value_scan_ipmitool_uuid uuid not null ,
scan_ipmitool_value_sensor_value numeric not null ,
modified_date timestamp with time zone not null ,
FOREIGN KEY ( scan_ipmitool_value_scan_ipmitool_uuid ) REFERENCES scan_ipmitool ( scan_ipmitool_uuid )
) ;
ALTER TABLE scan_ipmitool_values OWNER TO admin ;
CREATE TABLE history . scan_ipmitool_values (
history_id bigserial ,
scan_ipmitool_value_uuid uuid ,
scan_ipmitool_value_host_uuid uuid ,
scan_ipmitool_value_scan_ipmitool_uuid uuid ,
scan_ipmitool_value_sensor_value numeric ,
modified_date timestamp with time zone not null
) ;
ALTER TABLE history . scan_ipmitool_values OWNER TO admin ;
CREATE FUNCTION history_scan_ipmitool_values ( ) RETURNS trigger
AS $ $
DECLARE
history_scan_ipmitool_values RECORD ;
BEGIN
SELECT INTO history_scan_ipmitool_values * FROM scan_ipmitool_values WHERE scan_ipmitool_value_uuid = new . scan_ipmitool_value_uuid ;
INSERT INTO history . scan_ipmitool_values
( scan_ipmitool_value_uuid ,
scan_ipmitool_value_host_uuid ,
scan_ipmitool_value_scan_ipmitool_uuid ,
scan_ipmitool_value_sensor_value ,
modified_date )
VALUES
( history_scan_ipmitool_values . scan_ipmitool_value_uuid ,
history_scan_ipmitool_values . scan_ipmitool_value_host_uuid ,
history_scan_ipmitool_values . scan_ipmitool_value_scan_ipmitool_uuid ,
history_scan_ipmitool_values . scan_ipmitool_value_sensor_value ,
history_scan_ipmitool_values . modified_date ) ;
RETURN NULL ;
END ;
$ $
LANGUAGE plpgsql ;
ALTER FUNCTION history_scan_ipmitool_values ( ) OWNER TO admin ;
CREATE TRIGGER trigger_scan_ipmitool_values
AFTER INSERT OR UPDATE ON scan_ipmitool_values
FOR EACH ROW EXECUTE PROCEDURE history_scan_ipmitool_values ( ) ;