-- This is the database schema for the 'scan-hardware Scan Agent'. CREATE TABLE scan_hardware ( scan_hardware_uuid uuid primary key, scan_hardware_host_uuid uuid not null, scan_hardware_cpu_model text not null, scan_hardware_cpu_cores numeric not null, -- We don't care about individual sockets / chips scan_hardware_cpu_threads numeric not null, scan_hardware_cpu_bugs text not null, scan_hardware_cpu_flags text not null, -- scan_hardware_ram_total numeric not null, -- This is the sum of the hardware memory module capacity scan_hardware_memory_total numeric not null, -- This is the amount seen by the OS, minus shared memory, like that allocated to video scan_hardware_memory_free numeric not null, -- scan_hardware_swap_total numeric not null, -- scan_hardware_swap_free numeric not null, -- scan_hardware_led_id text not null, -- scan_hardware_led_css text not null, -- scan_hardware_led_error text not null, -- modified_date timestamp with time zone not null, FOREIGN KEY(scan_hardware_host_uuid) REFERENCES hosts(host_uuid) ); ALTER TABLE scan_hardware OWNER TO admin; CREATE TABLE history.scan_hardware ( history_id bigserial, scan_hardware_uuid uuid, scan_hardware_host_uuid uuid, scan_hardware_cpu_model text, scan_hardware_cpu_cores numeric, scan_hardware_cpu_threads numeric, scan_hardware_cpu_bugs text, scan_hardware_cpu_flags text, scan_hardware_ram_total numeric, scan_hardware_memory_total numeric, scan_hardware_memory_free numeric, scan_hardware_swap_total numeric, scan_hardware_swap_free numeric, scan_hardware_led_id text, scan_hardware_led_css text, scan_hardware_led_error text, modified_date timestamp with time zone not null ); ALTER TABLE history.scan_hardware OWNER TO admin; CREATE FUNCTION history_scan_hardware() RETURNS trigger AS $$ DECLARE history_scan_hardware RECORD; BEGIN SELECT INTO history_scan_hardware * FROM scan_hardware WHERE scan_hardware_uuid=new.scan_hardware_uuid; INSERT INTO history.scan_hardware (scan_hardware_uuid, scan_hardware_host_uuid, scan_hardware_cpu_model, scan_hardware_cpu_cores, scan_hardware_cpu_threads, scan_hardware_cpu_bugs, scan_hardware_cpu_flags, scan_hardware_ram_total, scan_hardware_memory_total, scan_hardware_memory_free, scan_hardware_swap_total, scan_hardware_swap_free, scan_hardware_led_id, scan_hardware_led_css, scan_hardware_led_error, modified_date) VALUES (history_scan_hardware.scan_hardware_uuid, history_scan_hardware.scan_hardware_host_uuid, history_scan_hardware.scan_hardware_cpu_model, history_scan_hardware.scan_hardware_cpu_cores, history_scan_hardware.scan_hardware_cpu_threads, history_scan_hardware.scan_hardware_cpu_bugs, history_scan_hardware.scan_hardware_cpu_flags, history_scan_hardware.scan_hardware_ram_total, history_scan_hardware.scan_hardware_memory_total, history_scan_hardware.scan_hardware_memory_free, history_scan_hardware.scan_hardware_swap_total, history_scan_hardware.scan_hardware_swap_free, history_scan_hardware.scan_hardware_led_id, history_scan_hardware.scan_hardware_led_css, history_scan_hardware.scan_hardware_led_error, history_scan_hardware.modified_date); RETURN NULL; END; $$ LANGUAGE plpgsql; ALTER FUNCTION history_scan_hardware() OWNER TO admin; CREATE TRIGGER trigger_scan_hardware AFTER INSERT OR UPDATE ON scan_hardware FOR EACH ROW EXECUTE PROCEDURE history_scan_hardware(); CREATE TABLE scan_hardware_ram_modules ( scan_hardware_ram_module_uuid uuid primary key, scan_hardware_ram_module_host_uuid uuid not null, scan_hardware_ram_module_locator text not null, scan_hardware_ram_module_size numeric not null, scan_hardware_ram_module_manufacturer text not null, scan_hardware_ram_module_model text not null, scan_hardware_ram_module_serial_number text not null, modified_date timestamp with time zone not null, FOREIGN KEY(scan_hardware_ram_module_host_uuid) REFERENCES hosts(host_uuid) ); ALTER TABLE scan_hardware_ram_modules OWNER TO admin; CREATE TABLE history.scan_hardware_ram_modules ( history_id bigserial, scan_hardware_ram_module_uuid uuid, scan_hardware_ram_module_host_uuid uuid, scan_hardware_ram_module_locator text, scan_hardware_ram_module_size numeric, scan_hardware_ram_module_manufacturer text, scan_hardware_ram_module_model text, scan_hardware_ram_module_serial_number text, modified_date timestamp with time zone not null ); ALTER TABLE history.scan_hardware_ram_modules OWNER TO admin; CREATE FUNCTION history_scan_hardware_ram_modules() RETURNS trigger AS $$ DECLARE history_scan_hardware_ram_modules RECORD; BEGIN SELECT INTO history_scan_hardware_ram_modules * FROM scan_hardware_ram_modules WHERE scan_hardware_ram_module_uuid=new.scan_hardware_ram_module_uuid; INSERT INTO history.scan_hardware_ram_modules (scan_hardware_ram_module_uuid, scan_hardware_ram_module_host_uuid, scan_hardware_ram_module_locator, scan_hardware_ram_module_size, scan_hardware_ram_module_manufacturer, scan_hardware_ram_module_model, scan_hardware_ram_module_serial_number, modified_date) VALUES (history_scan_hardware_ram_modules.scan_hardware_ram_module_uuid, history_scan_hardware_ram_modules.scan_hardware_ram_module_host_uuid, history_scan_hardware_ram_modules.scan_hardware_ram_module_locator, history_scan_hardware_ram_modules.scan_hardware_ram_module_size, history_scan_hardware_ram_modules.scan_hardware_ram_module_manufacturer, history_scan_hardware_ram_modules.scan_hardware_ram_module_model, history_scan_hardware_ram_modules.scan_hardware_ram_module_serial_number, history_scan_hardware_ram_modules.modified_date); RETURN NULL; END; $$ LANGUAGE plpgsql; ALTER FUNCTION history_scan_hardware_ram_modules() OWNER TO admin; CREATE TRIGGER trigger_scan_hardware_ram_modules AFTER INSERT OR UPDATE ON scan_hardware_ram_modules FOR EACH ROW EXECUTE PROCEDURE history_scan_hardware_ram_modules();