backend/server/rhnSQL/__init__.py | 18 +++
java/spacewalk-java.spec | 5
rel-eng/build-missing-builds-in-koji.sh | 4
rel-eng/packages/spacewalk-admin | 2
rel-eng/packages/spacewalk-java | 2
rel-eng/tito.props | 6 -
schema/spacewalk/Makefile | 1
schema/spacewalk/oracle/packages/rhn_entitlements.pkb | 2
schema/spacewalk/postgres/packages/rhn_entitlements.pkb | 82 ++++++++--------
spacewalk/admin/rhn-populate-database.pl | 2
spacewalk/admin/spacewalk-admin.spec | 6 -
spacewalk/setup/bin/spacewalk-setup | 27 +++--
spacewalk/setup/lib/Spacewalk/Setup.pm | 54 ++++++----
13 files changed, 135 insertions(+), 76 deletions(-)
New commits:
commit 4c1e900fae353aafe00d955b401ace65fe72bd29
Merge: 3be2fd8... 3912327...
Author: Partha Aji <paji(a)redhat.com>
Date: Thu Jun 24 12:50:34 2010 -0400
Merge branch 'master' into fve
diff --cc schema/spacewalk/oracle/packages/rhn_entitlements.pkb
index 80d963b,f29cebe..b26fdf9
--- a/schema/spacewalk/oracle/packages/rhn_entitlements.pkb
+++ b/schema/spacewalk/oracle/packages/rhn_entitlements.pkb
@@@ -933,39 -925,39 +933,39 @@@ i
-- limit.
-- Called by: set_group_count, prune_everything, repoll_virt_guest_entitlements
-- *******************************************************************
- procedure prune_group (
- group_id_in in number,
- type_in in char,
- quantity_in in number,
+ procedure prune_group (
+ group_id_in in number,
+ type_in in char,
+ quantity_in in number,
update_family_countsYN in number := 1
- ) is
- cursor usergroups is
- select user_id, user_group_id, ugt.label
- from rhnUserGroupType ugt,
- rhnUserGroup ug,
- rhnUserGroupMembers ugm
- where 1=1
- and ugm.user_group_id = group_id_in
- and ugm.user_id in (
- select user_id
- from (
- select rownum row_number,
- user_id,
- time
- from (
- select user_id,
- modified time
- from rhnUserGroupMembers
- where user_group_id = group_id_in
- order by time asc
- )
- )
- where row_number > quantity_in
- )
- and ugm.user_group_id = ug.id
- and ug.group_type = ugt.id;
+ ) is
+ cursor usergroups is
+ select user_id, user_group_id, ugt.label
+ from rhnUserGroupType ugt,
+ rhnUserGroup ug,
+ rhnUserGroupMembers ugm
+ where 1=1
+ and ugm.user_group_id = group_id_in
+ and ugm.user_id in (
+ select user_id
+ from (
+ select rownum row_number,
+ user_id,
+ time
+ from (
+ select user_id,
+ modified time
+ from rhnUserGroupMembers
+ where user_group_id = group_id_in
+ order by time asc
+ )
+ )
+ where row_number > quantity_in
+ )
+ and ugm.user_group_id = ug.id
+ and ug.group_type = ugt.id;
cursor servergroups is
- select server_id, server_group_id, sgt.id group_type_id, sgt.label
+ select server_id, server_group_id, sgt.id as group_type_id, sgt.label
from rhnServerGroupType sgt,
rhnServerGroup sg,
rhnServerGroupMembers sgm
commit 3912327aa8e624537c346e9e05b2b417e6f2e075
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Thu Jun 24 17:17:26 2010 +0200
Automatic commit of package [spacewalk-admin] release [1.1.3-1].
diff --git a/rel-eng/packages/spacewalk-admin b/rel-eng/packages/spacewalk-admin
index ae2ca3c..887fb00 100644
--- a/rel-eng/packages/spacewalk-admin
+++ b/rel-eng/packages/spacewalk-admin
@@ -1 +1 @@
-1.1.2-1 spacewalk/admin/
+1.1.3-1 spacewalk/admin/
diff --git a/spacewalk/admin/spacewalk-admin.spec b/spacewalk/admin/spacewalk-admin.spec
index 8f276e5..0ee158b 100644
--- a/spacewalk/admin/spacewalk-admin.spec
+++ b/spacewalk/admin/spacewalk-admin.spec
@@ -2,7 +2,7 @@
Summary: Various utility scripts and data files for RHN Satellite installations
Name: spacewalk-admin
URL:
https://fedorahosted.org/spacewalk
-Version: 1.1.2
+Version: 1.1.3
Release: 1%{?dist}
Source0:
https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
License: GPLv2
@@ -60,6 +60,10 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man3/validate-sat-cert.3.gz
%changelog
+* Thu Jun 24 2010 Jan Pazdziora 1.1.3-1
+- To allow database population to create at least some database schema, do not
+ stop on error for now.
+
* Mon Jun 21 2010 Jan Pazdziora 1.1.2-1
- For PostgreSQL, add support for connects to nondefault port; also, avoid
using shell.
commit 2ff5e3eca1ea77b2eee887c65ba35534cafe2924
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Thu Jun 24 14:36:10 2010 +0200
Fix cursors in PostgreSQL version of prune_group.
diff --git a/schema/spacewalk/postgres/packages/rhn_entitlements.pkb
b/schema/spacewalk/postgres/packages/rhn_entitlements.pkb
index e246223..225561b 100644
--- a/schema/spacewalk/postgres/packages/rhn_entitlements.pkb
+++ b/schema/spacewalk/postgres/packages/rhn_entitlements.pkb
@@ -946,40 +946,8 @@ language plpgsql;
) returns void
as $$
declare
- usergroups cursor for
- select user_id, user_group_id, ugt.label
- from rhnUserGroupType ugt,
- rhnUserGroup ug,
- rhnUserGroupMembers ugm
- where 1=1
- and ugm.user_group_id = group_id_in
- and ugm.user_id in (
- select user_id
- from rhnUserGroupMembers
- where user_group_id = group_id_in
- order by modified asc
- offset quantity_in
- )
- and ugm.user_group_id = ug.id
- and ug.group_type = ugt.id;
- servergroups cursor for
- select server_id, server_group_id, sgt.id as group_type_id, sgt.label
- from rhnServerGroupType sgt,
- rhnServerGroup sg,
- rhnServerGroupMembers sgm
- where 1=1
- and sgm.server_group_id = group_id_in
- and sgm.server_id in (
- select sep.server_id
- from
- rhnServerEntitlementPhysical sep
- where
- sep.server_group_id = group_id_in
- order by sep.modified asc
- offset quantity_in
- )
- and sgm.server_group_id = sg.id
- and sg.group_type = sgt.id;
+ ugrecord record;
+ sgrecord record;
type_is_base char;
begin
if type_in = 'U' then
@@ -987,26 +955,60 @@ as $$
set max_members = quantity_in
where id = group_id_in;
- for ug in usergroups loop
- perform rhn_user.remove_from_usergroup(ug.user_id, ug.user_group_id);
+ for ugrecord in (
+ select user_id, user_group_id, ugt.label
+ from rhnUserGroupType ugt,
+ rhnUserGroup ug,
+ rhnUserGroupMembers ugm
+ where 1=1
+ and ugm.user_group_id = group_id_in
+ and ugm.user_id in (
+ select user_id
+ from rhnUserGroupMembers
+ where user_group_id = group_id_in
+ order by modified asc
+ offset quantity_in
+ )
+ and ugm.user_group_id = ug.id
+ and ug.group_type = ugt.id
+ ) loop
+ perform rhn_user.remove_from_usergroup(ugrecord.user_id,
ugrecord.user_group_id);
end loop;
elsif type_in = 'S' then
update rhnServerGroup
set max_members = quantity_in
where id = group_id_in;
- for sg in servergroups loop
- perform rhn_entitlements.remove_server_entitlement(sg.server_id,
sg.label);
+ for sgrecord in (
+ select server_id, server_group_id, sgt.id as group_type_id, sgt.label
+ from rhnServerGroupType sgt,
+ rhnServerGroup sg,
+ rhnServerGroupMembers sgm
+ where 1=1
+ and sgm.server_group_id = group_id_in
+ and sgm.server_id in (
+ select sep.server_id
+ from
+ rhnServerEntitlementPhysical sep
+ where
+ sep.server_group_id = group_id_in
+ order by sep.modified asc
+ offset quantity_in
+ )
+ and sgm.server_group_id = sg.id
+ and sg.group_type = sgt.id
+ ) loop
+ perform rhn_entitlements.remove_server_entitlement(sgrecord.server_id,
sgrecord.label);
select is_base
into type_is_base
from rhnServerGroupType sgt
- where sgt.id = sg.group_type_id;
+ where sgt.id = sgrecord.group_type_id;
-- if we're removing a base ent, then be sure to
-- remove the server's channel subscriptions.
if ( type_is_base = 'Y' ) then
- perform rhn_channel.clear_subscriptions(sg.server_id);
+ perform rhn_channel.clear_subscriptions(sgrecord.server_id);
end if;
end loop;
commit 0fce1f3a4145c143eb2448983a53cd60dd574d78
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Thu Jun 24 14:23:39 2010 +0200
Use AS with column alias.
diff --git a/schema/spacewalk/oracle/packages/rhn_entitlements.pkb
b/schema/spacewalk/oracle/packages/rhn_entitlements.pkb
index 7ecb95b..f29cebe 100644
--- a/schema/spacewalk/oracle/packages/rhn_entitlements.pkb
+++ b/schema/spacewalk/oracle/packages/rhn_entitlements.pkb
@@ -957,7 +957,7 @@ is
and ugm.user_group_id = ug.id
and ug.group_type = ugt.id;
cursor servergroups is
- select server_id, server_group_id, sgt.id group_type_id, sgt.label
+ select server_id, server_group_id, sgt.id as group_type_id, sgt.label
from rhnServerGroupType sgt,
rhnServerGroup sg,
rhnServerGroupMembers sgm
diff --git a/schema/spacewalk/postgres/packages/rhn_entitlements.pkb
b/schema/spacewalk/postgres/packages/rhn_entitlements.pkb
index f8f9d29..e246223 100644
--- a/schema/spacewalk/postgres/packages/rhn_entitlements.pkb
+++ b/schema/spacewalk/postgres/packages/rhn_entitlements.pkb
@@ -963,7 +963,7 @@ as $$
and ugm.user_group_id = ug.id
and ug.group_type = ugt.id;
servergroups cursor for
- select server_id, server_group_id, sgt.id group_type_id, sgt.label
+ select server_id, server_group_id, sgt.id as group_type_id, sgt.label
from rhnServerGroupType sgt,
rhnServerGroup sg,
rhnServerGroupMembers sgm
commit 39a78e2b6192e384996310c06c22e2a481a3b663
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Thu Jun 24 13:04:44 2010 +0200
Parse the default_db; the DNS part (the one after @) is DBI-style connect string.
diff --git a/backend/server/rhnSQL/__init__.py b/backend/server/rhnSQL/__init__.py
index de6303a..e7c7df2 100644
--- a/backend/server/rhnSQL/__init__.py
+++ b/backend/server/rhnSQL/__init__.py
@@ -92,6 +92,24 @@ def initDB(dsn=None, backend=ORACLE, host="localhost",
port=None, username=None,
(username, temp) = dsn.split("/")
(password, database) = temp.split("@")
+ if backend == POSTGRESQL:
+ host = None
+ port = None
+ dsn = CFG.DEFAULT_DB
+ print "dsn [%s]" % dsn
+ (username, temp) = dsn.split("/")
+ (password, dsn) = temp.split("@")
+ for i in dsn.split(';'):
+ (k, v) = i.split('=')
+ if k == 'dbname':
+ database = v
+ elif k == 'host':
+ host = v
+ elif k == 'port':
+ port = v
+ else:
+ raise rhnException("Unknown piece in default_db string", i)
+
# Hide the password
add_to_seclist(dsn)
try:
commit df17a3ab507cc17d8c336c373b389b67437f5866
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Thu Jun 24 12:06:47 2010 +0200
The default_db has username and password in Oracle case, let's make it the same
for PostgreSQL.
For now.
diff --git a/spacewalk/setup/bin/spacewalk-setup b/spacewalk/setup/bin/spacewalk-setup
index ab7752a..4fe82a5 100755
--- a/spacewalk/setup/bin/spacewalk-setup
+++ b/spacewalk/setup/bin/spacewalk-setup
@@ -956,7 +956,7 @@ sub populate_initial_configs {
$hibernate_dialect = "org.hibernate.dialect.PostgreSQLDialect";
$hibernate_driver = "org.postgresql.Driver";
$hibernate_url = "jdbc:postgresql://";
- $default_db = "dbname=$answers->{'db-name'}";
+ $default_db =
"$answers->{'db-user'}/$answers->{'db-password'}\@dbname=$answers->{'db-name'}";
if (defined $answers->{"db-host"} and
$answers->{"db-host"} ne '') {
$hibernate_url .= $answers->{"db-host"};
$default_db .= ";host=$answers->{'db-host'}";
commit c14d55fb1e6f0c2d66e257744128be3647378af2
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Wed Jun 23 16:11:57 2010 +0200
start building for Fedora 13
diff --git a/rel-eng/tito.props b/rel-eng/tito.props
index bf14015..9236bdd 100644
--- a/rel-eng/tito.props
+++ b/rel-eng/tito.props
@@ -3,7 +3,7 @@ default_builder = spacewalk.releng.builder.Builder
default_tagger = spacewalk.releng.tagger.VersionTagger
[koji]
-autobuild_tags = dist-f11-sw-1.1-candidate dist-5E-sw-1.1-candidate
dist-f12-sw-1.1-candidate
+autobuild_tags = dist-f11-sw-1.1-candidate dist-5E-sw-1.1-candidate
dist-f12-sw-1.1-candidate dist-f13-sw-1.1-candidate
[dist-f11-sw-1.1-candidate]
disttag = .fc11
@@ -15,3 +15,7 @@ disttag = .el5
[dist-f12-sw-1.1-candidate]
disttag = .fc12
blacklist=jabberd-selinux
+
+[dist-f13-sw-1.1-candidate]
+disttag = .fc13
+blacklist=jabberd-selinux
commit b9d38ff4da55f3bcb370b40e2c1434da438a33cc
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Wed Jun 23 15:47:44 2010 +0200
start building for Fedora 13
diff --git a/rel-eng/build-missing-builds-in-koji.sh
b/rel-eng/build-missing-builds-in-koji.sh
index 88bb144..443020a 100755
--- a/rel-eng/build-missing-builds-in-koji.sh
+++ b/rel-eng/build-missing-builds-in-koji.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-TAGS=([0]="dist-5E-sw-1.1-candidate" [1]="dist-f11-sw-1.1-candidate"
[2]="dist-f12-sw-1.1-candidate")
+TAGS=([0]="dist-5E-sw-1.1-candidate" [1]="dist-f11-sw-1.1-candidate"
[2]="dist-f12-sw-1.1-candidate" [3]="dist-f13-sw-1.1-candidate")
pushd `pwd`
@@ -9,7 +9,7 @@ cd `dirname $0`/..
# say python to be nice to pipe
export PYTHONUNBUFFERED=1
-for tag in 0 1 2; do
+for tag in 0 1 2 3; do
rel-eng/koji-missing-builds.py --no-extra ${TAGS[$tag]} | \
awk '!(/buildsys-macros/ || /oracle-server-admin/ || /oracle-server-scripts/ ||
/heirloom-pkgtools/) {
if (x==1) { print gensub(" *([a-zA-Z_-]+)-.*",
"\\1", "g")}
commit 98e0c0cb1247b0c39771c33626d157905f331b33
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Wed Jun 23 14:53:15 2010 +0200
Automatic commit of package [spacewalk-java] release [1.1.15-1].
diff --git a/java/spacewalk-java.spec b/java/spacewalk-java.spec
index beaa193..ecbbf3a 100644
--- a/java/spacewalk-java.spec
+++ b/java/spacewalk-java.spec
@@ -19,7 +19,7 @@ Name: spacewalk-java
Summary: Spacewalk Java site packages
Group: Applications/Internet
License: GPLv2
-Version: 1.1.14
+Version: 1.1.15
Release: 1%{?dist}
URL:
https://fedorahosted.org/spacewalk
Source0:
https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
@@ -321,6 +321,9 @@ fi
%{jardir}/postgresql-jdbc.jar
%changelog
+* Wed Jun 23 2010 Jan Pazdziora 1.1.15-1
+- Fixed a couple of checkstyle errors (paji(a)redhat.com)
+
* Mon Jun 21 2010 Jan Pazdziora 1.1.14-1
- updating rhnPackageRepodata table to not use a reserved word.
(jsherril(a)redhat.com)
diff --git a/rel-eng/packages/spacewalk-java b/rel-eng/packages/spacewalk-java
index 4588215..ab8d625 100644
--- a/rel-eng/packages/spacewalk-java
+++ b/rel-eng/packages/spacewalk-java
@@ -1 +1 @@
-1.1.14-1 java/
+1.1.15-1 java/
commit 593420c807048f59b00330880164cc70388dd7b1
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Wed Jun 23 14:07:18 2010 +0200
Some values (db-sid) can be undef, do not pass them to rhn-config-satellite.pl.
diff --git a/spacewalk/setup/bin/spacewalk-setup b/spacewalk/setup/bin/spacewalk-setup
index b923ddb..ab7752a 100755
--- a/spacewalk/setup/bin/spacewalk-setup
+++ b/spacewalk/setup/bin/spacewalk-setup
@@ -1116,7 +1116,7 @@ sub write_config {
my $options = shift;
my $target = shift || Spacewalk::Setup::DEFAULT_RHN_CONF_LOCATION;
- my @opt_strings = map { "--option=${_}=" . $options->{$_} } keys
%{$options};
+ my @opt_strings = map { "--option=${_}=" . $options->{$_} } grep { defined
$options->{$_} } keys %{$options};
Spacewalk::Setup::system_or_exit([ "/usr/bin/rhn-config-satellite.pl",
"--target=$target",
commit ef76f21dae3aab9b1dd1841b25636c924765e90d
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Wed Jun 23 14:06:44 2010 +0200
Some values (db-sid) can be undef, leading to warnings, there does not need to be a
host a port, and the default_db is different for PostgreSQL.
diff --git a/spacewalk/setup/bin/spacewalk-setup b/spacewalk/setup/bin/spacewalk-setup
index d851cfa..b923ddb 100755
--- a/spacewalk/setup/bin/spacewalk-setup
+++ b/spacewalk/setup/bin/spacewalk-setup
@@ -946,13 +946,26 @@ sub populate_initial_configs {
}
# Define some db specific settings:
- my $hibernate_dialect = "org.hibernate.dialect.Oracle9iDialect";
- my $hibernate_driver = "oracle.jdbc.driver.OracleDriver";
- my $hibernate_url = "jdbc:oracle:thin:@" .
$answers->{"db-host"} . ":" . $answers->{"db-port"} .
":" . $answers->{"db-sid"};
- if ($answers->{'db-backend'} eq 'postgresql') {
+ my ($hibernate_dialect, $hibernate_driver, $hibernate_url, $default_db);
+ if ($answers->{'db-backend'} eq 'oracle') {
+ $hibernate_dialect = "org.hibernate.dialect.Oracle9iDialect";
+ $hibernate_driver = "oracle.jdbc.driver.OracleDriver";
+ $hibernate_url = "jdbc:oracle:thin:@" .
$answers->{"db-host"} . ":" . $answers->{"db-port"} .
":" . $answers->{"db-sid"};
+ $default_db = sprintf('%s/%s@%s', @{$answers}{qw/db-user db-password
db-sid/}),
+ } elsif ($answers->{'db-backend'} eq 'postgresql') {
$hibernate_dialect = "org.hibernate.dialect.PostgreSQLDialect";
$hibernate_driver = "org.postgresql.Driver";
- $hibernate_url = "jdbc:postgresql://" .
$answers->{"db-host"} . ":" . $answers->{"db-port"} .
"/" . $answers->{"db-sid"};
+ $hibernate_url = "jdbc:postgresql://";
+ $default_db = "dbname=$answers->{'db-name'}";
+ if (defined $answers->{"db-host"} and
$answers->{"db-host"} ne '') {
+ $hibernate_url .= $answers->{"db-host"};
+ $default_db .= ";host=$answers->{'db-host'}";
+ if (defined $answers->{"db-port"} and
$answers->{"db-port"} ne '') {
+ $hibernate_url .= ':' . $answers->{"db-port"};
+ $default_db .= ";port=$answers->{'db-port'}";
+ }
+ }
+ $hibernate_url .= "/" . $answers->{"db-name"};
}
my %config_opts =
@@ -967,7 +980,7 @@ sub populate_initial_configs {
webDOTenable_solaris_support => 0,
osadispatcherDOTosa_ssl_cert =>
'/var/www/html/pub/RHN-ORG-TRUSTED-SSL-CERT',
encrypted_passwords => 1,
- default_db => sprintf('%s/%s@%s', @{$answers}{qw/db-user db-password
db-sid/}),
+ default_db => $default_db,
db_backend => $answers->{'db-backend'},
db_user => $answers->{'db-user'},
db_password => $answers->{'db-password'},
commit 1e9a2e4ac4ab2a3e44bb53dad94170a05bbf3ddb
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Wed Jun 23 14:03:07 2010 +0200
Let's do a slightly better formatting of our terminal output.
diff --git a/spacewalk/setup/lib/Spacewalk/Setup.pm
b/spacewalk/setup/lib/Spacewalk/Setup.pm
index 0cd5856..0a49712 100644
--- a/spacewalk/setup/lib/Spacewalk/Setup.pm
+++ b/spacewalk/setup/lib/Spacewalk/Setup.pm
@@ -809,7 +809,7 @@ sub postgresql_populate_db {
print Spacewalk::Setup::loc("** Database: Re-populating
database.\n");
}
else {
- print Spacewalk::Setup::loc("**Database: The database already has
schema. Skipping database population.");
+ print Spacewalk::Setup::loc("** Database: The database already has
schema. Skipping database population.\n");
return 1;
}
}
@@ -1288,7 +1288,7 @@ sub oracle_populate_db {
print loc("** Database: Re-populating database.\n");
}
else {
- print loc("**Database: The database already has schema. Skipping
database population.");
+ print loc("** Database: The database already has schema. Skipping
database population.\n");
return 1;
}
commit e2487b374fa5156f5e03736ebf4a5c496f505b0a
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Wed Jun 23 13:55:57 2010 +0200
To allow database population to create at least some database schema, do not stop on
error for now.
diff --git a/spacewalk/admin/rhn-populate-database.pl
b/spacewalk/admin/rhn-populate-database.pl
index 7e98d11..1841ab4 100755
--- a/spacewalk/admin/rhn-populate-database.pl
+++ b/spacewalk/admin/rhn-populate-database.pl
@@ -113,7 +113,7 @@ my @command;
if ($postgresql) {
print "*** Installing PostgreSQL schema from [$schema_deploy_file].\n";
chdir("/usr/share/spacewalk/schema/postgresql/");
- @command = ( 'psql', '-U', $user, '-d', $database, '-v',
'ON_ERROR_STOP=', '-f', $schema_deploy_file );
+ @command = ( 'psql', '-U', $user, '-d', $database, '-v',
'ON_ERROR_ROLLBACK=ON', '-f', $schema_deploy_file );
if (defined $host) {
push @command, '-h', $host;
if (defined $port) {
commit d44bef006b38b42031d5865ce9098467b2402c6e
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Tue Jun 22 16:28:30 2010 +0200
TOP declaration seems to be needed, for Makefile to be useful at all.
diff --git a/schema/spacewalk/Makefile b/schema/spacewalk/Makefile
index f38bdd1..514b8bb 100644
--- a/schema/spacewalk/Makefile
+++ b/schema/spacewalk/Makefile
@@ -1,5 +1,6 @@
include ../../rel-eng/Makefile
+TOP := .
SPECFILE := $(firstword $(wildcard *.spec))
NAME := $(shell rpm -q --qf '%{name}\n' --specfile $(SPECFILE))
VERSION := $(shell rpm -q --qf '%{version}\n' --specfile $(SPECFILE))
commit 7138db043d2d370abd75b3db8043620cb6e2f44e
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Wed Jun 23 11:00:32 2010 +0200
Fix postgresql_clear_db to clear the content of the PostgreSQL database.
diff --git a/spacewalk/setup/lib/Spacewalk/Setup.pm
b/spacewalk/setup/lib/Spacewalk/Setup.pm
index b0019ed..0cd5856 100644
--- a/spacewalk/setup/lib/Spacewalk/Setup.pm
+++ b/spacewalk/setup/lib/Spacewalk/Setup.pm
@@ -854,27 +854,41 @@ sub postgresql_test_db_schema {
}
# Clear the PostgreSQL schema by deleting the 'public' schema with cascade,
-# then re-creating it.
+# then re-creating it. Also delete all the other known schemas that
+# Spacewalk might have created.
+
+my $POSTGRESQL_CLEAR_SCHEMA = <<EOS;
+ drop schema rpm cascade ;
+ drop schema rhn_exception cascade ;
+ drop schema rhn_quota cascade ;
+ drop schema rhn_config cascade ;
+ drop schema rhn_server cascade ;
+ drop schema rhn_entitlements cascade ;
+ drop schema rhn_bel cascade ;
+ drop schema rhn_cache cascade ;
+ drop schema rhn_channel cascade ;
+ drop schema rhn_config_channel cascade ;
+ drop schema rhn_org cascade ;
+ drop schema rhn_package cascade ;
+ drop schema rhn_user cascade ;
+ drop schema public cascade ;
+ create schema public authorization postgres ;
+EOS
sub postgresql_clear_db {
- my $answers = shift;
-
+ my $answers = shift;
+
+ my $dbh = get_dbh($answers);
+ local $dbh->{RaiseError} = 0;
+ local $dbh->{PrintError} = 1;
+ local $dbh->{AutoCommit} = 1;
+ for my $c (split /\n/, $POSTGRESQL_CLEAR_SCHEMA) {
+ $dbh->do($c);
+ }
+ $dbh->disconnect;
+ return 1;
+}
- # Only way to clear a PostgreSQL db we've found so far is to wipe it out
- # completely:
- my $password = @{$answers}{'db-password'};
- my $user = @{$answers}{'db-user'};
- my $host = @{$answers}{'db-host'};
- my $port = @{$answers}{'db-port'};
- my $database = @{$answers}{'db-sid'};
- my $clear_db_cmd = "PGPASSWORD=$password dropdb -U $user -h $host -p $port
$database";
- system($clear_db_cmd);
- $clear_db_cmd = "PGPASSWORD=$password createdb -U $user -h $host
$database";
- system($clear_db_cmd);
- $clear_db_cmd = "PGPASSWORD=$password createlang -U $user -h $host plpgsql
$database";
- system($clear_db_cmd);
- return 1;
-}