summaryrefslogtreecommitdiffstats
path: root/config-db/OpenSLX/MetaDB/DBI.pm
diff options
context:
space:
mode:
authorOliver Tappe2008-01-08 11:28:49 +0100
committerOliver Tappe2008-01-08 11:28:49 +0100
commita608f561c48bf247e313f383e6f806f10d70f253 (patch)
tree13e2a35b0b448d1063e56e14aea864cbe2a6ca31 /config-db/OpenSLX/MetaDB/DBI.pm
parent* fixed several smaller bugs found when testing slxexport (diff)
downloadcore-a608f561c48bf247e313f383e6f806f10d70f253.tar.gz
core-a608f561c48bf247e313f383e6f806f10d70f253.tar.xz
core-a608f561c48bf247e313f383e6f806f10d70f253.zip
* added new DB-table 'installed_plugin', moving schema version to 0.21
* added functionality to DB-layer for adding, removing and fetching plugins that have been installed into a vendor-OS. * added a set of tests related to installed plugins. git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1447 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'config-db/OpenSLX/MetaDB/DBI.pm')
-rw-r--r--config-db/OpenSLX/MetaDB/DBI.pm47
1 files changed, 47 insertions, 0 deletions
diff --git a/config-db/OpenSLX/MetaDB/DBI.pm b/config-db/OpenSLX/MetaDB/DBI.pm
index 94d92188..e709038b 100644
--- a/config-db/OpenSLX/MetaDB/DBI.pm
+++ b/config-db/OpenSLX/MetaDB/DBI.pm
@@ -201,6 +201,25 @@ sub fetchVendorOSByID
return $self->_doSelect($sql);
}
+sub fetchInstalledPlugins
+{
+ my $self = shift;
+ my $vendorOSID = shift;
+ my $pluginName = shift;
+
+ return if !$vendorOSID;
+ my $nameClause
+ = defined $pluginName
+ ? "AND plugin_name = '$pluginName'"
+ : '';
+ my $sql = unshiftHereDoc(<<" End-of-Here");
+ SELECT * FROM installed_plugin
+ WHERE vendor_os_id = '$vendorOSID'
+ $nameClause
+ End-of-Here
+ return $self->_doSelect($sql);
+}
+
sub fetchExportByFilter
{
my $self = shift;
@@ -682,6 +701,34 @@ sub changeVendorOS
return $self->_doUpdate('vendor_os', $vendorOSIDs, $valRows);
}
+sub addInstalledPlugin
+{
+ my $self = shift;
+ my $vendorOSID = shift;
+ my $pluginName = shift;
+
+ return if !$vendorOSID || !$pluginName;
+
+ return if $self->fetchInstalledPlugins($vendorOSID, $pluginName);
+ return $self->_doInsert('installed_plugin', [ {
+ vendor_os_id => $vendorOSID,
+ plugin_name => $pluginName,
+ } ] );
+}
+
+sub removeInstalledPlugin
+{
+ my $self = shift;
+ my $vendorOSID = shift;
+ my $pluginName = shift;
+
+ return if !$vendorOSID || !$pluginName;
+
+ my $plugin = $self->fetchInstalledPlugins($vendorOSID, $pluginName);
+ return if !$plugin;
+ return $self->_doDelete('installed_plugin', [ $plugin->{id} ] );
+}
+
sub addExport
{
my $self = shift;