summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOliver Tappe2006-10-28 16:23:49 +0200
committerOliver Tappe2006-10-28 16:23:49 +0200
commit1417b305c990fb428f4089052826a5ba1329c7cf (patch)
tree9193fc1af8da1f66c41b4b555e113d702fafd8be
parentDon't overwrite an existing settings.local file. (diff)
downloadcore-1417b305c990fb428f4089052826a5ba1329c7cf.tar.gz
core-1417b305c990fb428f4089052826a5ba1329c7cf.tar.xz
core-1417b305c990fb428f4089052826a5ba1329c7cf.zip
* renamed several scripts to our new convention: no .pl for
user-executable stuff... git-svn-id: http://svn.openslx.org/svn/openslx/trunk@475 95ad53e4-c205-0410-b2fa-d234c58c8868
-rw-r--r--config-db/OpenSLX/MetaDB/Base.pm727
-rwxr-xr-xconfig-db/devel-tools/test-config-db.pl (renamed from config-db/test-config-db.pl)0
-rwxr-xr-xconfig-db/devel-tools/test-config-demuxer.pl (renamed from config-db/test-config-demuxer.pl)20
-rwxr-xr-xconfig-db/slxconfig-demuxer (renamed from config-db/slxconfig-demuxer.pl)0
-rwxr-xr-xconfig-db/slxldd (renamed from config-db/slxldd.pl)0
-rwxr-xr-xconfig-db/slxsettings (renamed from config-db/slxsetup.pl)0
-rwxr-xr-xconfig-db/slxsetup (renamed from config-db/slxsetup-test-data-simple.pl)0
7 files changed, 540 insertions, 207 deletions
diff --git a/config-db/OpenSLX/MetaDB/Base.pm b/config-db/OpenSLX/MetaDB/Base.pm
index 6a0371b0..6766e795 100644
--- a/config-db/OpenSLX/MetaDB/Base.pm
+++ b/config-db/OpenSLX/MetaDB/Base.pm
@@ -4,171 +4,23 @@
#
# Oliver Tappe <ot@openslx.com>
#
-################################################################################
-# OpenSLX::MetaDB:Base - the base class for all MetaDB drivers
-#
-# Copyright 2006 by Oliver Tappe - all rights reserved.
-#
-# You may distribute this module under the terms of the GNU GPL v2.
-################################################################################
-
package OpenSLX::MetaDB::Base;
+use strict;
+
use vars qw($VERSION);
$VERSION = 1.01; # API-version . implementation-version
-################################################################################
-=pod
-
-=head1 NAME
-
-OpenSLX::MetaDB::Base - the base class for all MetaDB drivers
-
-=head1 SYNOPSIS
-
- package OpenSLX::MetaDB::coolnewDB;
-
- use vars qw(@ISA $VERSION);
- @ISA = ('OpenSLX::MetaDB::Base');
- $VERSION = 1.01;
-
- my $superVersion = $OpenSLX::MetaDB::Base::VERSION;
- if ($superVersion < $VERSION) {
- confess _tr('Unable to load module <%s> (Version <%s> required)',
- 'OpenSLX::MetaDB::Base', $VERSION);
- }
-
- use coolnewDB;
-
- sub new
- {
- my $class = shift;
- my $self = {};
- return bless $self, $class;
- }
-
- sub connectConfigDB
- {
- my $self = shift;
-
- my $dbName = $openslxConfig{'db-name'};
- vlog 1, "trying to connect to coolnewDB-database <$dbName>";
- $self->{'dbh'} = ... # get connection handle from coolnewDB
- }
-
- sub disconnectConfigDB
- {
- my $self = shift;
-
- $self->{'dbh'}->disconnect;
- }
-
- # override all methods of OpenSLX::MetaDB::Base in order to implement
- # a full MetaDB driver
- ...
-
-I<The synopsis above outlines a class that implements a
-MetaDB driver for the (imaginary) database B<coolnewDB>>
-
-=head1 DESCRIPTION
-
-This class defines the MetaDB interface for the OpenSLX.
-
-Aim of the MetaDB abstraction is to make it possible to use a large set
-of different databases (from CSV-files to a fullblown Oracle-installation)
-transparently.
-
-While OpenSLX::ConfigDB represents the data layer to the outside world, each
-implementation of OpenSLX::MetaDB::Base provides a backend for a specific database.
-
-This way, the different OpenSLX-scripts do not have to burden
-themselves with any DB-specific details, they just request the data they want
-from the ConfigDB-layer and that in turn creates and communicates with the
-appropriate MetaDB driver in order to connect to the database and fetch and/or
-change the data as instructed.
-
-The MetaDB interface contains of four different parts:
-
-=over
-
-=item - L<basic methods> (connection handling and utilities)
-
-=item - L<data access methods> (getting data)
-
-=item - L<data manipulation methods> (adding, removing and changing data)
-
-=item - L<schema related methods> (migrating between different DB-versions)
-
-=back
-
-In order to implement a MetaDB driver for a specific database, you need
-to inherit from B<OpenSLX::MetaDB::Base> and implement the full interface. As this
-is quite some work, it might be wiser to actually inherit your driver from
-B<L<OpenSLX::MetaDB::DBI|OpenSLX::MetaDB::DBI>>, which is a default implementation for SQL databases.
-
-If there is a DBD-driver for the database your new MetaDB driver wants to talk
-to then all you need to do is inherit from B<OpenSLX::MetaDB::DBI> and then
-reimplement L<C<connectConfigDB>> (and maybe some other methods in order to
-improve efficiency).
-
-=cut
-
-################################################################################
-use strict;
use Carp;
################################################################################
-
-=head2 Basic Methods
-
-The following basic methods need to be implemented in a MetaDB driver:
-
-=over
-
-=cut
-
+### basic functions
################################################################################
sub new
{
confess "Don't create OpenSLX::MetaDB::Base - objects directly!";
}
-=item C<connectConfigDB>
-
- $metaDB->connectConfigDB($dbParams);
-
-Tries to establish a connection to the DBMS that this MetaDB driver deals with.
-The global configuration hash C<%config> contains further info about the
-requested connection. When implementing this method, you may have to look at
-the following entries in order to find out which database to connect to:
-
-=over
-
-=item C<$config{'db-basepath'}>
-
-basic path to openslx database, defaults to path of running script
-
-=item C<$config{'db-datadir'}>
-
-data folder created under db-basepath, default depends on db-type (many
-DBMSs don't have such a folder, as they do not store the data in the
-filesystem).
-
-=item C<$config{'db-spec'}>
-
-full specification of database, a special string defining the
-precise database to connect to (this allows connecting to a database
-that requires specifications which aren't cared for by the existing
-C<%config>-entries).
-
-=item C<$config{'db-name'}>
-
-the precise name of the database that should be connected (defaults to 'openslx').
-
-=back
-
-=cut
-
sub connectConfigDB
{
}
@@ -182,51 +34,8 @@ sub quote
}
################################################################################
-
-=back
-
-=head2 Data Access Methods
-
-The following methods need to be implemented in a MetaDB driver in order to
-allow the user to access data:
-
-=over
-
-=cut
-
+### data access interface
################################################################################
-
-=item C<fetchSystemsByFilter>
-
- my $filter = { 'os_type' => 'LINUX' };
- my $resultCols = 'id,name,descr';
- my @systems = $metaDBH->fetchSystemsByFilter($filter, $resultCols);
-
-Fetches and returns information about all systems match the given filter.
-
-=over
-
-=item Param C<$filter>
-
-A hash-ref defining the filter criteria to be applied. Each key corresponds
-to a DB column and the (hash-)value contains the respective column value. [At a
-later stage, this might be improved to support more structured approach to
-filtering (with boolean operators and more)].
-
-=item Param C<$resultCols> [Optional]
-
-A comma-separated list of colunm names that shall be returned. If not defined,
-all available data must be returned.
-
-=item Return Value
-
-An array of hash-refs containing the resulting data rows.
-
-
-=back
-
-=cut
-
sub fetchVendorOSesByFilter
{
}
@@ -434,8 +243,532 @@ sub schemaChangeColumns
{
}
+1;
+################################################################################
+
+=pod
+
+=head1 NAME
+
+OpenSLX::MetaDB::Base - the base class for all MetaDB drivers
+
+=head1 SYNOPSIS
+
+ package OpenSLX::MetaDB::coolnewDB;
+
+ use vars qw(@ISA $VERSION);
+ @ISA = ('OpenSLX::MetaDB::Base');
+ $VERSION = 1.01;
+
+ my $superVersion = $OpenSLX::MetaDB::Base::VERSION;
+ if ($superVersion < $VERSION) {
+ confess _tr('Unable to load module <%s> (Version <%s> required)',
+ 'OpenSLX::MetaDB::Base', $VERSION);
+ }
+
+ use coolnewDB;
+
+ sub new
+ {
+ my $class = shift;
+ my $self = {};
+ return bless $self, $class;
+ }
+
+ sub connectConfigDB
+ {
+ my $self = shift;
+
+ my $dbName = $openslxConfig{'db-name'};
+ vlog 1, "trying to connect to coolnewDB-database <$dbName>";
+ $self->{'dbh'} = ... # get connection handle from coolnewDB
+ }
+
+ sub disconnectConfigDB
+ {
+ my $self = shift;
+
+ $self->{'dbh'}->disconnect;
+ }
+
+ # override all methods of OpenSLX::MetaDB::Base in order to implement
+ # a full MetaDB driver
+ ...
+
+I<The synopsis above outlines a class that implements a
+MetaDB driver for the (imaginary) database B<coolnewDB>>
+
+=head1 DESCRIPTION
+
+This class defines the MetaDB interface for the OpenSLX.
+
+Aim of the MetaDB abstraction is to make it possible to use a large set
+of different databases (from CSV-files to a fullblown Oracle-installation)
+transparently.
+
+While OpenSLX::ConfigDB represents the data layer to the outside world, each
+implementation of OpenSLX::MetaDB::Base provides a backend for a specific database.
+
+This way, the different OpenSLX-scripts do not have to burden
+themselves with any DB-specific details, they just request the data they want
+from the ConfigDB-layer and that in turn creates and communicates with the
+appropriate MetaDB driver in order to connect to the database and fetch and/or
+change the data as instructed.
+
+The MetaDB interface contains of four different parts:
+
+=over
+
+=item - L<basic methods> (connection handling and utilities)
+
+=item - L<data access methods> (getting data)
+
+=item - L<data manipulation methods> (adding, removing and changing data)
+
+=item - L<schema related methods> (migrating between different DB-versions)
+
=back
-=cut
+In order to implement a MetaDB driver for a specific database, you need
+to inherit from B<OpenSLX::MetaDB::Base> and implement the full interface. As this
+is quite some work, it might be wiser to actually inherit your driver from
+B<L<OpenSLX::MetaDB::DBI|OpenSLX::MetaDB::DBI>>, which is a default implementation for SQL databases.
+
+If there is a DBD-driver for the database your new MetaDB driver wants to talk
+to then all you need to do is inherit from B<OpenSLX::MetaDB::DBI> and then
+reimplement L<C<connectConfigDB>> (and maybe some other methods in order to
+improve efficiency).
+
+=head1 Special Concepts
-1; \ No newline at end of file
+=over
+
+=item C<Filters>
+
+A filter is a hash-ref defining the filter criteria to be applied to a database
+query. Each key of the filter corresponds to a DB column and the (hash-)value
+contains the respective column value.
+
+[At a later stage, this will be improved to support a more structured approach
+to filtering (with boolean operators and hierarchical expressions)].
+
+=back
+
+=head1 Methods
+
+=head2 Basic Methods
+
+The following basic methods need to be implemented in a MetaDB driver:
+
+=over
+
+=item C<connectConfigDB()>
+
+Tries to establish a connection to the DBMS that this MetaDB driver deals with.
+The global configuration hash C<%config> contains further info about the
+requested connection. When implementing this method, you may have to look at
+the following entries in order to find out which database to connect to:
+
+=over
+
+=item C<$config{'db-basepath'}>
+
+Basic path to openslx database, defaults to path of running script
+
+=item C<$config{'db-datadir'}>
+
+Data folder created under db-basepath, default depends on db-type (many
+DBMSs don't have such a folder, as they do not store the data in the
+filesystem).
+
+=item C<$config{'db-spec'}>
+
+Full specification of database, a special string defining the
+precise database to connect to (this allows connecting to a database
+that requires specifications which aren't cared for by the existing
+C<%config>-entries).
+
+=item C<$config{'db-name'}>
+
+The precise name of the database that should be connected (defaults to 'openslx').
+
+=back
+
+=item C<disconnectConfigDB()>
+
+Tears down the connection to the DBMS that this MetaDB driver deals with and
+cleans up.
+
+=item C<quote(string)>
+
+Returns the given string quoted such that it can be used in SQL-statements
+(with respect to the corresponding DBMS).
+
+This usually involves putting
+single quotes around the string and escaping any single quote characters
+enclosed in the given string with a backslash.
+
+=back
+
+=head2 Data Access Methods
+
+The following methods need to be implemented in a MetaDB driver in order to
+allow the user to access data:
+
+=over
+
+=item C<fetchVendorOSesByFilter([%$filter], [$resultCols])>
+
+Fetches and returns information about all vendor-OSes that match the given
+filter.
+
+=over
+
+=item Param C<filter>
+
+A hash-ref containing the filter criteria that shall be applied - default
+is no filtering. See L</"Filters"> for more info.
+
+=item Param C<resultCols>
+
+A string listing the columns that shall be returned - default is all columns.
+
+=item Return Value
+
+An array of hash-refs containing the resulting data rows.
+
+=back
+
+=item C<fetchVendorOSesByID(@$ids, [$resultCols])>
+
+Fetches and returns information the vendor-OSes with the given IDs.
+
+=over
+
+=item Param C<ids>
+
+An array of the vendor-OS-IDs you are interested in.
+
+=item Param C<resultCols>
+
+A string listing the columns that shall be returned - default is all columns.
+
+=item Return Value
+
+An array of hash-refs containing the resulting data rows.
+
+=back
+
+=item C<fetchSystemsByFilter([%$filter], [$resultCols])>
+
+Fetches and returns information about all systems that match the given filter.
+
+=over
+
+=item Param C<$filter>
+
+A hash-ref containing the filter criteria that shall be applied - default
+is no filtering. See L</"Filters"> for more info.
+
+=item Param C<$resultCols> [Optional]
+
+A comma-separated list of colunm names that shall be returned. If not defined,
+all available data must be returned.
+
+=item Return Value
+
+An array of hash-refs containing the resulting data rows.
+
+=back
+
+=item C<fetchSystemsByID(@$ids, [$resultCols])>
+
+Fetches and returns information the systems with the given IDs.
+
+=over
+
+=item Param C<ids>
+
+An array of the system-IDs you are interested in.
+
+=item Param C<resultCols>
+
+A string listing the columns that shall be returned - default is all columns.
+
+=item Return Value
+
+An array of hash-refs containing the resulting data rows.
+
+=back
+
+=item C<fetchSystemIDsOfVendorOS($id)>
+
+Fetches the IDs of all systems that make use of the vendor-OS with the given ID.
+
+=over
+
+=item Param C<id>
+
+ID of the vendor-OS whose systems shall be returned.
+
+=item Return Value
+
+An array of system-IDs.
+
+=back
+
+=item C<fetchSystemIDsOfClient($id)>
+
+Fetches the IDs of all systems that are used by the client with the given
+ID.
+
+=over
+
+=item Param C<id>
+
+ID of the client whose systems shall be returned.
+
+=item Return Value
+
+An array of system-IDs.
+
+=back
+
+=item C<fetchSystemIDsOfGroup($id)>
+
+Fetches the IDs of all systems that are part of the group with the given
+ID.
+
+=over
+
+=item Param C<id>
+
+ID of the group whose systems shall be returned.
+
+=item Return Value
+
+An array of system-IDs.
+
+=back
+
+=item C<fetchSystemVariantsByFilter([%$filter], [$resultCols])>
+
+Fetches and returns information about all system variants that match the given
+filter.
+
+=over
+
+=item Param C<$filter>
+
+A hash-ref containing the filter criteria that shall be applied - default
+is no filtering. See L</"Filters"> for more info.
+
+=item Param C<$resultCols> [Optional]
+
+A comma-separated list of colunm names that shall be returned. If not defined,
+all available data must be returned.
+
+=item Return Value
+
+An array of hash-refs containing the resulting data rows.
+
+=back
+
+=item C<fetchSystemVariantsByID(@$ids, [$resultCols])>
+
+Fetches and returns information the systems variants with the given IDs.
+
+=over
+
+=item Param C<ids>
+
+An array of the system-variant-IDs you are interested in.
+
+=item Param C<resultCols>
+
+A string listing the columns that shall be returned - default is all columns.
+
+=item Return Value
+
+An array of hash-refs containing the resulting data rows.
+
+=back
+
+=item C<fetchSystemVariantIDsOfSystem($id)>
+
+Fetches the IDs of all system variants that belong to the system with the given
+ID.
+
+=over
+
+=item Param C<id>
+
+ID of the system whose variants shall be returned.
+
+=item Return Value
+
+An array of system-variant-IDs.
+
+=back
+
+=item C<fetchClientsByFilter([%$filter], [$resultCols])>
+
+Fetches and returns information about all clients that match the given filter.
+
+=over
+
+=item Param C<$filter>
+
+A hash-ref containing the filter criteria that shall be applied - default
+is no filtering. See L</"Filters"> for more info.
+
+=item Param C<$resultCols> [Optional]
+
+A comma-separated list of colunm names that shall be returned. If not defined,
+all available data must be returned.
+
+=item Return Value
+
+An array of hash-refs containing the resulting data rows.
+
+=back
+
+=item C<fetchClientsByID(@$ids, [$resultCols])>
+
+Fetches and returns information the clients with the given IDs.
+
+=over
+
+=item Param C<ids>
+
+An array of the client-IDs you are interested in.
+
+=item Param C<resultCols>
+
+A string listing the columns that shall be returned - default is all columns.
+
+=item Return Value
+
+An array of hash-refs containing the resulting data rows.
+
+=back
+
+=item C<fetchClientIDsOfSystem($id)>
+
+Fetches the IDs of all clients that make use of the system with the given
+ID.
+
+=over
+
+=item Param C<id>
+
+ID of the system whose clients shall be returned.
+
+=item Return Value
+
+An array of client-IDs.
+
+=back
+
+=item C<fetchClientIDsOfGroup($id)>
+
+Fetches the IDs of all clients that are part of the group with the given
+ID.
+
+=over
+
+=item Param C<id>
+
+ID of the group whose clients shall be returned.
+
+=item Return Value
+
+An array of client-IDs.
+
+=back
+
+
+
+=item C<fetchGroupsByFilter([%$filter], [$resultCols])>
+
+Fetches and returns information about all groups that match the given filter.
+
+=over
+
+=item Param C<$filter>
+
+A hash-ref containing the filter criteria that shall be applied - default
+is no filtering. See L</"Filters"> for more info.
+
+=item Param C<$resultCols> [Optional]
+
+A comma-separated list of colunm names that shall be returned. If not defined,
+all available data must be returned.
+
+=item Return Value
+
+An array of hash-refs containing the resulting data rows.
+
+=back
+
+
+
+=item C<fetchGroupsByID(@$ids, [$resultCols])>
+
+Fetches and returns information the groups with the given IDs.
+
+=over
+
+=item Param C<ids>
+
+An array of the group-IDs you are interested in.
+
+=item Param C<resultCols>
+
+A string listing the columns that shall be returned - default is all columns.
+
+=item Return Value
+
+An array of hash-refs containing the resulting data rows.
+
+=back
+
+
+
+=item C<fetchGroupIDsOfClient($id)>
+
+Fetches the IDs of all groups that contain the client with the given
+ID.
+
+=over
+
+=item Param C<id>
+
+ID of the client whose groups shall be returned.
+
+=item Return Value
+
+An array of client-IDs.
+
+=back
+
+
+
+=item C<fetchGroupIDsOfSystem($id)>
+
+Fetches the IDs of all groups that contain the system with the given
+ID.
+
+=over
+
+=item Param C<id>
+
+ID of the system whose groups shall be returned.
+
+=item Return Value
+
+An array of client-IDs.
+
+=back
+
+=cut
diff --git a/config-db/test-config-db.pl b/config-db/devel-tools/test-config-db.pl
index ecbdbd15..ecbdbd15 100755
--- a/config-db/test-config-db.pl
+++ b/config-db/devel-tools/test-config-db.pl
diff --git a/config-db/test-config-demuxer.pl b/config-db/devel-tools/test-config-demuxer.pl
index 7fcc8f76..e5ee3aa9 100755
--- a/config-db/test-config-demuxer.pl
+++ b/config-db/devel-tools/test-config-demuxer.pl
@@ -25,22 +25,22 @@ my $openslxDB = connectConfigDB();
emptyDatabase($openslxDB);
-addVendorOS($openslxDB, {
- 'name' => "suse-10-minimal",
- 'comment' => "SuSE 10 minimale Installation",
- 'path' => "suse-10.0",
- # relative to /var/lib/openslx/stage1
+addVendorOS($openslxDB,{
+ 'name' => "suse-10-minimal",
+ 'comment' => "SuSE 10 minimale Installation",
+ 'path' => "suse-10.0",
+ # relative to /var/lib/openslx/stage1
});
addVendorOS($openslxDB, {
- 'name' => "suse-10-KDE",
- 'comment' => "SuSE 10 grafische Installation mit KDE",
- 'path' => "suse-10.0",
+ 'name' => "suse-10-KDE",
+ 'comment' => "SuSE 10 grafische Installation mit KDE",
+ 'path' => "suse-10.0",
});
addVendorOS($openslxDB, {
- 'name' => "debian-31",
- 'comment' => "Debian 3.1 Default-Installation",
+ 'name' => "debian-31",
+ 'comment' => "Debian 3.1 Default-Installation",
});
my @systems;
diff --git a/config-db/slxconfig-demuxer.pl b/config-db/slxconfig-demuxer
index 62780f17..62780f17 100755
--- a/config-db/slxconfig-demuxer.pl
+++ b/config-db/slxconfig-demuxer
diff --git a/config-db/slxldd.pl b/config-db/slxldd
index ee887e01..ee887e01 100755
--- a/config-db/slxldd.pl
+++ b/config-db/slxldd
diff --git a/config-db/slxsetup.pl b/config-db/slxsettings
index 4c82be28..4c82be28 100755
--- a/config-db/slxsetup.pl
+++ b/config-db/slxsettings
diff --git a/config-db/slxsetup-test-data-simple.pl b/config-db/slxsetup
index 71afa0a3..71afa0a3 100755
--- a/config-db/slxsetup-test-data-simple.pl
+++ b/config-db/slxsetup