diff --git a/.gitignore b/.gitignore index 7941396..7f93e02 100755 --- a/.gitignore +++ b/.gitignore @@ -147,3 +147,4 @@ cython_debug/ # End of https://www.toptal.com/developers/gitignore/api/flask *.db +*.rdb diff --git a/api.nix b/api.nix deleted file mode 100644 index 83bc695..0000000 --- a/api.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ lib, python39Packages }: -with python39Packages; -buildPythonApplication { - pname = "selfprivacy-api"; - version = "2.0.0"; - - propagatedBuildInputs = [ - setuptools - portalocker - pytz - pytest - pytest-mock - pytest-datadir - huey - gevent - mnemonic - pydantic - typing-extensions - psutil - fastapi - uvicorn - (buildPythonPackage rec { - pname = "strawberry-graphql"; - version = "0.123.0"; - format = "pyproject"; - patches = [ - ./strawberry-graphql.patch - ]; - propagatedBuildInputs = [ - typing-extensions - python-multipart - python-dateutil - # flask - pydantic - pygments - poetry - # flask-cors - (buildPythonPackage rec { - pname = "graphql-core"; - version = "3.2.0"; - format = "setuptools"; - src = fetchPypi { - inherit pname version; - sha256 = "sha256-huKgvgCL/eGe94OI3opyWh2UKpGQykMcJKYIN5c4A84="; - }; - checkInputs = [ - pytest-asyncio - pytest-benchmark - pytestCheckHook - ]; - pythonImportsCheck = [ - "graphql" - ]; - }) - ]; - src = fetchPypi { - inherit pname version; - sha256 = "KsmZ5Xv8tUg6yBxieAEtvoKoRG60VS+iVGV0X6oCExo="; - }; - }) - ]; - - src = ./.; -} diff --git a/default.nix b/default.nix deleted file mode 100644 index 740c7ce..0000000 --- a/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -{ pkgs ? import {} }: -pkgs.callPackage ./api.nix {} diff --git a/selfprivacy_api/dependencies.py b/selfprivacy_api/dependencies.py index 3284fd8..d7b12fe 100644 --- a/selfprivacy_api/dependencies.py +++ b/selfprivacy_api/dependencies.py @@ -27,4 +27,4 @@ async def get_token_header( def get_api_version() -> str: """Get API version""" - return "2.1.2" + return "2.1.3" diff --git a/selfprivacy_api/migrations/__init__.py b/selfprivacy_api/migrations/__init__.py index adb7d24..33472b9 100644 --- a/selfprivacy_api/migrations/__init__.py +++ b/selfprivacy_api/migrations/__init__.py @@ -22,6 +22,9 @@ from selfprivacy_api.migrations.providers import CreateProviderFields from selfprivacy_api.migrations.prepare_for_nixos_2211 import ( MigrateToSelfprivacyChannelFrom2205, ) +from selfprivacy_api.migrations.prepare_for_nixos_2305 import ( + MigrateToSelfprivacyChannelFrom2211, +) migrations = [ FixNixosConfigBranch(), @@ -31,6 +34,7 @@ migrations = [ CheckForFailedBindsMigration(), CreateProviderFields(), MigrateToSelfprivacyChannelFrom2205(), + MigrateToSelfprivacyChannelFrom2211(), ] diff --git a/selfprivacy_api/migrations/prepare_for_nixos_2305.py b/selfprivacy_api/migrations/prepare_for_nixos_2305.py new file mode 100644 index 0000000..d9fed28 --- /dev/null +++ b/selfprivacy_api/migrations/prepare_for_nixos_2305.py @@ -0,0 +1,58 @@ +import os +import subprocess + +from selfprivacy_api.migrations.migration import Migration + + +class MigrateToSelfprivacyChannelFrom2211(Migration): + """Migrate to selfprivacy Nix channel. + For some reason NixOS 22.11 servers initialized with the nixos channel instead of selfprivacy. + This stops us from upgrading to NixOS 23.05 + """ + + def get_migration_name(self): + return "migrate_to_selfprivacy_channel_from_2211" + + def get_migration_description(self): + return "Migrate to selfprivacy Nix channel from NixOS 22.11." + + 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-22.11") + ) + except subprocess.CalledProcessError: + 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: + print("Changing channel") + os.chdir("/etc/nixos") + subprocess.check_output( + [ + "nix-channel", + "--add", + "https://channel.selfprivacy.org/nixos-selfpricacy", + "nixos", + ] + ) + subprocess.check_output(["nix-channel", "--update"]) + nixos_config_branch = subprocess.check_output( + ["git", "rev-parse", "--abbrev-ref", "HEAD"], start_new_session=True + ) + if nixos_config_branch.decode("utf-8").strip() == "api-redis": + print("Also changing nixos-config branch from api-redis to master") + subprocess.check_output(["git", "checkout", "master"]) + subprocess.check_output(["git", "pull"]) + os.chdir(current_working_directory) + except subprocess.CalledProcessError: + os.chdir(current_working_directory) + print("Error") diff --git a/setup.py b/setup.py index 51606b6..d20bf9a 100755 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages setup( name="selfprivacy_api", - version="2.1.2", + version="2.1.3", packages=find_packages(), scripts=[ "selfprivacy_api/app.py",