From f2c73853bca0b05468c1039d828ff3202fa73e19 Mon Sep 17 00:00:00 2001 From: Inex Code Date: Thu, 28 Apr 2022 16:22:13 +0300 Subject: [PATCH 1/4] Add migration to selfprivacy nix channel --- selfprivacy_api/app.py | 2 +- .../migrate_to_selfprivacy_channel.py | 47 +++++++++++++++++++ selfprivacy_api/resources/common.py | 2 +- setup.py | 2 +- 4 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 selfprivacy_api/migrations/migrate_to_selfprivacy_channel.py diff --git a/selfprivacy_api/app.py b/selfprivacy_api/app.py index ffc4788..03e86a1 100644 --- a/selfprivacy_api/app.py +++ b/selfprivacy_api/app.py @@ -68,7 +68,7 @@ def create_app(test_config=None): def spec(): if app.config["ENABLE_SWAGGER"] == "1": swag = swagger(app) - swag["info"]["version"] = "1.2.2" + swag["info"]["version"] = "1.2.3" swag["info"]["title"] = "SelfPrivacy API" swag["info"]["description"] = "SelfPrivacy API" swag["securityDefinitions"] = { diff --git a/selfprivacy_api/migrations/migrate_to_selfprivacy_channel.py b/selfprivacy_api/migrations/migrate_to_selfprivacy_channel.py new file mode 100644 index 0000000..b38e256 --- /dev/null +++ b/selfprivacy_api/migrations/migrate_to_selfprivacy_channel.py @@ -0,0 +1,47 @@ +import os +import subprocess + +from selfprivacy_api.migrations.migration import Migration + + +class MigrateToSelfprivacyChannel(Migration): + def get_migration_name(self): + return "migrate_to_selfprivacy_channel" + + def get_migration_description(self): + return "Migrate to selfprivacy Nix channel." + + def is_migration_needed(self): + try: + output = subprocess.check_output( + ["nix-channel", "--list"], start_new_session=True + ) + output = output.decode("utf-8") + first_line = output.split("\n", maxsplit=1)[0] + return first_line.startswith("nixos") and ( + first_line.endswith("nixos-21.11") or first_line.endswith("nixos-21.05") + ) + except subprocess.CalledProcessError: + return False + return False + + def migrate(self): + # Change the channel and update them. + # Also, go to /etc/nixos directory and make a git pull + current_working_directory = os.getcwd() + try: + os.chdir("/etc/nixos") + subprocess.check_output( + [ + "nix-channel", + "--add", + "https://channel.selfprivacy.org/nixos-selfpricacy", + "nixos", + ] + ) + subprocess.check_output(["nix-channel", "--update"]) + subprocess.check_output(["git", "pull"]) + os.chdir(current_working_directory) + except subprocess.CalledProcessError: + os.chdir(current_working_directory) + print("Error") diff --git a/selfprivacy_api/resources/common.py b/selfprivacy_api/resources/common.py index 1517438..2955165 100644 --- a/selfprivacy_api/resources/common.py +++ b/selfprivacy_api/resources/common.py @@ -23,4 +23,4 @@ class ApiVersion(Resource): 401: description: Unauthorized """ - return {"version": "1.2.2"} + return {"version": "1.2.3"} diff --git a/setup.py b/setup.py index 2501c3b..8f9f806 100755 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages setup( name="selfprivacy_api", - version="1.2.2", + version="1.2.3", packages=find_packages(), scripts=[ "selfprivacy_api/app.py", From ac220c69683a7ca3c9218cf732baffb9da8b0f1d Mon Sep 17 00:00:00 2001 From: Inex Code Date: Fri, 29 Apr 2022 14:24:25 +0300 Subject: [PATCH 2/4] some logging --- selfprivacy_api/migrations/migrate_to_selfprivacy_channel.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/selfprivacy_api/migrations/migrate_to_selfprivacy_channel.py b/selfprivacy_api/migrations/migrate_to_selfprivacy_channel.py index b38e256..5fe8c7b 100644 --- a/selfprivacy_api/migrations/migrate_to_selfprivacy_channel.py +++ b/selfprivacy_api/migrations/migrate_to_selfprivacy_channel.py @@ -5,6 +5,7 @@ from selfprivacy_api.migrations.migration import Migration class MigrateToSelfprivacyChannel(Migration): + """Migrate to selfprivacy Nix channel.""" def get_migration_name(self): return "migrate_to_selfprivacy_channel" @@ -13,11 +14,14 @@ class MigrateToSelfprivacyChannel(Migration): def is_migration_needed(self): try: + print("Checking if migration is needed") output = subprocess.check_output( ["nix-channel", "--list"], start_new_session=True ) output = output.decode("utf-8") + print(output) first_line = output.split("\n", maxsplit=1)[0] + print(first_line) return first_line.startswith("nixos") and ( first_line.endswith("nixos-21.11") or first_line.endswith("nixos-21.05") ) @@ -30,6 +34,7 @@ class MigrateToSelfprivacyChannel(Migration): # Also, go to /etc/nixos directory and make a git pull current_working_directory = os.getcwd() try: + print("Changing channel") os.chdir("/etc/nixos") subprocess.check_output( [ From f31b1173a229e91c5e0952e8dbb4cce9b4c8ddcd Mon Sep 17 00:00:00 2001 From: Inex Code Date: Fri, 29 Apr 2022 14:27:13 +0300 Subject: [PATCH 3/4] add migration to init --- selfprivacy_api/migrations/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/selfprivacy_api/migrations/__init__.py b/selfprivacy_api/migrations/__init__.py index 86ac342..1e58068 100644 --- a/selfprivacy_api/migrations/__init__.py +++ b/selfprivacy_api/migrations/__init__.py @@ -11,8 +11,9 @@ Adding DISABLE_ALL to that array disables the migrations module entirely. from selfprivacy_api.utils import ReadUserData from selfprivacy_api.migrations.fix_nixos_config_branch import FixNixosConfigBranch from selfprivacy_api.migrations.create_tokens_json import CreateTokensJson +from selfprivacy_api.migrations.migrate_to_selfprivacy_channel import MigrateToSelfprivacyChannel -migrations = [FixNixosConfigBranch(), CreateTokensJson()] +migrations = [FixNixosConfigBranch(), CreateTokensJson(), MigrateToSelfprivacyChannel()] def run_migrations(): From 3044557963c1edd505b421f6252763aa4b01bf49 Mon Sep 17 00:00:00 2001 From: Inex Code Date: Mon, 2 May 2022 10:59:04 +0300 Subject: [PATCH 4/4] Fix formatting --- selfprivacy_api/migrations/__init__.py | 4 +++- selfprivacy_api/migrations/migrate_to_selfprivacy_channel.py | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/selfprivacy_api/migrations/__init__.py b/selfprivacy_api/migrations/__init__.py index 1e58068..4eeebab 100644 --- a/selfprivacy_api/migrations/__init__.py +++ b/selfprivacy_api/migrations/__init__.py @@ -11,7 +11,9 @@ Adding DISABLE_ALL to that array disables the migrations module entirely. from selfprivacy_api.utils import ReadUserData from selfprivacy_api.migrations.fix_nixos_config_branch import FixNixosConfigBranch from selfprivacy_api.migrations.create_tokens_json import CreateTokensJson -from selfprivacy_api.migrations.migrate_to_selfprivacy_channel import MigrateToSelfprivacyChannel +from selfprivacy_api.migrations.migrate_to_selfprivacy_channel import ( + MigrateToSelfprivacyChannel, +) migrations = [FixNixosConfigBranch(), CreateTokensJson(), MigrateToSelfprivacyChannel()] diff --git a/selfprivacy_api/migrations/migrate_to_selfprivacy_channel.py b/selfprivacy_api/migrations/migrate_to_selfprivacy_channel.py index 5fe8c7b..5f98f39 100644 --- a/selfprivacy_api/migrations/migrate_to_selfprivacy_channel.py +++ b/selfprivacy_api/migrations/migrate_to_selfprivacy_channel.py @@ -6,6 +6,7 @@ from selfprivacy_api.migrations.migration import Migration class MigrateToSelfprivacyChannel(Migration): """Migrate to selfprivacy Nix channel.""" + def get_migration_name(self): return "migrate_to_selfprivacy_channel"