From db112d99cd4c5586899d374ea774d0d922d3d0d3 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Wed, 8 Mar 2023 13:49:02 +0000 Subject: [PATCH] #989 netdisco-deploy and netdisco-db-deploy respect ND2_DB_ROLLBACK --- bin/netdisco-db-deploy | 5 +++++ bin/netdisco-deploy | 8 ++++++++ lib/App/Netdisco/Util/Statistics.pm | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/bin/netdisco-db-deploy b/bin/netdisco-db-deploy index 5972e290..6281b8a0 100755 --- a/bin/netdisco-db-deploy +++ b/bin/netdisco-db-deploy @@ -107,6 +107,10 @@ if ($pg_ver and $pg_ver < 90600) { die "\n"; } +# roll everything back if we're testing +my $txn_guard = $ENV{ND2_DB_ROLLBACK} + ? schema('netdisco')->storage->txn_scope_guard : undef; + if (scalar @ARGV and $ARGV[0] and $ARGV[0] eq '--redeploy-all') { $schema->storage->dbh_do( sub { @@ -156,4 +160,5 @@ for (my $i = $db_version; $i < $target_version; $i++) { }; } +undef $txn_guard if $ENV{ND2_DB_ROLLBACK}; exit 0; diff --git a/bin/netdisco-deploy b/bin/netdisco-deploy index 2b0da6a6..276541ab 100755 --- a/bin/netdisco-deploy +++ b/bin/netdisco-deploy @@ -176,6 +176,10 @@ sub deploy_db { } } + # roll everything back if we're testing + my $txn_guard = $ENV{ND2_DB_ROLLBACK} + ? schema('netdisco')->storage->txn_scope_guard : undef; + # set up initial admin user my $users = schema('netdisco')->resultset('User'); if ($users->search({-bool => 'admin'})->count == 0) { @@ -247,6 +251,10 @@ sub deploy_oui { } if ((scalar keys %data) > 15_000) { + # roll everything back if we're testing + my $txn_guard = $ENV{ND2_DB_ROLLBACK} + ? schema('netdisco')->storage->txn_scope_guard : undef; + $schema->txn_do(sub{ $schema->resultset('Oui')->delete; $schema->resultset('Oui')->populate([ diff --git a/lib/App/Netdisco/Util/Statistics.pm b/lib/App/Netdisco/Util/Statistics.pm index 87f7e958..6c4fa07f 100644 --- a/lib/App/Netdisco/Util/Statistics.pm +++ b/lib/App/Netdisco/Util/Statistics.pm @@ -36,6 +36,10 @@ sub update_stats { my $snmpinfo_ver = ($@ ? 'n/a' : $SNMP::Info::VERSION); my $postgres_ver = pretty_version($schema->storage->dbh->{pg_server_version}, 2); + # roll everything back if we're testing + my $txn_guard = $ENV{ND2_DB_ROLLBACK} + ? $schema->storage->txn_scope_guard : undef; + # TODO: (when we have the capabilities table?) # $stats{waps} = sql_scalar('device',['COUNT(*)'], {"model"=>"AIR%"});