summaryrefslogtreecommitdiffstats
path: root/config-db
diff options
context:
space:
mode:
authorOliver Tappe2006-10-28 20:20:19 +0200
committerOliver Tappe2006-10-28 20:20:19 +0200
commit943b3910af04e11b3116c1114431f36ccd194267 (patch)
treecc5efa17f040750e46a42bcd89066f6e414c4c82 /config-db
parent* fixed module path (diff)
downloadcore-943b3910af04e11b3116c1114431f36ccd194267.tar.gz
core-943b3910af04e11b3116c1114431f36ccd194267.tar.xz
core-943b3910af04e11b3116c1114431f36ccd194267.zip
* added separate script for simple database setup
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@477 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'config-db')
-rwxr-xr-xconfig-db/devel-tools/create-simple-db.pl339
1 files changed, 339 insertions, 0 deletions
diff --git a/config-db/devel-tools/create-simple-db.pl b/config-db/devel-tools/create-simple-db.pl
new file mode 100755
index 00000000..e2b7a2f9
--- /dev/null
+++ b/config-db/devel-tools/create-simple-db.pl
@@ -0,0 +1,339 @@
+#! /usr/bin/perl
+#
+# slxsetup-test-data-simple.pl - Simple OpenSLX test data generator
+#
+# (c) 2006 - OpenSLX.com
+#
+# Oliver Tappe <ot@openslx.com>
+#
+use strict;
+
+my $abstract = q[
+slxsetup-test-data-simple.pl
+ This script will generate a very simple OpenSLX test-dataset, useful for
+ testing and/or trying things out.
+
+ If the OpenSLX configuration database already contains data, the script
+ will ask for confirmation before clobbering that database.
+];
+
+use Getopt::Long qw(:config pass_through);
+use Pod::Usage;
+
+# add the lib-folder and the folder this script lives in to perl's search
+# path for modules:
+use FindBin;
+use lib "$FindBin::RealBin/..";
+ # development path
+
+use OpenSLX::Basics;
+use OpenSLX::ConfigDB qw(:access :manipulation);
+
+my (
+ $clobber,
+ $helpReq,
+ $manReq,
+ $versionReq,
+);
+
+GetOptions(
+ 'clobber' => \$clobber,
+ # clobber causes this script to overwrite the database without asking
+ 'help|?' => \$helpReq,
+ 'man' => \$manReq,
+ 'version' => \$versionReq,
+);
+pod2usage(-msg => $abstract, -verbose => 0, -exitval => 1) if $helpReq;
+pod2usage(-verbose => 2) if $manReq;
+if ($versionReq) {
+ system('slxversion');
+ exit 1;
+}
+
+openslxInit() or pod2usage(2);
+
+my $openslxDB = connectConfigDB();
+
+my @systems = fetchSystemsByFilter($openslxDB);
+my $systemCount = scalar(@systems)-1;
+ # ignore default system
+my @clients = fetchClientsByFilter($openslxDB);
+my $clientCount = scalar(@clients)-1;
+ # ignore default client
+if ($systemCount && $clientCount && !$clobber) {
+ my $yes = _tr('yes');
+ my $no = _tr('no');
+ print _tr(qq[This will overwrite the current OpenSLX-database with an example dataset.
+All your data (%s systems and %s clients) will be lost!
+Do you want to continue(%s/%s)? ], $systemCount, $clientCount, $yes, $no);
+ my $answer = <>;
+ if ($answer !~ m[^\s*$yes]i) {
+ print "no - stopping\n";
+ exit 5;
+ }
+ print "yes - starting...\n";
+}
+
+emptyDatabase($openslxDB);
+
+my $vendorOs1Id = addVendorOS($openslxDB, {
+ 'name' => "suse-10",
+ 'comment' => "SuSE 10.0 Default-Installation",
+ 'path' => "suse-10.0",
+});
+
+my $vendorOs2Id = addVendorOS($openslxDB, {
+ 'name' => "suse-10.1",
+ 'comment' => "SuSE 10.1 Default-Installation",
+ 'path' => "suse-10.1",
+});
+
+my @systems;
+
+my $system1Id = addSystem($openslxDB, {
+ 'name' => "suse-10.0",
+ 'label' => "SUSE LINUX 10.0",
+ 'comment' => "Testsystem für openslx",
+ 'vendor_os_id' => $vendorOs1Id,
+ 'ramfs_debug_level' => 0,
+ 'ramfs_use_glibc' => 0,
+ 'ramfs_use_busybox' => 0,
+ 'ramfs_nicmods' => '',
+ 'ramfs_fsmods' => '',
+ 'kernel' => "boot/vmlinuz-2.6.13-15-default",
+ 'kernel_params' => "",
+ 'export_type' => 'nfs',
+ 'attr_start_xdmcp' => 'kdm',
+});
+
+my $system2Id = addSystem($openslxDB, {
+ 'name' => "suse-10.1",
+ 'label' => "SUSE LINUX 10.1",
+ 'comment' => "Testsystem für openslx",
+ 'vendor_os_id' => $vendorOs2Id,
+ 'ramfs_debug_level' => 0,
+ 'ramfs_use_glibc' => 0,
+ 'ramfs_use_busybox' => 0,
+ 'ramfs_nicmods' => '',
+ 'ramfs_fsmods' => '',
+ 'kernel' => "boot/vmlinuz-2.6.16.21-0.21-default",
+ 'kernel_params' => "debug=0",
+ 'export_type' => 'nfs',
+ 'attr_start_xdmcp' => 'kdm',
+});
+
+my $client1Id = addClient($openslxDB, {
+ 'name' => "Client-1",
+ 'mac' => "00:50:56:0D:03:38",
+ 'boot_type' => 'pxe',
+});
+
+my $client2Id = addClient($openslxDB, {
+ 'name' => "Client-2",
+ 'mac' => "00:16:41:55:12:92",
+ 'boot_type' => 'pxe',
+});
+
+addSystemIDsToClient($openslxDB, $client1Id, [$system1Id, $system2Id]);
+addSystemIDsToClient($openslxDB, $client2Id, [$system2Id]);
+
+disconnectConfigDB($openslxDB);
+
+if ($openslxConfig{'db-type'} =~ m[^\s*csv\s*$]i) {
+ my $csvFolder = "$openslxConfig{'db-basepath'}/$openslxConfig{'db-name'}-csv";
+ print "The test-database with the CSV-files has been created in\n";
+ print "\t$csvFolder\n";
+ print "You can change the dataset with a simple editor or using\n";
+ print "a spreadsheet software like 'OpenOffice Calc' or 'Gnumeric'.\n";
+}
+
+__END__
+
+=head1 NAME
+
+slxsetup-test-data-simple.pl - Simple OpenSLX test data generator
+
+=head1 SYNOPSIS
+
+slxsetup-test-data-simple.pl [options]
+
+ Script Options:
+ --clobber overwrites config-db without asking
+
+ OpenSLX Options:
+ --base-path=<string> basic path to project files
+ --bin-path=<string> path to binaries and scripts
+ --config-path=<string> path to configuration files
+ --db-basepath=<string> basic path to openslx database
+ --db-datadir=<string> data folder created under db-basepath
+ --db-name=<string> name of database
+ --db-spec=<string> full DBI-specification of database
+ --db-type=<string> type of database to connect to
+ --export-path=<string> path to root of all exported filesystems
+ --locale=<string> locale to use for translations
+ --logfile=<string> file to write logging output to
+ --private-path=<string> path to private data
+ --public-path=<string> path to public (client-accesible) data
+ --share-path=<string> path to sharable data
+ --temp-path=<string> path to temporary data
+ --tftpboot-path=<string> path to root of tftp-server
+ --verbose-level=<int> level of logging verbosity (0-3)
+
+ General Options:
+ --help brief help message
+ --man full documentation
+ --version show version
+
+=head1 OPTIONS
+
+=head3 Script Options
+
+=over 8
+
+=item B<--clobber>
+
+Runs the script without asking any questions, B<any contents in the OpenSLX
+config-db will be wiped!>
+
+=back
+
+=head3 OpenSLX Options
+
+=over 8
+
+=item B<--base-path=<string>>
+
+Sets basic path to project files.
+
+Default is $SLX_BASE_PATH (usually F</opt/openslx>).
+
+=item B<--bin-path=<string>>
+
+Sets path to binaries and scripts.
+
+Default is $SLX_BASE_PATH/bin (usually F</opt/openslx/bin>).
+
+=item B<--config-path=<string>>
+
+Sets path to configuration files.
+
+Default is $SLX_CONFIG_PATH (usually F</etc/opt/openslx>).
+
+=item B<--db-basepath=<string>>
+
+Sets basic path to openslx database.
+
+Default is $SLX_DB_PATH (usually F</var/opt/openslx/db>).
+
+=item B<--db-datadir=<string>>
+
+Sets data folder created under db-basepath.
+
+Default is $SLX_DB_DATADIR (usually empty as it depends on db-type
+whether or not such a directory is required at all).
+
+=item B<--db-name=<string>>
+
+Gives the name of the database to connect to.
+
+Default is $SLX_DB_NAME (usually C<openslx>).
+
+=item B<--db-spec=<string>>
+
+Gives the full DBI-specification of database to connect to. Content depends
+on the db-type.
+
+Default is $SLX_DB_SPEC (usually empty as it will be built automatically).
+
+=item B<--db-type=<string>>
+
+Sets the type of database to connect to (CSV, SQLite, mysql, ...).
+
+Default $SLX_DB_TYPE (usually C<CSV>).
+
+=item B<--export-path=<string>>
+
+Sets path to root of all exported filesystems. For each type of export (NFS,
+NBD, ...) a separate folder will be created in here.
+
+Default is $SLX_EXPORT_PATH (usually F</srv/openslx/export>.
+
+=item B<--locale=<string>>
+
+Sets the locale to use for translations.
+
+Defaults to the system's standard locale.
+
+=item B<--logfile=<string>>
+
+Specifies a file where logging output will be written to.
+
+Default is to log to STDERR.
+
+=item B<--private-path=<string>>
+
+Sets path to private data, where the config-db, vendor_oses and configurational
+extensions will be stored.
+
+Default is $SLX_PRIVATE_PATH (usually F</var/opt/openslx>.
+
+=item B<--public-path=<string>>
+
+Sets path to public (client-accesible) data.
+
+Default is $SLX_PUBLIC_PATH (usually F</srv/openslx>.
+
+=item B<--share-path=<string>>
+
+Sets path to sharable data, where distro-specs and functionality templates
+will be stored.
+
+Default is $SLX_SHARE_PATH (usually F</opt/openslx/share>.
+
+=item B<--temp-path=<string>>
+
+Sets path to temporary data.
+
+Default is $SLX_TEMP_PATH (usually F</tmp>.
+
+=item B<--tftpboot-path=<string>>
+
+Sets path to root of tftp-server from which clients will access their files.
+
+Default is $SLX_TFTPBOOT_PATH (usually F</srv/openslx/tftpboot>.
+
+=item B<--verbose-level=<int>>
+
+Sets the level of logging verbosity (0-3).
+
+Default is $SLX_VERBOSE_LEVEL (usually 0, no logging).
+
+=back
+
+=head3 General Options
+
+=over 8
+
+=item B<--help>
+
+Prints a brief help message and exits.
+
+=item B<--man>
+
+Prints the manual page and exits.
+
+=item B<--version>
+
+Prints the version and exits.
+
+=back
+
+=head1 DESCRIPTION
+
+B<slxsetup-test-data-simple.pl> will generate a very simple test-dataset
+useful for testing and/or trying things out.
+
+If the OpenSLX configuration database already contains data, the script
+will ask for confirmation before clobbering that database.
+
+=cut \ No newline at end of file