|
|
|
-- This is the database schema for the 'scan-lvm Scan Agent'.
|
|
|
|
|
|
|
|
|
|
|
|
-- This table stores physical volume information
|
|
|
|
CREATE TABLE scan_lvm_pvs (
|
|
|
|
scan_lvm_pv_uuid uuid primary key,
|
|
|
|
scan_lvm_pv_host_uuid uuid not null,
|
|
|
|
scan_lvm_pv_internal_uuid text not null, -- This comes from the PV itself. This is not a valid UUID format, so we use it more as a "serial number"
|
|
|
|
scan_lvm_pv_name text not null, -- This is the name of the PV.
|
|
|
|
scan_lvm_pv_used_by_vg text not null, -- This is the name of the VG that uses this PV. If it's blank, then no VG uses it yet.
|
|
|
|
scan_lvm_pv_attributes text not null, -- This is the short 3-character attribute of the PV
|
|
|
|
scan_lvm_pv_size numeric not null, -- The size of the PV in bytes
|
|
|
|
scan_lvm_pv_free numeric not null, -- The free space, in bytes.
|
|
|
|
modified_date timestamp with time zone not null,
|
|
|
|
|
|
|
|
FOREIGN KEY(scan_lvm_pv_host_uuid) REFERENCES hosts(host_uuid)
|
|
|
|
);
|
|
|
|
ALTER TABLE scan_lvm_pvs OWNER TO admin;
|
|
|
|
|
|
|
|
CREATE TABLE history.scan_lvm_pvs (
|
|
|
|
history_id bigserial,
|
|
|
|
scan_lvm_pv_uuid uuid,
|
|
|
|
scan_lvm_pv_host_uuid uuid,
|
|
|
|
scan_lvm_pv_internal_uuid text,
|
|
|
|
scan_lvm_pv_name text,
|
|
|
|
scan_lvm_pv_used_by_vg text,
|
|
|
|
scan_lvm_pv_attributes text,
|
|
|
|
scan_lvm_pv_size numeric,
|
|
|
|
scan_lvm_pv_free numeric,
|
|
|
|
modified_date timestamp with time zone not null
|
|
|
|
);
|
|
|
|
ALTER TABLE history.scan_lvm_pvs OWNER TO admin;
|
|
|
|
|
|
|
|
CREATE FUNCTION history_scan_lvm_pvs() RETURNS trigger
|
|
|
|
AS $$
|
|
|
|
DECLARE
|
|
|
|
history_scan_lvm_pvs RECORD;
|
|
|
|
BEGIN
|
|
|
|
SELECT INTO history_scan_lvm_pvs * FROM scan_lvm_pvs WHERE scan_lvm_pv_uuid=new.scan_lvm_pv_uuid;
|
|
|
|
INSERT INTO history.scan_lvm_pvs
|
|
|
|
(scan_lvm_pv_uuid,
|
|
|
|
scan_lvm_pv_host_uuid,
|
|
|
|
scan_lvm_pv_internal_uuid,
|
|
|
|
scan_lvm_pv_name,
|
|
|
|
scan_lvm_pv_used_by_vg,
|
|
|
|
scan_lvm_pv_attributes,
|
|
|
|
scan_lvm_pv_size,
|
|
|
|
scan_lvm_pv_free,
|
|
|
|
modified_date)
|
|
|
|
VALUES
|
|
|
|
(history_scan_lvm_pvs.scan_lvm_pv_uuid,
|
|
|
|
history_scan_lvm_pvs.scan_lvm_pv_host_uuid,
|
|
|
|
history_scan_lvm_pvs.scan_lvm_pv_internal_uuid,
|
|
|
|
history_scan_lvm_pvs.scan_lvm_pv_name,
|
|
|
|
history_scan_lvm_pvs.scan_lvm_pv_used_by_vg,
|
|
|
|
history_scan_lvm_pvs.scan_lvm_pv_attributes,
|
|
|
|
history_scan_lvm_pvs.scan_lvm_pv_size,
|
|
|
|
history_scan_lvm_pvs.scan_lvm_pv_free,
|
|
|
|
history_scan_lvm_pvs.modified_date);
|
|
|
|
RETURN NULL;
|
|
|
|
END;
|
|
|
|
$$
|
|
|
|
LANGUAGE plpgsql;
|
|
|
|
ALTER FUNCTION history_scan_lvm_pvs() OWNER TO admin;
|
|
|
|
|
|
|
|
CREATE TRIGGER trigger_scan_lvm_pvs
|
|
|
|
AFTER INSERT OR UPDATE ON scan_lvm_pvs
|
|
|
|
FOR EACH ROW EXECUTE PROCEDURE history_scan_lvm_pvs();
|
|
|
|
|
|
|
|
|
|
|
|
-- This table stores volume group information
|
|
|
|
CREATE TABLE scan_lvm_vgs (
|
|
|
|
scan_lvm_vg_uuid uuid primary key,
|
|
|
|
scan_lvm_vg_host_uuid uuid not null,
|
|
|
|
scan_lvm_vg_internal_uuid text not null, -- This comes from the VG itself. This is not a valid UUID format, so we use it more as a "serial number"
|
|
|
|
scan_lvm_vg_name text not null, -- This is the name of the VG.
|
|
|
|
scan_lvm_vg_attributes text not null, -- This is the short 6-character attribute of the VG
|
|
|
|
scan_lvm_vg_extent_size numeric not null, -- The size of each physical extent, in bytes.
|
|
|
|
scan_lvm_vg_size numeric not null, -- The size of the VG, in bytes.
|
|
|
|
scan_lvm_vg_free numeric not null, -- The free space in the VG, in bytes.
|
|
|
|
modified_date timestamp with time zone not null,
|
|
|
|
|
|
|
|
FOREIGN KEY(scan_lvm_vg_host_uuid) REFERENCES hosts(host_uuid)
|
|
|
|
);
|
|
|
|
ALTER TABLE scan_lvm_vgs OWNER TO admin;
|
|
|
|
|
|
|
|
CREATE TABLE history.scan_lvm_vgs (
|
|
|
|
history_id bigserial,
|
|
|
|
scan_lvm_vg_uuid uuid,
|
|
|
|
scan_lvm_vg_host_uuid uuid,
|
|
|
|
scan_lvm_vg_internal_uuid text,
|
|
|
|
scan_lvm_vg_name text,
|
|
|
|
scan_lvm_vg_attributes text,
|
|
|
|
scan_lvm_vg_extent_size numeric,
|
|
|
|
scan_lvm_vg_size numeric,
|
|
|
|
scan_lvm_vg_free numeric,
|
|
|
|
modified_date timestamp with time zone not null
|
|
|
|
);
|
|
|
|
ALTER TABLE history.scan_lvm_vgs OWNER TO admin;
|
|
|
|
|
|
|
|
CREATE FUNCTION history_scan_lvm_vgs() RETURNS trigger
|
|
|
|
AS $$
|
|
|
|
DECLARE
|
|
|
|
history_scan_lvm_vgs RECORD;
|
|
|
|
BEGIN
|
|
|
|
SELECT INTO history_scan_lvm_vgs * FROM scan_lvm_vgs WHERE scan_lvm_vg_uuid=new.scan_lvm_vg_uuid;
|
|
|
|
INSERT INTO history.scan_lvm_vgs
|
|
|
|
(scan_lvm_vg_uuid,
|
|
|
|
scan_lvm_vg_host_uuid,
|
|
|
|
scan_lvm_vg_internal_uuid,
|
|
|
|
scan_lvm_vg_name,
|
|
|
|
scan_lvm_vg_attributes,
|
|
|
|
scan_lvm_vg_extent_size,
|
|
|
|
scan_lvm_vg_size,
|
|
|
|
scan_lvm_vg_free,
|
|
|
|
modified_date)
|
|
|
|
VALUES
|
|
|
|
(history_scan_lvm_vgs.scan_lvm_vg_uuid,
|
|
|
|
history_scan_lvm_vgs.scan_lvm_vg_host_uuid,
|
|
|
|
history_scan_lvm_vgs.scan_lvm_vg_internal_uuid,
|
|
|
|
history_scan_lvm_vgs.scan_lvm_vg_name,
|
|
|
|
history_scan_lvm_vgs.scan_lvm_vg_attributes,
|
|
|
|
history_scan_lvm_vgs.scan_lvm_vg_extent_size,
|
|
|
|
history_scan_lvm_vgs.scan_lvm_vg_size,
|
|
|
|
history_scan_lvm_vgs.scan_lvm_vg_free,
|
|
|
|
history_scan_lvm_vgs.modified_date);
|
|
|
|
RETURN NULL;
|
|
|
|
END;
|
|
|
|
$$
|
|
|
|
LANGUAGE plpgsql;
|
|
|
|
ALTER FUNCTION history_scan_lvm_vgs() OWNER TO admin;
|
|
|
|
|
|
|
|
CREATE TRIGGER trigger_scan_lvm_vgs
|
|
|
|
AFTER INSERT OR UPDATE ON scan_lvm_vgs
|
|
|
|
FOR EACH ROW EXECUTE PROCEDURE history_scan_lvm_vgs();
|
|
|
|
|
|
|
|
|
|
|
|
--lvs - lv_name,lv_uuid,lv_attr,vg_name,lv_size,lv_path,devices
|
|
|
|
CREATE TABLE scan_lvm_lvs (
|
|
|
|
scan_lvm_lv_uuid uuid primary key,
|
|
|
|
scan_lvm_lv_host_uuid uuid not null,
|
|
|
|
scan_lvm_lv_internal_uuid text not null, -- This comes from the LV itself. This is not a valid UUID format, so we use it more as a "serial number"
|
|
|
|
scan_lvm_lv_name text not null, -- This is the name of the VG.
|
|
|
|
scan_lvm_lv_attributes text not null, -- This is the short 9-character attribute of the LV
|
|
|
|
scan_lvm_lv_on_vg text not null, -- This is the name of the volume group this LV is on
|
|
|
|
scan_lvm_lv_size numeric not null, -- The size of the VG, in bytes.
|
|
|
|
scan_lvm_lv_path text not null, -- The device path to this LV
|
|
|
|
scan_lvm_lv_on_pvs text not null, -- This is a comma-separated list of PVs this LV spans over.
|
|
|
|
modified_date timestamp with time zone not null,
|
|
|
|
|
|
|
|
FOREIGN KEY(scan_lvm_lv_host_uuid) REFERENCES hosts(host_uuid)
|
|
|
|
);
|
|
|
|
ALTER TABLE scan_lvm_lvs OWNER TO admin;
|
|
|
|
|
|
|
|
CREATE TABLE history.scan_lvm_lvs (
|
|
|
|
history_id bigserial,
|
|
|
|
scan_lvm_lv_uuid uuid,
|
|
|
|
scan_lvm_lv_host_uuid uuid,
|
|
|
|
scan_lvm_lv_internal_uuid text,
|
|
|
|
scan_lvm_lv_name text,
|
|
|
|
scan_lvm_lv_attributes text,
|
|
|
|
scan_lvm_lv_on_vg text,
|
|
|
|
scan_lvm_lv_size numeric,
|
|
|
|
scan_lvm_lv_path text,
|
|
|
|
scan_lvm_lv_on_pvs text,
|
|
|
|
modified_date timestamp with time zone not null
|
|
|
|
);
|
|
|
|
ALTER TABLE history.scan_lvm_lvs OWNER TO admin;
|
|
|
|
|
|
|
|
CREATE FUNCTION history_scan_lvm_lvs() RETURNS trigger
|
|
|
|
AS $$
|
|
|
|
DECLARE
|
|
|
|
history_scan_lvm_lvs RECORD;
|
|
|
|
BEGIN
|
|
|
|
SELECT INTO history_scan_lvm_lvs * FROM scan_lvm_lvs WHERE scan_lvm_lv_uuid=new.scan_lvm_lv_uuid;
|
|
|
|
INSERT INTO history.scan_lvm_lvs
|
|
|
|
(scan_lvm_lv_uuid,
|
|
|
|
scan_lvm_lv_host_uuid,
|
|
|
|
scan_lvm_lv_internal_uuid,
|
|
|
|
scan_lvm_lv_name,
|
|
|
|
scan_lvm_lv_attributes,
|
|
|
|
scan_lvm_lv_on_vg,
|
|
|
|
scan_lvm_lv_size,
|
|
|
|
scan_lvm_lv_path,
|
|
|
|
scan_lvm_lv_on_pvs,
|
|
|
|
modified_date)
|
|
|
|
VALUES
|
|
|
|
(history_scan_lvm_lvs.scan_lvm_lv_uuid,
|
|
|
|
history_scan_lvm_lvs.scan_lvm_lv_host_uuid,
|
|
|
|
history_scan_lvm_lvs.scan_lvm_lv_internal_uuid,
|
|
|
|
history_scan_lvm_lvs.scan_lvm_lv_name,
|
|
|
|
history_scan_lvm_lvs.scan_lvm_lv_attributes,
|
|
|
|
history_scan_lvm_lvs.scan_lvm_lv_on_vg,
|
|
|
|
history_scan_lvm_lvs.scan_lvm_lv_size,
|
|
|
|
history_scan_lvm_lvs.scan_lvm_lv_path,
|
|
|
|
history_scan_lvm_lvs.scan_lvm_lv_on_pvs,
|
|
|
|
history_scan_lvm_lvs.modified_date);
|
|
|
|
RETURN NULL;
|
|
|
|
END;
|
|
|
|
$$
|
|
|
|
LANGUAGE plpgsql;
|
|
|
|
ALTER FUNCTION history_scan_lvm_lvs() OWNER TO admin;
|
|
|
|
|
|
|
|
CREATE TRIGGER trigger_scan_lvm_lvs
|
|
|
|
AFTER INSERT OR UPDATE ON scan_lvm_lvs
|
|
|
|
FOR EACH ROW EXECUTE PROCEDURE history_scan_lvm_lvs();
|