Commit b7b9f11c authored by Jennifer Graul's avatar Jennifer Graul Committed by Yureka
Browse files

irrd: init at 4.3.0.post1



Co-authored-by: default avatarYureka <yuka@yuka.dev>
parent f7b797b4
Loading
Loading
Loading
Loading
+159 −0
Original line number Diff line number Diff line
{ lib
, python3
, fetchPypi
, git
, postgresql
, postgresqlTestHook
, redis
}:

let
  py = python3.override {
    packageOverrides = final: prev: {
      sqlalchemy = prev.sqlalchemy.overridePythonAttrs (oldAttrs: rec {
        version = "1.3.24";
        src = fetchPypi {
          inherit (oldAttrs) pname;
          inherit version;
          hash = "sha256-67t3fL+TEjWbiXv4G6ANrg9ctp+6KhgmXcwYpvXvdRk=";
        };
        doCheck = false;
      });
      starlette = prev.starlette.overridePythonAttrs (oldAttrs: rec {
        version = "0.20.4";
        src = fetchPypi {
          inherit (oldAttrs) pname;
          inherit version;
          hash = "sha256-QvzzEi+Zj+/OPixa1+Xtvw8Cz2hdZGqDoI1ARyavUIQ=";
        };
        nativeBuildInputs = with final; [
          setuptools
        ];
        doCheck = false;
      });
      ariadne = prev.ariadne.overridePythonAttrs (oldAttrs: rec {
        version = "0.17.1";
        src = fetchPypi {
          inherit (oldAttrs) pname;
          inherit version;
          hash = "sha256-B98wl/NkNOyq99AKsVQem9TZ0meOnvg7IdWIEAI2vy8=";
        };
        nativeBuildInputs = with final; [
          setuptools
        ];
        doCheck = false;
      });
      alembic = prev.alembic.overridePythonAttrs (lib.const {
        doCheck = false;
      });
      beautifultable = prev.beautifultable.overridePythonAttrs (oldAttrs: rec {
        version = "0.8.0";
        src = fetchPypi {
          inherit (oldAttrs) pname;
          inherit version;
          hash = "sha256-1E2VUbvte/qIZ1Mk+E77mqhXOE1E6fsh61MPCgutuBU=";
        };
        doCheck = false;
      });
    };
  };
in

