summaryrefslogtreecommitdiffstats
path: root/config-db
diff options
context:
space:
mode:
authorOliver Tappe2008-01-26 00:14:35 +0100
committerOliver Tappe2008-01-26 00:14:35 +0100
commit2788e6e9b2e67009edb38ab3dd7c2b81c21dfebe (patch)
treef373b03c3606eb202af1361d42f4e497df87eb16 /config-db
parentBUGFIX: KDM theme should work now for suse 10.2, others have still to be changed (diff)
downloadcore-2788e6e9b2e67009edb38ab3dd7c2b81c21dfebe.tar.gz
core-2788e6e9b2e67009edb38ab3dd7c2b81c21dfebe.tar.xz
core-2788e6e9b2e67009edb38ab3dd7c2b81c21dfebe.zip
* added support to the merging functions for keeping track of the each
attribute value's origin git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1493 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'config-db')
-rw-r--r--config-db/OpenSLX/ConfigDB.pm36
1 files changed, 24 insertions, 12 deletions
diff --git a/config-db/OpenSLX/ConfigDB.pm b/config-db/OpenSLX/ConfigDB.pm
index e8d0f560..8ec9983b 100644
--- a/config-db/OpenSLX/ConfigDB.pm
+++ b/config-db/OpenSLX/ConfigDB.pm
@@ -2416,14 +2416,15 @@ none
sub mergeDefaultAttributesIntoSystem
{
- my $self = shift;
- my $system = shift;
+ my $self = shift;
+ my $system = shift;
+ my $originInfo = shift;
my $defaultSystem = $self->fetchSystemByFilter({name => '<<<default>>>'});
- mergeAttributes($system, $defaultSystem);
+ mergeAttributes($system, $defaultSystem, $originInfo, 'default-system');
my $defaultClient = $self->fetchClientByFilter({name => '<<<default>>>'});
- pushAttributes($system, $defaultClient);
+ pushAttributes($system, $defaultClient, $originInfo, 'default-client');
return 1;
}
@@ -2448,8 +2449,9 @@ none
sub mergeDefaultAndGroupAttributesIntoClient
{
- my $self = shift;
- my $client = shift;
+ my $self = shift;
+ my $client = shift;
+ my $originInfo = shift;
# step over all groups this client belongs to
# (ordered by priority from highest to lowest):
@@ -2466,13 +2468,13 @@ sub mergeDefaultAndGroupAttributesIntoClient
3,
_tr('merging from group %d:%s...', $group->{id}, $group->{name})
);
- mergeAttributes($client, $group);
+ mergeAttributes($client, $group, $originInfo, "group '$group->{name}'");
}
# merge configuration from default client:
vlog(3, _tr('merging from default client...'));
my $defaultClient = $self->fetchClientByFilter({name => '<<<default>>>'});
- mergeAttributes($client, $defaultClient);
+ mergeAttributes($client, $defaultClient, $originInfo, 'default-client');
return 1;
}
@@ -2685,8 +2687,10 @@ none
sub mergeAttributes
{
- my $target = shift;
- my $source = shift;
+ my $target = shift;
+ my $source = shift;
+ my $originInfo = shift;
+ my $origin = shift;
my $sourceAttrs = $source->{attrs} || {};
@@ -2699,6 +2703,9 @@ sub mergeAttributes
if (defined $sourceVal && !defined $targetVal) {
vlog(3, _tr("merging %s (val=%s)", $key, $sourceVal));
$targetAttrs->{$key} = $sourceVal;
+ if (defined $originInfo) {
+ $originInfo->{$key} = $origin;
+ }
}
}
@@ -2729,8 +2736,10 @@ none
sub pushAttributes
{
- my $target = shift;
- my $source = shift;
+ my $target = shift;
+ my $source = shift;
+ my $originInfo = shift;
+ my $origin = shift;
my $sourceAttrs = $source->{attrs} || {};
@@ -2742,6 +2751,9 @@ sub pushAttributes
if (defined $sourceVal) {
vlog(3, _tr("pushing %s (val=%s)", $key, $sourceVal));
$targetAttrs->{$key} = $sourceVal;
+ if (defined $originInfo) {
+ $originInfo->{$key} = $origin;
+ }
}
}