-- This is the database schema for the 'scan-lvm Scan Agent'. -- This table stores physical volume information CREATE TABLE scan_filesystems ( scan_filesystem_uuid uuid primary key, scan_filesystem_host_uuid uuid not null, -- The host that the file system is mounted on. Note that some FSes, like those from USB, can move between hosts. scan_filesystem_internal_uuid text not null, -- This comes from the file system's UUID, which is not actually always a UUID. scan_filesystem_type text not null, -- This is the name of the file system type. scan_filesystem_kernel_name text not null, -- This is the backing device of the file system. scan_filesystem_mount_point text not null, -- This is the name of the mount point. scan_filesystem_transport text not null, -- Optional description of the drive's transport (usb, nvme, sata, sata, md, raid, optical, sdcard, etc - 'unknown') scan_filesystem_media_type text not null, -- This is set to 'ssd' for solid state, 'platter' for spinning rust, 'network' for network mounts, etc. scan_filesystem_vendor text not null, -- Optional vendor of the drive the partition is on scan_filesystem_model text not null, -- Optional model of the drive the partiton is on scan_filesystem_serial_number text not null, -- Optional serial number of the drive the partition is on scan_filesystem_description text not null, -- Free form description of the device. scan_filesystem_size numeric not null, -- The size of the partition, in bytes scan_filesystem_used numeric not null, -- The used space, in bytes. modified_date timestamp with time zone not null, FOREIGN KEY(scan_filesystem_host_uuid) REFERENCES hosts(host_uuid) ); ALTER TABLE scan_filesystems OWNER TO admin; CREATE TABLE history.scan_filesystems ( history_id bigserial, scan_filesystem_uuid uuid, scan_filesystem_host_uuid uuid, scan_filesystem_internal_uuid text, scan_filesystem_type text, scan_filesystem_kernel_name text, scan_filesystem_mount_point text, scan_filesystem_transport text, scan_filesystem_media_type text, scan_filesystem_vendor text, scan_filesystem_model text, scan_filesystem_serial_number text, scan_filesystem_description text, scan_filesystem_size numeric, scan_filesystem_used numeric, modified_date timestamp with time zone not null ); ALTER TABLE history.scan_filesystems OWNER TO admin; CREATE FUNCTION history_scan_filesystems() RETURNS trigger AS $$ DECLARE history_scan_filesystems RECORD; BEGIN SELECT INTO history_scan_filesystems * FROM scan_filesystems WHERE scan_filesystem_uuid=new.scan_filesystem_uuid; INSERT INTO history.scan_filesystems (scan_filesystem_uuid, scan_filesystem_host_uuid, scan_filesystem_internal_uuid, scan_filesystem_type, scan_filesystem_kernel_name, scan_filesystem_mount_point, scan_filesystem_transport, scan_filesystem_media_type, scan_filesystem_vendor, scan_filesystem_model, scan_filesystem_serial_number, scan_filesystem_description, scan_filesystem_size, scan_filesystem_used, modified_date) VALUES (history_scan_filesystems.scan_filesystem_uuid, history_scan_filesystems.scan_filesystem_host_uuid, history_scan_filesystems.scan_filesystem_internal_uuid, history_scan_filesystems.scan_filesystem_type, history_scan_filesystems.scan_filesystem_kernel_name, history_scan_filesystems.scan_filesystem_mount_point, history_scan_filesystems.scan_filesystem_transport, history_scan_filesystems.scan_filesystem_media_type, history_scan_filesystems.scan_filesystem_vendor, history_scan_filesystems.scan_filesystem_model, history_scan_filesystems.scan_filesystem_serial_number, history_scan_filesystems.scan_filesystem_description, history_scan_filesystems.scan_filesystem_size, history_scan_filesystems.scan_filesystem_used, history_scan_filesystems.modified_date); RETURN NULL; END; $$ LANGUAGE plpgsql; ALTER FUNCTION history_scan_filesystems() OWNER TO admin; CREATE TRIGGER trigger_scan_filesystems AFTER INSERT OR UPDATE ON scan_filesystems FOR EACH ROW EXECUTE PROCEDURE history_scan_filesystems();