py.pkgs.buildPythonPackage rec {
  pname = "irrd";
  version = "4.3.0.post1";
  format = "setuptools";

  src = fetchPypi {
    inherit pname version;
    hash = "sha256-hayfdcYAgIopfUiAR/AUWMuTzwpXvXuq6iPp9uhWN1M=";
  };

  patches = [
    ./irrd-asgiref-3.8.0.diff
  ];

  pythonRelaxDeps = true;
  nativeBuildInputs = with python3.pkgs; [
    pythonRelaxDepsHook
  ];
  postPatch = ''
    substituteInPlace setup.py --replace psycopg2-binary psycopg2
  '';

  nativeCheckInputs = [
    git
    redis
    postgresql
    postgresqlTestHook
  ] ++ (with py.pkgs; [
    pytest-asyncio
    pytest-freezegun
    pytestCheckHook
  ]);

  propagatedBuildInputs = with py.pkgs; [
    python-gnupg
    passlib
    bcrypt
    ipy
    ordered-set
    beautifultable
    pyyaml
    datrie
    setproctitle
    python-daemon
    pid
    py.pkgs.redis
    hiredis
    coredis
    requests
    pytz
    ariadne
    uvicorn
    starlette
    psutil
    asgiref
    pydantic
    typing-extensions
    py-radix-sr
    psycopg2
    sqlalchemy
    alembic
    ujson
    wheel
    websockets
  ] ++ py.pkgs.uvicorn.optional-dependencies.standard;

  preCheck = ''
    redis-server &
    REDIS_PID=$!

    while ! redis-cli --scan ; do
      echo waiting for redis
      sleep 1
    done

    export IRRD_DATABASE_URL="postgres:///$PGDATABASE"
    export IRRD_REDIS_URL="redis://localhost/1"
  '';

  postCheck = ''
    kill $REDIS_PID
  '';

  # skip tests that require internet access
  disabledTests = [
    "test_020_dash_o_noop"
    "test_050_non_json_response"
  ];

  meta = with lib; {
    changelog = "https://irrd.readthedocs.io/en/v${version}/releases/";
    description = "An Internet Routing Registry database server, processing IRR objects in the RPSL format";
    license = licenses.mit;
    homepage = "https://github.com/irrdnet/irrd";
    maintainers = with maintainers; [ netali yuka ];
  };
}
+51 −0
Original line number Diff line number Diff line
diff --git a/irrd/server/graphql/schema_builder.py b/irrd/server/graphql/schema_builder.py
index 65ddf5d..b3b385a 100644
--- a/irrd/server/graphql/schema_builder.py
+++ b/irrd/server/graphql/schema_builder.py
@@ -31,32 +31,32 @@ def build_executable_schema():
     """
     schema = SchemaGenerator()
 
-    schema.rpsl_object_type.set_type_resolver(sta(resolve_rpsl_object_type, False))
-    schema.rpsl_contact_union_type.set_type_resolver(sta(resolve_rpsl_object_type, False))
+    schema.rpsl_object_type.set_type_resolver(sta(resolve_rpsl_object_type, thread_sensitive=False))
+    schema.rpsl_contact_union_type.set_type_resolver(sta(resolve_rpsl_object_type, thread_sensitive=False))
 
-    schema.query_type.set_field("rpslObjects", sta(resolve_rpsl_objects, False))
-    schema.query_type.set_field("databaseStatus", sta(resolve_database_status, False))
-    schema.query_type.set_field("asnPrefixes", sta(resolve_asn_prefixes, False))
-    schema.query_type.set_field("asSetPrefixes", sta(resolve_as_set_prefixes, False))
-    schema.query_type.set_field("recursiveSetMembers", sta(resolve_recursive_set_members, False))
+    schema.query_type.set_field("rpslObjects", sta(resolve_rpsl_objects, thread_sensitive=False))
+    schema.query_type.set_field("databaseStatus", sta(resolve_database_status, thread_sensitive=False))
+    schema.query_type.set_field("asnPrefixes", sta(resolve_asn_prefixes, thread_sensitive=False))
+    schema.query_type.set_field("asSetPrefixes", sta(resolve_as_set_prefixes, thread_sensitive=False))
+    schema.query_type.set_field("recursiveSetMembers", sta(resolve_recursive_set_members, thread_sensitive=False))
 
-    schema.rpsl_object_type.set_field("mntByObjs", sta(resolve_rpsl_object_mnt_by_objs, False))
-    schema.rpsl_object_type.set_field("journal", sta(resolve_rpsl_object_journal, False))
+    schema.rpsl_object_type.set_field("mntByObjs", sta(resolve_rpsl_object_mnt_by_objs, thread_sensitive=False))
+    schema.rpsl_object_type.set_field("journal", sta(resolve_rpsl_object_journal, thread_sensitive=False))
     for object_type in schema.object_types:
         if "adminCObjs" in schema.graphql_types[object_type.name]:
-            object_type.set_field("adminCObjs", sta(resolve_rpsl_object_adminc_objs, False))
+            object_type.set_field("adminCObjs", sta(resolve_rpsl_object_adminc_objs, thread_sensitive=False))
     for object_type in schema.object_types:
         if "techCObjs" in schema.graphql_types[object_type.name]:
-            object_type.set_field("techCObjs", sta(resolve_rpsl_object_techc_objs, False))
+            object_type.set_field("techCObjs", sta(resolve_rpsl_object_techc_objs, thread_sensitive=False))
     for object_type in schema.object_types:
         if "mbrsByRefObjs" in schema.graphql_types[object_type.name]:
-            object_type.set_field("mbrsByRefObjs", sta(resolve_rpsl_object_members_by_ref_objs, False))
+            object_type.set_field("mbrsByRefObjs", sta(resolve_rpsl_object_members_by_ref_objs, thread_sensitive=False))
     for object_type in schema.object_types:
         if "memberOfObjs" in schema.graphql_types[object_type.name]:
-            object_type.set_field("memberOfObjs", sta(resolve_rpsl_object_member_of_objs, False))
+            object_type.set_field("memberOfObjs", sta(resolve_rpsl_object_member_of_objs, thread_sensitive=False))
     for object_type in schema.object_types:
         if "membersObjs" in schema.graphql_types[object_type.name]:
-            object_type.set_field("membersObjs", sta(resolve_rpsl_object_members_objs, False))
+            object_type.set_field("membersObjs", sta(resolve_rpsl_object_members_objs, thread_sensitive=False))
 
     @schema.asn_scalar_type.value_parser
     def parse_asn_scalar(value):
+2 −0
Original line number Diff line number Diff line
@@ -9220,6 +9220,8 @@ with pkgs;
  iroh = callPackage ../applications/networking/iroh { };
  irrd = callPackage ../servers/misc/irrd { };
  ised = callPackage ../tools/misc/ised { };
  isl = isl_0_20;