diff options
author | Oliver Tappe | 2007-03-15 22:41:10 +0100 |
---|---|---|
committer | Oliver Tappe | 2007-03-15 22:41:10 +0100 |
commit | 03db5fcadee81bd5ce66665f18b611e106783c27 (patch) | |
tree | 1071ff956228157c52fbd5b5087ca8928b37d0f9 /config-db/OpenSLX/ConfigDB.pm | |
parent | * removed 'nbd' from supported export types as I have learned from Dirk yeste... (diff) | |
download | core-03db5fcadee81bd5ce66665f18b611e106783c27.tar.gz core-03db5fcadee81bd5ce66665f18b611e106783c27.tar.xz core-03db5fcadee81bd5ce66665f18b611e106783c27.zip |
* largish overhaul, changed ConfigDB to be object-oriented (could be improved, though!)
* slxos-setup, slxos-export, slxconfig and slxconfig-demuxer can now be run one after the
other in order to get a complete setup
* still problems when trying to boot that system here, need to investigate...
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@774 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'config-db/OpenSLX/ConfigDB.pm')
-rw-r--r-- | config-db/OpenSLX/ConfigDB.pm | 514 |
1 files changed, 237 insertions, 277 deletions
diff --git a/config-db/OpenSLX/ConfigDB.pm b/config-db/OpenSLX/ConfigDB.pm index fce953b6..b3606e9d 100644 --- a/config-db/OpenSLX/ConfigDB.pm +++ b/config-db/OpenSLX/ConfigDB.pm @@ -23,60 +23,20 @@ $VERSION = 1.01; # API-version . implementation-version ### - data aggregation methods (combining data in ways useful for apps) ### - support methods ################################################################################ + use Exporter; @ISA = qw(Exporter); -my @accessExports = qw( - connectConfigDB disconnectConfigDB - fetchVendorOSesByFilter fetchVendorOSesByID fetchVendorOSIDsOfSystem - fetchSystemsByFilter fetchSystemsByID fetchSystemIDsOfClient - fetchSystemIDsOfGroup - fetchSystemsVariantByFilter fetchSystemVariantsByID - fetchSystemVariantIDsOfSystem - fetchClientsByFilter fetchClientsByID fetchClientIDsOfSystem - fetchClientIDsOfGroup - fetchGroupsByFilter fetchGroupsByID fetchGroupIDsOfClient - fetchGroupIDsOfSystem - fetchSettings -); - -my @manipulationExports = qw( - addVendorOS removeVendorOS changeVendorOS - addSystem removeSystem changeSystem - setClientIDsOfSystem addClientIDsToSystem removeClientIDsFromSystem - setGroupIDsOfSystem addGroupIDsToSystem removeGroupIDsFromSystem - addSystemVariant removeSystemVariant changeSystemVariant - removeSystemVariantIDsFromSystem - addClient removeClient changeClient - setSystemIDsOfClient addSystemIDsToClient removeSystemIDsFromClient - setGroupIDsOfClient addGroupIDsToClient removeGroupIDsFromClient - addGroup removeGroup changeGroup - setClientIDsOfGroup addClientIDsToGroup removeClientIDsFromGroup - setSystemIDsOfGroup addSystemIDsToGroup removeSystemIDsFromGroup - changeSettings - emptyDatabase -); - -my @aggregationExports = qw( - mergeDefaultAttributesIntoSystem - mergeDefaultAndGroupAttributesIntoClient - aggregatedSystemIDsOfClient aggregatedClientIDsOfSystem - aggregatedSystemFileInfosOfSystem -); - my @supportExports = qw( - isAttribute mergeAttributes - externalIDForSystem externalIDForClient - externalAttrName generatePlaceholderFor + isAttribute mergeAttributes + externalIDForSystem externalIDForClient + externalAttrName generatePlaceholderFor ); -@EXPORT = @accessExports; -@EXPORT_OK = (@manipulationExports, @aggregationExports, @supportExports); +@EXPORT = (); +@EXPORT_OK = (@supportExports); %EXPORT_TAGS = ( - 'access' => [ @accessExports ], - 'manipulation' => [ @manipulationExports ], - 'aggregation' => [ @aggregationExports ], - 'support' => [ @supportExports ], + 'support' => [ @supportExports ], ); ################################################################################ @@ -167,8 +127,16 @@ sub _uniqueByKey ################################################################################ ### data access interface ################################################################################ -sub connectConfigDB +sub new { + my $class = shift; + my $self = {}; + return bless $self, $class; +} + +sub connect +{ + my $self = shift; my $dbParams = shift; # hash-ref with any additional info that might be required by # specific metadb-module (not used yet) @@ -189,204 +157,198 @@ sub connectConfigDB confess _tr('Could not load module <%s> (Version <%s> required, but <%s> found)', $dbModule, $VERSION, $modVersion); } - $dbModule->import; - my $metaDB = $dbModule->new(); - $metaDB->connectConfigDB($dbParams); - my $confDB = { - 'db-type' => $dbType, - 'meta-db' => $metaDB, - }; + $metaDB->connect($dbParams); + $self->{'db-type'} = $dbType; + $self->{'meta-db'} = $metaDB; foreach my $tk (keys %{$DbSchema->{tables}}) { $metaDB->schemaDeclareTable($tk, $DbSchema->{tables}->{$tk}); } _checkAndUpgradeDBSchemaIfNecessary($metaDB); - - return $confDB; } -sub disconnectConfigDB +sub disconnect { - my $confDB = shift; + my $self = shift; - $confDB->{'meta-db'}->disconnectConfigDB(); + $self->{'meta-db'}->disconnect(); } -sub fetchVendorOSesByFilter +sub fetchVendorOSByFilter { - my $confDB = shift; + my $self = shift; my $filter = shift; my $resultCols = shift; - my @vendorOSes - = $confDB->{'meta-db'}->fetchVendorOSesByFilter($filter, $resultCols); - return wantarray() ? @vendorOSes : shift @vendorOSes; + my @vendorOS + = $self->{'meta-db'}->fetchVendorOSByFilter($filter, $resultCols); + return wantarray() ? @vendorOS : shift @vendorOS; } -sub fetchVendorOSesByID +sub fetchVendorOSByID { - my $confDB = shift; + my $self = shift; my $ids = _aref(shift); my $resultCols = shift; - my @vendorOSes - = $confDB->{'meta-db'}->fetchVendorOSesByID($ids, $resultCols); - return wantarray() ? @vendorOSes : shift @vendorOSes; + my @vendorOS + = $self->{'meta-db'}->fetchVendorOSByID($ids, $resultCols); + return wantarray() ? @vendorOS : shift @vendorOS; } -sub fetchSystemsByFilter +sub fetchExportByFilter { - my $confDB = shift; + my $self = shift; my $filter = shift; my $resultCols = shift; - my @systems - = $confDB->{'meta-db'}->fetchSystemsByFilter($filter, $resultCols); - return wantarray() ? @systems : shift @systems; + my @exports + = $self->{'meta-db'}->fetchExportByFilter($filter, $resultCols); + return wantarray() ? @exports : shift @exports; } -sub fetchSystemsByID +sub fetchExportByID { - my $confDB = shift; + my $self = shift; my $ids = _aref(shift); my $resultCols = shift; - my @systems = $confDB->{'meta-db'}->fetchSystemsByID($ids, $resultCols); - return wantarray() ? @systems : shift @systems; + my @exports + = $self->{'meta-db'}->fetchExportByID($ids, $resultCols); + return wantarray() ? @exports : shift @exports; } -sub fetchSystemIDsOfVendorOS +sub fetchExportIDsOfVendorOS { - my $confDB = shift; + my $self = shift; my $vendorOSID = shift; - return $confDB->{'meta-db'}->fetchSystemIDsOfVendorOS($vendorOSID); + return $self->{'meta-db'}->fetchExportIDsOfVendorOS($vendorOSID); } -sub fetchSystemIDsOfClient +sub fetchSystemByFilter { - my $confDB = shift; - my $clientID = shift; + my $self = shift; + my $filter = shift; + my $resultCols = shift; - return $confDB->{'meta-db'}->fetchSystemIDsOfClient($clientID); + my @systems + = $self->{'meta-db'}->fetchSystemByFilter($filter, $resultCols); + return wantarray() ? @systems : shift @systems; } -sub fetchSystemIDsOfGroup +sub fetchSystemByID { - my $confDB = shift; - my $groupID = shift; + my $self = shift; + my $ids = _aref(shift); + my $resultCols = shift; - return $confDB->{'meta-db'}->fetchSystemIDsOfGroup($groupID); + my @systems = $self->{'meta-db'}->fetchSystemByID($ids, $resultCols); + return wantarray() ? @systems : shift @systems; } -sub fetchSystemVariantsByFilter +sub fetchSystemIDsOfExport { - my $confDB = shift; - my $filter = shift; - my $resultCols = shift; + my $self = shift; + my $exportID = shift; - my @systemVariants - = $confDB->{'meta-db'}->fetchSystemVariantsByFilter($filter, $resultCols); - return wantarray() ? @systemVariants : shift @systemVariants; + return $self->{'meta-db'}->fetchSystemIDsOfExport($exportID); } -sub fetchSystemVariantsByID +sub fetchSystemIDsOfClient { - my $confDB = shift; - my $ids = _aref(shift); - my $resultCols = shift; + my $self = shift; + my $clientID = shift; - my @systemVariants - = $confDB->{'meta-db'}->fetchSystemVariantsByID($ids, $resultCols); - return wantarray() ? @systemVariants : shift @systemVariants; + return $self->{'meta-db'}->fetchSystemIDsOfClient($clientID); } -sub fetchSystemVariantIDsOfSystem +sub fetchSystemIDsOfGroup { - my $confDB = shift; - my $systemID = shift; + my $self = shift; + my $groupID = shift; - return $confDB->{'meta-db'}->fetchSystemVariantIDsOfSystem($systemID); + return $self->{'meta-db'}->fetchSystemIDsOfGroup($groupID); } -sub fetchClientsByFilter +sub fetchClientByFilter { - my $confDB = shift; + my $self = shift; my $filter = shift; - my @clients = $confDB->{'meta-db'}->fetchClientsByFilter($filter); + my @clients = $self->{'meta-db'}->fetchClientByFilter($filter); return wantarray() ? @clients : shift @clients; } -sub fetchClientsByID +sub fetchClientByID { - my $confDB = shift; + my $self = shift; my $ids = _aref(shift); my $resultCols = shift; - my @clients = $confDB->{'meta-db'}->fetchClientsByID($ids, $resultCols); + my @clients = $self->{'meta-db'}->fetchClientByID($ids, $resultCols); return wantarray() ? @clients : shift @clients; } sub fetchClientIDsOfSystem { - my $confDB = shift; + my $self = shift; my $systemID = shift; - return $confDB->{'meta-db'}->fetchClientIDsOfSystem($systemID); + return $self->{'meta-db'}->fetchClientIDsOfSystem($systemID); } sub fetchClientIDsOfGroup { - my $confDB = shift; + my $self = shift; my $groupID = shift; - return $confDB->{'meta-db'}->fetchClientIDsOfGroup($groupID); + return $self->{'meta-db'}->fetchClientIDsOfGroup($groupID); } -sub fetchGroupsByFilter +sub fetchGroupByFilter { - my $confDB = shift; + my $self = shift; my $filter = shift; my $resultCols = shift; my @groups - = $confDB->{'meta-db'}->fetchGroupsByFilter($filter, $resultCols); + = $self->{'meta-db'}->fetchGroupByFilter($filter, $resultCols); return wantarray() ? @groups : shift @groups; } -sub fetchGroupsByID +sub fetchGroupByID { - my $confDB = shift; + my $self = shift; my $ids = _aref(shift); my $resultCols = shift; - my @groups = $confDB->{'meta-db'}->fetchGroupsByID($ids, $resultCols); + my @groups = $self->{'meta-db'}->fetchGroupByID($ids, $resultCols); return wantarray() ? @groups : shift @groups; } sub fetchGroupIDsOfSystem { - my $confDB = shift; + my $self = shift; my $systemID = shift; - return $confDB->{'meta-db'}->fetchGroupIDsOfSystem($systemID); + return $self->{'meta-db'}->fetchGroupIDsOfSystem($systemID); } sub fetchGroupIDsOfClient { - my $confDB = shift; + my $self = shift; my $clientID = shift; - return $confDB->{'meta-db'}->fetchGroupIDsOfClient($clientID); + return $self->{'meta-db'}->fetchGroupIDsOfClient($clientID); } sub fetchSettings { - my $confDB = shift; + my $self = shift; - my @rows = $confDB->{'meta-db'}->fetchSettings(); + my @rows = $self->{'meta-db'}->fetchSettings(); return shift @rows; } @@ -395,84 +357,109 @@ sub fetchSettings ################################################################################ sub addVendorOS { - my $confDB = shift; + my $self = shift; my $valRows = _aref(shift); - return $confDB->{'meta-db'}->addVendorOS($valRows); + return $self->{'meta-db'}->addVendorOS($valRows); } sub removeVendorOS { - my $confDB = shift; + my $self = shift; my $vendorOSIDs = _aref(shift); - return $confDB->{'meta-db'}->removeVendorOS($vendorOSIDs); + return $self->{'meta-db'}->removeVendorOS($vendorOSIDs); } sub changeVendorOS { - my $confDB = shift; + my $self = shift; my $vendorOSIDs = _aref(shift); my $valRows = _aref(shift); - return $confDB->{'meta-db'}->changeVendorOS($vendorOSIDs, $valRows); + return $self->{'meta-db'}->changeVendorOS($vendorOSIDs, $valRows); +} + +sub addExport +{ + my $self = shift; + my $valRows = _aref(shift); + + return $self->{'meta-db'}->addExport($valRows); +} + +sub removeExport +{ + my $self = shift; + my $exportIDs = _aref(shift); + + return $self->{'meta-db'}->removeExport($exportIDs); +} + +sub changeExport +{ + my $self = shift; + my $exportIDs = _aref(shift); + my $valRows = _aref(shift); + + return $self->{'meta-db'}->changeExport($exportIDs, $valRows); } sub addSystem { - my $confDB = shift; + my $self = shift; my $valRows = _aref(shift); - return $confDB->{'meta-db'}->addSystem($valRows); + return $self->{'meta-db'}->addSystem($valRows); } sub removeSystem { - my $confDB = shift; + my $self = shift; my $systemIDs = _aref(shift); foreach my $system (@$systemIDs) { - setGroupIDsOfSystem($confDB, $system); - setClientIDsOfSystem($confDB, $system); + $self->setGroupIDsOfSystem($system); + $self->setClientIDsOfSystem($system); } - return $confDB->{'meta-db'}->removeSystem($systemIDs); + return $self->{'meta-db'}->removeSystem($systemIDs); } sub changeSystem { - my $confDB = shift; + my $self = shift; my $systemIDs = _aref(shift); my $valRows = _aref(shift); - return $confDB->{'meta-db'}->changeSystem($systemIDs, $valRows); + return $self->{'meta-db'}->changeSystem($systemIDs, $valRows); } sub setClientIDsOfSystem { - my $confDB = shift; + my $self = shift; my $systemID = shift; my $clientIDs = _aref(shift); my @uniqueClientIDs = _unique(@$clientIDs); - return $confDB->{'meta-db'}->setClientIDsOfSystem($systemID, + return $self->{'meta-db'}->setClientIDsOfSystem($systemID, \@uniqueClientIDs); } sub addClientIDsToSystem { - my $confDB = shift; + my $self = shift; my $systemID = shift; my $newClientIDs = _aref(shift); - my @clientIDs = $confDB->{'meta-db'}->fetchClientIDsOfSystem($systemID); + my @clientIDs = $self->{'meta-db'}->fetchClientIDsOfSystem($systemID); push @clientIDs, @$newClientIDs; - return setClientIDsOfSystem($confDB, $systemID, \@clientIDs); + return $self->setClientIDsOfSystem($systemID, \@clientIDs); } sub removeClientIDsFromSystem { - my $confDB = shift; + my $self = shift; my $systemID = shift; my $removedClientIDs = _aref(shift); @@ -480,35 +467,35 @@ sub removeClientIDsFromSystem @toBeRemoved{@$removedClientIDs} = (); my @clientIDs = grep { !exists $toBeRemoved{$_} } - $confDB->{'meta-db'}->fetchClientIDsOfSystem($systemID); - return setClientIDsOfSystem($confDB, $systemID, \@clientIDs); + $self->{'meta-db'}->fetchClientIDsOfSystem($systemID); + return $self->setClientIDsOfSystem($systemID, \@clientIDs); } sub setGroupIDsOfSystem { - my $confDB = shift; + my $self = shift; my $systemID = shift; my $groupIDs = _aref(shift); my @uniqueGroupIDs = _unique(@$groupIDs); - return $confDB->{'meta-db'}->setGroupIDsOfSystem($systemID, + return $self->{'meta-db'}->setGroupIDsOfSystem($systemID, \@uniqueGroupIDs); } sub addGroupIDsToSystem { - my $confDB = shift; + my $self = shift; my $systemID = shift; my $newGroupIDs = _aref(shift); - my @groupIDs = $confDB->{'meta-db'}->fetchGroupIDsOfSystem($systemID); + my @groupIDs = $self->{'meta-db'}->fetchGroupIDsOfSystem($systemID); push @groupIDs, @$newGroupIDs; - return setGroupIDsOfSystem($confDB, $systemID, \@groupIDs); + return $self->setGroupIDsOfSystem($systemID, \@groupIDs); } sub removeGroupIDsFromSystem { - my $confDB = shift; + my $self = shift; my $systemID = shift; my $toBeRemovedGroupIDs = _aref(shift); @@ -516,90 +503,65 @@ sub removeGroupIDsFromSystem @toBeRemoved{@$toBeRemovedGroupIDs} = (); my @groupIDs = grep { !exists $toBeRemoved{$_} } - $confDB->{'meta-db'}->fetchGroupIDsOfSystem($systemID); - return setGroupIDsOfSystem($confDB, $systemID, \@groupIDs); -} - -sub addSystemVariant -{ - my $confDB = shift; - my $valRows = _aref(shift); - - return $confDB->{'meta-db'}->addSystemVariant($valRows); -} - -sub removeSystemVariant -{ - my $confDB = shift; - my $systemVariantIDs = _aref(shift); - - return $confDB->{'meta-db'}->removeSystemVariant($systemVariantIDs); -} - -sub changeSystemVariant -{ - my $confDB = shift; - my $systemVariantIDs = _aref(shift); - my $valRows = _aref(shift); - - return $confDB->{'meta-db'}->changeSystemVariant($systemVariantIDs, $valRows); + $self->{'meta-db'}->fetchGroupIDsOfSystem($systemID); + return $self->setGroupIDsOfSystem($systemID, \@groupIDs); } sub addClient { - my $confDB = shift; + my $self = shift; my $valRows = _aref(shift); - return $confDB->{'meta-db'}->addClient($valRows); + return $self->{'meta-db'}->addClient($valRows); } sub removeClient { - my $confDB = shift; + my $self = shift; my $clientIDs = _aref(shift); foreach my $client (@$clientIDs) { - setGroupIDsOfClient($confDB, $client); - setSystemIDsOfClient($confDB, $client); + $self->setGroupIDsOfClient($client); + $self->setSystemIDsOfClient($client); } - return $confDB->{'meta-db'}->removeClient($clientIDs); + return $self->{'meta-db'}->removeClient($clientIDs); } sub changeClient { - my $confDB = shift; + my $self = shift; my $clientIDs = _aref(shift); my $valRows = _aref(shift); - return $confDB->{'meta-db'}->changeClient($clientIDs, $valRows); + return $self->{'meta-db'}->changeClient($clientIDs, $valRows); } sub setSystemIDsOfClient { - my $confDB = shift; + my $self = shift; my $clientID = shift; my $systemIDs = _aref(shift); my @uniqueSystemIDs = _unique(@$systemIDs); - return $confDB->{'meta-db'}->setSystemIDsOfClient($clientID, + return $self->{'meta-db'}->setSystemIDsOfClient($clientID, \@uniqueSystemIDs); } sub addSystemIDsToClient { - my $confDB = shift; + my $self = shift; my $clientID = shift; my $newSystemIDs = _aref(shift); - my @systemIDs = $confDB->{'meta-db'}->fetchSystemIDsOfClient($clientID); + my @systemIDs = $self->{'meta-db'}->fetchSystemIDsOfClient($clientID); push @systemIDs, @$newSystemIDs; - return setSystemIDsOfClient($confDB, $clientID, \@systemIDs); + return $self->setSystemIDsOfClient($clientID, \@systemIDs); } sub removeSystemIDsFromClient { - my $confDB = shift; + my $self = shift; my $clientID = shift; my $removedSystemIDs = _aref(shift); @@ -607,35 +569,35 @@ sub removeSystemIDsFromClient @toBeRemoved{@$removedSystemIDs} = (); my @systemIDs = grep { !exists $toBeRemoved{$_} } - $confDB->{'meta-db'}->fetchSystemIDsOfClient($clientID); - return setSystemIDsOfClient($confDB, $clientID, \@systemIDs); + $self->{'meta-db'}->fetchSystemIDsOfClient($clientID); + return $self->setSystemIDsOfClient($clientID, \@systemIDs); } sub setGroupIDsOfClient { - my $confDB = shift; + my $self = shift; my $clientID = shift; my $groupIDs = _aref(shift); my @uniqueGroupIDs = _unique(@$groupIDs); - return $confDB->{'meta-db'}->setGroupIDsOfClient($clientID, + return $self->{'meta-db'}->setGroupIDsOfClient($clientID, \@uniqueGroupIDs); } sub addGroupIDsToClient { - my $confDB = shift; + my $self = shift; my $clientID = shift; my $newGroupIDs = _aref(shift); - my @groupIDs = $confDB->{'meta-db'}->fetchGroupIDsOfClient($clientID); + my @groupIDs = $self->{'meta-db'}->fetchGroupIDsOfClient($clientID); push @groupIDs, @$newGroupIDs; - return setGroupIDsOfClient($confDB, $clientID, \@groupIDs); + return $self->setGroupIDsOfClient($clientID, \@groupIDs); } sub removeGroupIDsFromClient { - my $confDB = shift; + my $self = shift; my $clientID = shift; my $toBeRemovedGroupIDs = _aref(shift); @@ -643,65 +605,65 @@ sub removeGroupIDsFromClient @toBeRemoved{@$toBeRemovedGroupIDs} = (); my @groupIDs = grep { !exists $toBeRemoved{$_} } - $confDB->{'meta-db'}->fetchGroupIDsOfClient($clientID); - return setGroupIDsOfClient($confDB, $clientID, \@groupIDs); + $self->{'meta-db'}->fetchGroupIDsOfClient($clientID); + return $self->setGroupIDsOfClient($clientID, \@groupIDs); } sub addGroup { - my $confDB = shift; + my $self = shift; my $valRows = _aref(shift); - return $confDB->{'meta-db'}->addGroup($valRows); + return $self->{'meta-db'}->addGroup($valRows); } sub removeGroup { - my $confDB = shift; + my $self = shift; my $groupIDs = _aref(shift); foreach my $group (@$groupIDs) { - setSystemIDsOfGroup($confDB, $group, []); - setClientIDsOfGroup($confDB, $group, []); + $self->setSystemIDsOfGroup($group, []); + $self->setClientIDsOfGroup($group, []); } - return $confDB->{'meta-db'}->removeGroup($groupIDs); + return $self->{'meta-db'}->removeGroup($groupIDs); } sub changeGroup { - my $confDB = shift; + my $self = shift; my $groupIDs = _aref(shift); my $valRows = _aref(shift); - return $confDB->{'meta-db'}->changeGroup($groupIDs, $valRows); + return $self->{'meta-db'}->changeGroup($groupIDs, $valRows); } sub setClientIDsOfGroup { - my $confDB = shift; + my $self = shift; my $groupID = shift; my $clientIDs = _aref(shift); my @uniqueClientIDs = _unique(@$clientIDs); - return $confDB->{'meta-db'}->setClientIDsOfGroup($groupID, + return $self->{'meta-db'}->setClientIDsOfGroup($groupID, \@uniqueClientIDs); } sub addClientIDsToGroup { - my $confDB = shift; + my $self = shift; my $groupID = shift; my $newClientIDs = _aref(shift); - my @clientIDs = $confDB->{'meta-db'}->fetchClientIDsOfGroup($groupID); + my @clientIDs = $self->{'meta-db'}->fetchClientIDsOfGroup($groupID); push @clientIDs, @$newClientIDs; - return setClientIDsOfGroup($confDB, $groupID, \@clientIDs); + return $self->setClientIDsOfGroup($groupID, \@clientIDs); } sub removeClientIDsFromGroup { - my $confDB = shift; + my $self = shift; my $groupID = shift; my $removedClientIDs = _aref(shift); @@ -709,35 +671,35 @@ sub removeClientIDsFromGroup @toBeRemoved{@$removedClientIDs} = (); my @clientIDs = grep { !exists $toBeRemoved{$_} } - $confDB->{'meta-db'}->fetchClientIDsOfGroup($groupID); - return setClientIDsOfGroup($confDB, $groupID, \@clientIDs); + $self->{'meta-db'}->fetchClientIDsOfGroup($groupID); + return $self->setClientIDsOfGroup($groupID, \@clientIDs); } sub setSystemIDsOfGroup { - my $confDB = shift; + my $self = shift; my $groupID = shift; my $systemIDs = _aref(shift); my @uniqueSystemIDs = _unique(@$systemIDs); - return $confDB->{'meta-db'}->setSystemIDsOfGroup($groupID, + return $self->{'meta-db'}->setSystemIDsOfGroup($groupID, \@uniqueSystemIDs); } sub addSystemIDsToGroup { - my $confDB = shift; + my $self = shift; my $groupID = shift; my $newSystemIDs = _aref(shift); - my @systemIDs = $confDB->{'meta-db'}->fetchSystemIDsOfGroup($groupID); + my @systemIDs = $self->{'meta-db'}->fetchSystemIDsOfGroup($groupID); push @systemIDs, @$newSystemIDs; - return setSystemIDsOfGroup($confDB, $groupID, \@systemIDs); + return $self->setSystemIDsOfGroup($groupID, \@systemIDs); } sub removeSystemIDsFromGroup { - my $confDB = shift; + my $self = shift; my $groupID = shift; my $removedSystemIDs = _aref(shift); @@ -745,50 +707,50 @@ sub removeSystemIDsFromGroup @toBeRemoved{@$removedSystemIDs} = (); my @systemIDs = grep { !exists $toBeRemoved{$_} } - $confDB->{'meta-db'}->fetchSystemIDsOfGroup($groupID); - return setSystemIDsOfGroup($confDB, $groupID, \@systemIDs); + $self->{'meta-db'}->fetchSystemIDsOfGroup($groupID); + return $self->setSystemIDsOfGroup($groupID, \@systemIDs); } sub emptyDatabase { # clears all user-data from the database - my $confDB = shift; + my $self = shift; my @groupIDs = map { $_->{id} } - fetchGroupsByFilter($confDB); - removeGroup($confDB, \@groupIDs); + $self->fetchGroupByFilter(); + $self->removeGroup(\@groupIDs); my @clientIDs = map { $_->{id} } grep { $_->{id} > 0 } - fetchClientsByFilter($confDB); - removeClient($confDB, \@clientIDs); + $self->fetchClientByFilter(); + $self->removeClient(\@clientIDs); - my @sysVarIDs + my @sysIDs = map { $_->{id} } grep { $_->{id} > 0 } - fetchSystemVariantsByFilter($confDB); - removeSystemVariant($confDB, \@sysVarIDs); + $self->fetchSystemByFilter(); + $self->removeSystem(\@sysIDs); - my @sysIDs + my @exportIDs = map { $_->{id} } grep { $_->{id} > 0 } - fetchSystemsByFilter($confDB); - removeSystem($confDB, \@sysIDs); + $self->fetchExportByFilter(); + $self->removeExport(\@exportIDs); my @vendorOSIDs = map { $_->{id} } grep { $_->{id} > 0 } - fetchVendorOSesByFilter($confDB); - removeVendorOS($confDB, \@vendorOSIDs); + $self->fetchVendorOSByFilter(); + $self->removeVendorOS(\@vendorOSIDs); } sub changeSettings { - my $confDB = shift; + my $self = shift; my $settings = shift; - return $confDB->{'meta-db'}->changeSettings($settings); + return $self->{'meta-db'}->changeSettings($settings); } ################################################################################ @@ -796,11 +758,11 @@ sub changeSettings ################################################################################ sub mergeDefaultAttributesIntoSystem { # merge default system configuration into given system - my $confDB = shift; + my $self = shift; my $system = shift; my $defaultSystem = shift; - $defaultSystem = fetchSystemsByID($confDB, 0) + $defaultSystem = $self->fetchSystemByID(0) unless defined $defaultSystem; mergeAttributes($system, $defaultSystem); @@ -808,14 +770,14 @@ sub mergeDefaultAttributesIntoSystem sub mergeDefaultAndGroupAttributesIntoClient { # merge default and group configurations into given client - my $confDB = shift; + my $self = shift; my $client = shift; # step over all groups this client belongs to # (ordered by priority from highest to lowest): - my @groupIDs = fetchGroupIDsOfClient($confDB, $client->{id}); + my @groupIDs = $self->fetchGroupIDsOfClient($client->{id}); my @groups = sort { $b->{priority} <=> $a->{priority} } - fetchGroupsByID($confDB, \@groupIDs); + $self->fetchGroupByID(\@groupIDs); foreach my $group (@groups) { # merge configuration from this group into the current client: vlog 3, _tr('merging from group %d:%s...', $group->{id}, $group->{name}); @@ -824,29 +786,29 @@ sub mergeDefaultAndGroupAttributesIntoClient # merge configuration from default client: vlog 3, _tr('merging from default client...'); - my $defaultClient = fetchClientsByID($confDB, 0); + my $defaultClient = $self->fetchClientByID(0); mergeAttributes($client, $defaultClient); } sub aggregatedSystemIDsOfClient { # return aggregated list of system-IDs this client should offer # (as indicated by itself, the default client and the client's groups) - my $confDB = shift; + my $self = shift; my $client = shift; # add all systems directly linked to client: - my @systemIDs = fetchSystemIDsOfClient($confDB, $client->{id}); + my @systemIDs = $self->fetchSystemIDsOfClient($client->{id}); # step over all groups this client belongs to: - my @groupIDs = fetchGroupIDsOfClient($confDB, $client->{id}); - my @groups = fetchGroupsByID($confDB, \@groupIDs); + my @groupIDs = $self->fetchGroupIDsOfClient($client->{id}); + my @groups = $self->fetchGroupByID(\@groupIDs); foreach my $group (@groups) { # add all systems that the client inherits from the current group: - push @systemIDs, fetchSystemIDsOfGroup($confDB, $group->{id}); + push @systemIDs, $self->fetchSystemIDsOfGroup($group->{id}); } # add all systems inherited from default client - push @systemIDs, fetchSystemIDsOfClient($confDB, 0); + push @systemIDs, $self->fetchSystemIDsOfClient(0); return _unique(@systemIDs); } @@ -854,22 +816,22 @@ sub aggregatedSystemIDsOfClient sub aggregatedClientIDsOfSystem { # return aggregated list of client-IDs this system is linked to # (as indicated by itself, the default system and the system's groups) - my $confDB = shift; + my $self = shift; my $system = shift; # add all clients directly linked to system: - my @clientIDs = fetchClientIDsOfSystem($confDB, $system->{id}); + my @clientIDs = $self->fetchClientIDsOfSystem($system->{id}); # step over all groups this system belongs to: - my @groupIDs = fetchGroupIDsOfSystem($confDB, $system->{id}); - my @groups = fetchGroupsByID($confDB, \@groupIDs); + my @groupIDs = $self->fetchGroupIDsOfSystem($system->{id}); + my @groups = $self->fetchGroupByID(\@groupIDs); foreach my $group (@groups) { # add all clients that the system inherits from the current group: - push @clientIDs, fetchClientIDsOfGroup($confDB, $group->{id}); + push @clientIDs, $self->fetchClientIDsOfGroup($group->{id}); } # add all clients inherited from default system - push @clientIDs, fetchClientIDsOfSystem($confDB, 0); + push @clientIDs, $self->fetchClientIDsOfSystem(0); return _unique(@clientIDs); } @@ -877,14 +839,15 @@ sub aggregatedClientIDsOfSystem sub aggregatedSystemFileInfosOfSystem { # return aggregated list of hash-refs that contain information about # the kernel- and initialramfs-files this system is using - # (as indicated by itself and the system's variants) - my $confDB = shift; + my $self = shift; my $system = shift; - my $vendorOS = fetchVendorOSesByID($confDB, $system->{vendor_os_id}); - return () if !$vendorOS || !length($vendorOS->{path}); + my $export = $self->fetchExportByID($system->{export_id}); + return () if !$export || !length($export->{name}); + my $vendorOS = $self->fetchVendorOSByID($export->{vendor_os_id}); + return () if !$vendorOS || !length($vendorOS->{name}); my $kernelPath - = "$openslxConfig{'private-path'}/stage1/$vendorOS->{path}"; + = "$openslxConfig{'private-path'}/stage1/$vendorOS->{name}/boot"; my $exportURI = $system->{'export_uri'}; if ($exportURI !~ m[\w]) { @@ -892,14 +855,11 @@ sub aggregatedSystemFileInfosOfSystem my $type = $system->{'export_type'}; my $serverIpToken = generatePlaceholderFor('serverip'); $exportURI - = "$type://$serverIpToken$openslxConfig{'export-path'}/$type/$vendorOS->{path}"; + = "$type://$serverIpToken$openslxConfig{'export-path'}/$type/$vendorOS->{name}"; } - my @variantIDs = fetchSystemVariantIDsOfSystem($confDB, $system->{id}); - my @variants = fetchSystemVariantsByID($confDB, \@variantIDs); - my @infos; - foreach my $sys ($system, @variants) { + foreach my $sys ($system) { next if !length($sys->{kernel}); my %info = %$sys; $info{'kernel-file'} = "$kernelPath/$sys->{kernel}"; @@ -921,7 +881,7 @@ sub isAttribute { # returns whether or not the given key is an exportable attribute my $key = shift; - return $key =~ m[^attr]; + return $key =~ m[^attr_]; } sub mergeAttributes |