aboutsummaryrefslogtreecommitdiff
path: root/perl/Wallet/Admin.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl/Wallet/Admin.pm')
-rw-r--r--perl/Wallet/Admin.pm49
1 files changed, 28 insertions, 21 deletions
diff --git a/perl/Wallet/Admin.pm b/perl/Wallet/Admin.pm
index c0b1730..9fc146c 100644
--- a/perl/Wallet/Admin.pm
+++ b/perl/Wallet/Admin.pm
@@ -39,8 +39,8 @@ our $BASE_VERSION = '0.07';
# Throw an exception if anything goes wrong.
sub new {
my ($class) = @_;
- my $dbh = Wallet::Schema->connect;
- my $self = { dbh => $dbh };
+ my $schema = Wallet::Schema->connect;
+ my $self = { schema => $schema };
bless ($self, $class);
return $self;
}
@@ -48,7 +48,13 @@ sub new {
# Returns the database handle (used mostly for testing).
sub dbh {
my ($self) = @_;
- return $self->{dbh};
+ return $self->{schema}->storage->dbh;
+}
+
+# Returns the DBIx::Class-based database schema object.
+sub schema {
+ my ($self) = @_;
+ return $self->{schema};
}
# Set or return the error stashed in the object.
@@ -66,7 +72,7 @@ sub error {
# Disconnect the database handle on object destruction to avoid warnings.
sub DESTROY {
my ($self) = @_;
- $self->{dbh}->storage->dbh->disconnect;
+ $self->{schema}->storage->dbh->disconnect;
}
##############################################################################
@@ -83,7 +89,7 @@ sub initialize {
# Deploy the database schema from DDL files, if they exist. If not then
# we automatically get the database from the Schema modules.
- $self->{dbh}->deploy ({}, $Wallet::Config::DB_DDL_DIRECTORY);
+ $self->{schema}->deploy ({}, $Wallet::Config::DB_DDL_DIRECTORY);
if ($@) {
$self->error ($@);
return;
@@ -91,7 +97,8 @@ sub initialize {
$self->default_data;
# Create a default admin ACL.
- my $acl = Wallet::ACL->create ('ADMIN', $self->{dbh}, $user, 'localhost');
+ my $acl = Wallet::ACL->create ('ADMIN', $self->{schema}, $user,
+ 'localhost');
unless ($acl->add ('krb5', $user, $user, 'localhost')) {
$self->error ($acl->error);
return;
@@ -106,7 +113,7 @@ sub default_data {
my ($self) = @_;
# acl_schemes default rows.
- my ($r1) = $self->{dbh}->resultset('AclScheme')->populate ([
+ my ($r1) = $self->{schema}->resultset('AclScheme')->populate ([
[ qw/as_name as_class/ ],
[ 'krb5', 'Wallet::ACL::Krb5' ],
[ 'krb5-regex', 'Wallet::ACL::Krb5::Regex' ],
@@ -120,7 +127,7 @@ sub default_data {
my @record = ([ qw/ty_name ty_class/ ],
[ 'file', 'Wallet::Object::File' ],
[ 'keytab', 'Wallet::Object::Keytab' ]);
- ($r1) = $self->{dbh}->resultset('Type')->populate (\@record);
+ ($r1) = $self->{schema}->resultset('Type')->populate (\@record);
warn "default Type not installed" unless defined $r1;
return 1;
@@ -141,13 +148,13 @@ sub destroy {
my ($self) = @_;
# Get an actual DBI handle and use it to delete all tables.
- my $real_dbh = $self->{dbh}->storage->dbh;
+ my $dbh = $self->dbh;
my @tables = qw/acls acl_entries acl_history acl_schemes enctypes
flags keytab_enctypes keytab_sync objects object_history
sync_targets types dbix_class_schema_versions/;
for my $table (@tables) {
my $sql = "DROP TABLE IF EXISTS $table";
- $real_dbh->do ($sql);
+ $dbh->do ($sql);
}
return 1;
@@ -160,9 +167,9 @@ sub backup {
my @dbs = qw/MySQL SQLite PostgreSQL/;
my $version = $Wallet::Schema::VERSION;
- $self->{dbh}->create_ddl_dir (\@dbs, $version,
- $Wallet::Config::DB_DDL_DIRECTORY,
- $oldversion);
+ $self->{schema}->create_ddl_dir (\@dbs, $version,
+ $Wallet::Config::DB_DDL_DIRECTORY,
+ $oldversion);
return 1;
}
@@ -174,8 +181,8 @@ sub upgrade {
# Check to see if the database is versioned. If not, install the
# versioning table and default version.
- if (!$self->{dbh}->get_db_version) {
- $self->{dbh}->install ($BASE_VERSION);
+ if (!$self->{schema}->get_db_version) {
+ $self->{schema}->install ($BASE_VERSION);
}
# Suppress warnings that actually are just informational messages.
@@ -187,8 +194,8 @@ sub upgrade {
};
# Perform the actual upgrade.
- if ($self->{dbh}->get_db_version) {
- eval { $self->{dbh}->upgrade; };
+ if ($self->{schema}->get_db_version) {
+ eval { $self->{schema}->upgrade; };
}
if ($@) {
$self->error ($@);
@@ -210,10 +217,10 @@ sub upgrade {
sub register_object {
my ($self, $type, $class) = @_;
eval {
- my $guard = $self->{dbh}->txn_scope_guard;
+ my $guard = $self->{schema}->txn_scope_guard;
my %record = (ty_name => $type,
ty_class => $class);
- $self->{dbh}->resultset('Type')->create (\%record);
+ $self->{schema}->resultset('Type')->create (\%record);
$guard->commit;
};
if ($@) {
@@ -230,10 +237,10 @@ sub register_object {
sub register_verifier {
my ($self, $scheme, $class) = @_;
eval {
- my $guard = $self->{dbh}->txn_scope_guard;
+ my $guard = $self->{schema}->txn_scope_guard;
my %record = (as_name => $scheme,
as_class => $class);
- $self->{dbh}->resultset('AclScheme')->create (\%record);
+ $self->{schema}->resultset('AclScheme')->create (\%record);
$guard->commit;
};
if ($@) {