web/conf/rhn_dobby.conf | 5 -----
web/modules/dobby/Dobby/CLI/BackupCommands.pm | 2 --
web/modules/dobby/Dobby/CLI/MiscCommands.pm | 22 ++++++++++++++++++++++
web/modules/dobby/Dobby/DB.pm | 25 ++++++++++---------------
4 files changed, 32 insertions(+), 22 deletions(-)
New commits:
commit 62f7161023e68c7862fcee766fac6375590fa8a9
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Wed Feb 9 13:38:06 2011 +0100
552628 - implemented db-control reset-password
diff --git a/web/modules/dobby/Dobby/CLI/MiscCommands.pm b/web/modules/dobby/Dobby/CLI/MiscCommands.pm
index a291f42..18d42d5 100644
--- a/web/modules/dobby/Dobby/CLI/MiscCommands.pm
+++ b/web/modules/dobby/Dobby/CLI/MiscCommands.pm
@@ -44,6 +44,9 @@ sub register_dobby_commands {
$cli->register_mode(-command => "report-stats",
-description => "Show tables with stale or empty statistics",
-handler => \&command_reportstats);
+ $cli->register_mode(-command => "reset-password",
+ -description => "Reset the user password and unlock account",
+ -handler => \&command_resetpassword);
}
sub command_startstop {
@@ -189,4 +192,23 @@ sub command_reportstats {
return 0;
}
+sub command_resetpassword {
+ my $cli = shift;
+
+ my $d = new Dobby::DB;
+ if (not $d->database_started) {
+ print "Error: The database must be running to reset the user password.\n";
+ return 1;
+ }
+
+ my $result = $d->password_reset();
+ if ($result) {
+ print "Password reset for database user $result\n";
+ } else {
+ print "Failed to reset password\n";
+ return 1;
+ }
+ return 0;
+}
+
1;
diff --git a/web/modules/dobby/Dobby/DB.pm b/web/modules/dobby/Dobby/DB.pm
index 5776b66..2580f65 100644
--- a/web/modules/dobby/Dobby/DB.pm
+++ b/web/modules/dobby/Dobby/DB.pm
@@ -398,4 +398,15 @@ sub sysdba_connect {
return $dbh;
}
+sub password_reset {
+ my $self = shift;
+ my $user = PXT::Config->get("db_user");
+ my $password = PXT::Config->get("db_password");
+ my $dbh = $self->sysdba_connect;
+ if ($dbh->do(qq{ALTER USER $user IDENTIFIED BY "$password" ACCOUNT UNLOCK})) {
+ return $user;
+ }
+ return 0;
+}
+
1;
commit 03e6492a316b9fb27f0a8066bc34b241828c0c50
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Wed Feb 9 10:43:30 2011 +0100
remote_dsn is always empty
because db-control is intended for local database only
diff --git a/web/conf/rhn_dobby.conf b/web/conf/rhn_dobby.conf
index 361775c..8cbc290 100644
--- a/web/conf/rhn_dobby.conf
+++ b/web/conf/rhn_dobby.conf
@@ -3,8 +3,6 @@ sid = rhnsat
sysdba_username = system
sysdba_password = manager
-remote_dsn =
-
oracle_home = /opt/apps/oracle/web/product/10.2.0/db_1
data_dir_format = /rhnsat/data/%s
hot_backup_dir_format = /rhnsat/hot-backups/%s/b%02d
diff --git a/web/modules/dobby/Dobby/CLI/BackupCommands.pm b/web/modules/dobby/Dobby/CLI/BackupCommands.pm
index 650aa9d..7b8d772 100644
--- a/web/modules/dobby/Dobby/CLI/BackupCommands.pm
+++ b/web/modules/dobby/Dobby/CLI/BackupCommands.pm
@@ -66,7 +66,6 @@ sub command_backup {
$cli->usage("TARGET_DIR") unless $backup_dir;
my $d = new Dobby::DB;
- $d->assert_local;
$cli->fatal("Error: $backup_dir is not a writable directory.") unless -d $backup_dir and -w $backup_dir;
$cli->fatal("Database is running; please stop before running a cold backup.") if $d->instance_state ne 'OFFLINE';
@@ -113,7 +112,6 @@ sub command_restore {
$cli->fatal("Error: restoration failed, unable to locate $restore_log") unless -r $restore_log;
my $d = new Dobby::DB;
- $d->assert_local;
my $log = Dobby::BackupLog->parse($restore_log);
if ($log->type ne 'cold') {
diff --git a/web/modules/dobby/Dobby/DB.pm b/web/modules/dobby/Dobby/DB.pm
index 85e87e2..5776b66 100644
--- a/web/modules/dobby/Dobby/DB.pm
+++ b/web/modules/dobby/Dobby/DB.pm
@@ -238,7 +238,6 @@ sub database_startup {
my $self = shift;
my $mode = shift;
- $self->assert_local;
if ($mode) {
$mode = uc $mode;
}
@@ -253,7 +252,6 @@ sub database_shutdown {
my $self = shift;
my $mode = shift;
- $self->assert_local;
if ($mode) {
$mode = uc $mode;
}
@@ -268,8 +266,6 @@ sub sqlplus_nolog {
my $self = shift;
my @commands = @_;
- $self->assert_local;
-
Dobby::Log->log("Connecting via sqlplus as sysdba...");
$ENV{ORACLE_SID} = $self->config->get("sid");
@@ -327,7 +323,6 @@ sub connect {
$ENV{ORACLE_SID} = $self->config->get("sid");
$ENV{ORACLE_HOME} = $self->config->get("oracle_home");
my $dbi_str = "dbi:Oracle:";
- $dbi_str .= $self->config->get("remote_dsn") if $self->config->get("remote_dsn");
my $dbh = RHN::DB->direct_connect($dbi_str,
PXT::Config->get("db_user"),
@@ -376,10 +371,6 @@ sub sysdba_connect {
ora_session_mode => 2); # ora_session_mode: OCI_SYSDBA
my $dbi_str = "dbi:Oracle:";
- if ($self->config->get("remote_dsn")) {
- $dbi_str .= $self->config->get("remote_dsn");
- delete $params{ora_session_mode};
- }
# this is a terrible workaround for a bug in DBI. When doing
# ora_session_mode commits with DBI 1.37 and DBD-Oracle 1.14, there
@@ -407,11 +398,4 @@ sub sysdba_connect {
return $dbh;
}
-sub assert_local {
- my $self = shift;
-
- croak"attempt to perform local-only operation on remote dobby db"
- if $self->config->get("remote_dsn");
-}
-
1;
commit e8bee935f9acefc566518dde6630561b0208f5b3
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Wed Feb 9 10:37:37 2011 +0100
552628 - use database credentials from rhn.conf
diff --git a/web/conf/rhn_dobby.conf b/web/conf/rhn_dobby.conf
index 357fdd5..361775c 100644
--- a/web/conf/rhn_dobby.conf
+++ b/web/conf/rhn_dobby.conf
@@ -3,9 +3,6 @@ sid = rhnsat
sysdba_username = system
sysdba_password = manager
-normal_username = rhnsat
-normal_password = rhnsat
-
remote_dsn =
oracle_home = /opt/apps/oracle/web/product/10.2.0/db_1
diff --git a/web/modules/dobby/Dobby/DB.pm b/web/modules/dobby/Dobby/DB.pm
index 75d5703..85e87e2 100644
--- a/web/modules/dobby/Dobby/DB.pm
+++ b/web/modules/dobby/Dobby/DB.pm
@@ -330,8 +330,8 @@ sub connect {
$dbi_str .= $self->config->get("remote_dsn") if $self->config->get("remote_dsn");
my $dbh = RHN::DB->direct_connect($dbi_str,
- $self->config->get("normal_username"),
- $self->config->get("normal_password"),
+ PXT::Config->get("db_user"),
+ PXT::Config->get("db_password"),
\%params);
$self->{dbh} = $dbh;