[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [OSSTEST PATCH 6/7] Schema: Check that schema creation and update runs as the right user
Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> --- Osstest/Executive.pm | 1 + README | 5 +++++ mg-schema-create | 4 +++- mg-schema-test-database | 1 + mg-schema-update | 16 ++++++++++++++++ 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Osstest/Executive.pm b/Osstest/Executive.pm index e1fbe3b..f2d29ef 100644 --- a/Osstest/Executive.pm +++ b/Osstest/Executive.pm @@ -105,6 +105,7 @@ augmentconfigdefaults( QueuePlanUpdateInterval => 300, # seconds Repos => "$ENV{'HOME'}/repos", BisectionRevisonGraphSize => '600x300', + ExecutiveDbOwningRoleRegexp => 'osstest', ); augmentconfigdefaults( diff --git a/README b/README index 5740ac0..0a346dc 100644 --- a/README +++ b/README @@ -571,6 +571,11 @@ ExecutiveDbname_<DB> PostgreSQL dbname string for the database <DB>. Default is to use ExecutiveDbnamePat. +ExecutiveDbOwningRoleRegexp + Regexp which is supposed to match the database user used for schema + changes - because, that role will end up owning the database objects. + Defaults to `osstest'. + Adhoc/Custom Flights ==================== diff --git a/mg-schema-create b/mg-schema-create index 1ee007b..df5e215 100755 --- a/mg-schema-create +++ b/mg-schema-create @@ -25,7 +25,7 @@ # do CREATE DATABASE.) # # When setting up a production database, mg-schema-create should -# be run *AS THE ROLE USER* who is to own all the resources. +# be run as the role user who is to own all the resources. # # Options: # @@ -70,6 +70,8 @@ export OSSTEST_DB_USEREAL_IGNORETEST='.*' . ./cri-getconfig +./mg-schema-update $quietopt check-user + $progress "Populating database..." $(get_psql_cmd) $quietopt -f schema/initial.sql diff --git a/mg-schema-test-database b/mg-schema-test-database index 5c6a935..bf82c75 100755 --- a/mg-schema-test-database +++ b/mg-schema-test-database @@ -335,6 +335,7 @@ OwnerDaemonHost $ctrlhost QueueDaemonHost $ctrlhost OwnerDaemonPort ${ctrlports%,*} QueueDaemonPort ${ctrlports#*,} +ExecutiveDbOwningRoleRegexp .* END mv -f $tcfg.tmp $tcfg diff --git a/mg-schema-update b/mg-schema-update index a617c3b..f699180 100755 --- a/mg-schema-update +++ b/mg-schema-update @@ -22,6 +22,7 @@ # ./mg-schema-update [<options>] apply [<updatename>...] # ./mg-schema-update [<options>] show # ./mg-schema-update [<options>] apply-all +# ./mg-schema-update [<options>] check-user # # Usual rune for applying updates: # @@ -119,6 +120,13 @@ sub getstate () { @state = sort { $a->{Sortkey} <=> $b->{Sortkey} } values %state; } +sub check_user () { + my $user = $dbh_tests->{pg_user}; + my $re = $c{ExecutiveDbOwningRoleRegexp}; + return if $user =~ m/^$re$/o; + die "running as wrong user \`$user', expected to match \`$re'\n"; +} + sub cmd_list_applied () { die if @ARGV; getstate(); @@ -170,6 +178,8 @@ sub applyone ($) { die "Will not apply $v->{Name}.sql: $v->{Msg}\n" unless want_apply($v); + check_user(); + my $fn = $v->{File}; db_retry($dbh_tests, \@all_lock_tables, sub { @@ -242,6 +252,12 @@ sub cmd_apply_all () { print "Appropriate updates applied.\n" unless $quiet; } +sub cmd_check_user () { + die "too many arguments\n" if @ARGV>1; + $c{ExecutiveDbOwningRoleRegexp} = shift @ARGV if @ARGV; + check_user(); +} + GetOptions('f|force+' => \$force, 'q+' => \$quiet, 'o|oldest=s' => \$there); -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |