lib/pvcglue/packages/role_db.rb in pvcglue-0.1.24 vs lib/pvcglue/packages/role_db.rb in pvcglue-0.1.25
- old
+ new
@@ -36,9 +36,48 @@
run(%Q[sudo -u postgres psql -c "CREATE DATABASE #{db_name} WITH OWNER #{username}"])
run(%Q[sudo -u postgres psql #{db_name} -c "ALTER SCHEMA public OWNER TO #{username}"])
end
end
+package 'postgresql-app-stage-db-drop' do
+ apply do
+ username = Pvcglue.cloud.stage_env['DB_USER_POSTGRES_USERNAME']
+ db_name = username # just for clarity in later statements. This also must match database.yml.
+
+ sql = <<-SQL
+ UPDATE pg_catalog.pg_database
+ SET datallowconn=false WHERE datname='#{db_name}'
+ SQL
+ run(%Q[sudo -u postgres psql -c "#{sql}"])
+
+ # To simplify logic, try it with both versions.
+ # version >= 9.2
+ sql = <<-SQL
+ SELECT pg_terminate_backend(pg_stat_activity.pid)
+ FROM pg_stat_activity
+ WHERE pg_stat_activity.datname = '#{db_name}';
+ SQL
+ run(%Q[sudo -u postgres psql -c "#{sql}"])
+
+ # #puts "version < 9.2"
+ sql = <<-SQL
+ SELECT pg_terminate_backend(pg_stat_activity.procpid)
+ FROM pg_stat_activity
+ WHERE pg_stat_activity.datname = '#{db_name}';
+ SQL
+ run(%Q[sudo -u postgres psql -c "#{sql}"])
+
+ run(%Q[sudo -u postgres psql -c "DROP DATABASE #{db_name}"])
+
+ sql = <<-SQL
+ UPDATE pg_catalog.pg_database
+ SET datallowconn=true WHERE datname='#{db_name}'
+ SQL
+ run(%Q[sudo -u postgres psql -c "#{sql}"])
+
+ end
+end
+
package 'postgresql-root-password' do
apply do
# TODO: Use this to implement setting of the root password
# sudo(%q[sudo -u postgres psql -c "ALTER ROLE postgres WITH PASSWORD 'zzz';"])
end