From 38aad76057792b3571df1bdb59ad6a852bd2b0a2 Mon Sep 17 00:00:00 2001
From: Michal 'vorner' Vaner <michal.vaner@nic.cz>
Date: Fri, 12 Feb 2016 13:50:17 +0100
Subject: [PATCH] Plugin history: Tables

Create the table for the plugin history storage. Update the clean up
script, so the history is cleaned up accordingly.
---
 src/master/dbscripts/initdb | 19 +++++++++++++++++++
 src/master/dbscripts/purge  |  2 +-
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/master/dbscripts/initdb b/src/master/dbscripts/initdb
index d94de105..b5395dc3 100755
--- a/src/master/dbscripts/initdb
+++ b/src/master/dbscripts/initdb
@@ -17,6 +17,7 @@ DROP TABLE IF EXISTS fake_logs;
 DROP TABLE IF EXISTS fake_server_names;
 DROP TABLE IF EXISTS fake_blacklist_limits;
 DROP TABLE IF EXISTS fake_blacklist_scores;
+DROP TABLE IF EXISTS plugin_history;
 DROP TABLE IF EXISTS known_plugins;
 DROP TABLE IF EXISTS active_plugins;
 DROP TABLE IF EXISTS ssh_commands;
@@ -105,6 +106,18 @@ CREATE TABLE active_plugins (
 	UNIQUE(client, name),
 	FOREIGN KEY (client) REFERENCES clients(id)
 );
+CREATE TABLE plugin_history (
+	id BIGINT NOT NULL PRIMARY KEY,
+	client INT NOT NULL,
+	name TEXT NOT NULL,
+	timestamp TIMESTAMP NOT NULL,
+	version INT,
+	hash TEXT,
+	active BOOL NOT NULL,
+	FOREIGN KEY (client) REFERENCES clients(id)
+);
+CREATE SEQUENCE plugin_history_id OWNED BY plugin_history.id;
+ALTER TABLE plugin_history ALTER COLUMN id SET DEFAULT NEXTVAL('plugin_history_id');
 CREATE OR REPLACE VIEW plugin_activity AS SELECT
 	clients.name,
 	MIN(globals.last) AS last,
@@ -678,6 +691,8 @@ GRANT SELECT ON known_plugins TO $DBUPDATER;
 GRANT DELETE ON active_plugins TO $DBUPDATER;
 GRANT INSERT ON active_plugins TO $DBUPDATER;
 GRANT SELECT ON active_plugins TO $DBUPDATER;
+GRANT INSERT ON plugin_history TO $DBUPDATER;
+GRANT ALL ON plugin_history_id TO $DBUPDATER;
 
 GRANT SELECT (name, passwd, mechanism, builtin_passwd, slot_id) ON clients TO $DBAUTHENTICATOR;
 
@@ -719,6 +734,10 @@ GRANT DELETE ON refused TO $DBCLEANER;
 GRANT DELETE ON ssh_sessions TO $DBCLEANER;
 GRANT DELETE ON ssh_commands TO $DBCLEANER;
 GRANT SELECT ON fake_logs TO $DBCLEANER;
+GRANT SELECT ON plugin_history TO $DBCLEANER;
+GRANT INSERT ON plugin_history TO $DBCLEANER;
+GRANT DELETE ON plugin_history TO $DBCLEANER;
+GRANT ALL ON plugin_history_id TO $DBUPDATER;
 
 GRANT SELECT ON groups TO $DBARCHIVIST;
 GRANT SELECT ON count_types TO $DBARCHIVIST;
diff --git a/src/master/dbscripts/purge b/src/master/dbscripts/purge
index 9c19b851..4c81332e 100755
--- a/src/master/dbscripts/purge
+++ b/src/master/dbscripts/purge
@@ -4,7 +4,7 @@ set -ex
 
 . ./dbconfig
 
-TABLES='activities anomalies count_snapshots bandwidth bandwidth_stats bandwidth_stats_dbg refused fake_logs'
+TABLES='activities anomalies count_snapshots bandwidth bandwidth_stats bandwidth_stats_dbg refused fake_logs plugin_history'
 BATCH_TABLES='pings certs nats spoof'
 DATE=$(date -d "$CLEAN_DAYS days ago" "+'%Y-%m-%d'")
 
-- 
GitLab