mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Check available space in /var/lib/postgresql before running postgresql migration
This commit is contained in:
parent
e11730c1e3
commit
18330ab042
3 changed files with 8 additions and 4 deletions
|
@ -242,6 +242,7 @@
|
|||
"migration_0003_modified_files": "Please note that the following files were found to be manually modified and might be overwritten at the end of the upgrade : {manually_modified_files}",
|
||||
"migration_0005_postgresql_94_not_installed": "Postgresql was not installed on your system. Nothing to do!",
|
||||
"migration_0005_postgresql_96_not_installed": "Postgresql 9.4 has been found to be installed, but not postgresql 9.6 !? Something weird might have happened on your system :( ...",
|
||||
"migration_0005_not_enough_space": "Not enough space is available in {path} to run the migration right now :(.",
|
||||
"migrations_backward": "Migrating backward.",
|
||||
"migrations_bad_value_for_target": "Invalid number for target argument, available migrations numbers are 0 or {}",
|
||||
"migrations_cant_reach_migration_file": "Can't access migrations files at path %s",
|
||||
|
|
|
@ -5,6 +5,7 @@ from moulinette.core import MoulinetteError
|
|||
from moulinette.utils.log import getActionLogger
|
||||
|
||||
from yunohost.tools import Migration
|
||||
from yunohost.utils.filesystem import free_space_in_directory, space_used_by_directory
|
||||
|
||||
logger = getActionLogger('yunohost.migration')
|
||||
|
||||
|
@ -12,7 +13,6 @@ logger = getActionLogger('yunohost.migration')
|
|||
class MyMigration(Migration):
|
||||
"Migrate DBs from Postgresql 9.4 to 9.6 after migrating to Stretch"
|
||||
|
||||
|
||||
def migrate(self):
|
||||
|
||||
if not self.package_is_installed("postgresql-9.4"):
|
||||
|
@ -22,8 +22,8 @@ class MyMigration(Migration):
|
|||
if not self.package_is_installed("postgresql-9.6"):
|
||||
raise MoulinetteError(m18n.n("migration_0005_postgresql_96_not_installed"))
|
||||
|
||||
# FIXME / TODO : maybe add checks about the size of
|
||||
# /var/lib/postgresql/9.4/main/base/ compared to available space ?
|
||||
if not space_used_by_directory("/var/lib/postgresql/9.4") < free_space_in_directory("/var/lib/postgresql"):
|
||||
raise MoulinetteError(m18n.n("migration_0005_not_enough_space", path="/var/lib/postgresql/"))
|
||||
|
||||
subprocess.check_call("service postgresql stop", shell=True)
|
||||
subprocess.check_call("pg_dropcluster --stop 9.6 main", shell=True)
|
||||
|
@ -35,7 +35,6 @@ class MyMigration(Migration):
|
|||
|
||||
pass
|
||||
|
||||
|
||||
def package_is_installed(self, package_name):
|
||||
|
||||
p = subprocess.Popen("dpkg --list | grep -q -w {}".format(package_name), shell=True)
|
||||
|
|
|
@ -23,3 +23,7 @@ import os
|
|||
def free_space_in_directory(dirpath):
|
||||
stat = os.statvfs(dirpath)
|
||||
return stat.f_frsize * stat.f_bavail
|
||||
|
||||
def space_used_by_directory(dirpath):
|
||||
stat = os.statvfs(dirpath)
|
||||
return stat.f_frsize * stat.f_blocks
|
||||
|
|
Loading…
Add table
Reference in a new issue