Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: irrdnet/irrd
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v4.3.3
Choose a base ref
...
head repository: irrdnet/irrd
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref

Commits on Feb 23, 2023

  1. Copy the full SHA
    993e2ac View commit details
  2. Bump main to 4.4-dev

    mxsasha committed Feb 23, 2023
    Copy the full SHA
    7b19714 View commit details
  3. Copy the full SHA
    e1d2368 View commit details
  4. Copy the full SHA
    eceffc6 View commit details
  5. Copy the full SHA
    f17b67d View commit details
  6. Copy the full SHA
    f61b346 View commit details
  7. Copy the full SHA
    f3afd08 View commit details
  8. Run isort

    mxsasha committed Feb 23, 2023
    Copy the full SHA
    8cf25a1 View commit details
  9. Add ruff and isort settings

    mxsasha committed Feb 23, 2023
    Copy the full SHA
    df68b22 View commit details
  10. Copy the full SHA
    1c4f366 View commit details
  11. Copy the full SHA
    ebd6f32 View commit details
  12. Copy the full SHA
    7152737 View commit details
  13. Fix test coverage issue

    mxsasha committed Feb 23, 2023
    Copy the full SHA
    da71804 View commit details
  14. Copy the full SHA
    c00e73c View commit details
  15. Switch to poetry (#760)

    mxsasha authored Feb 23, 2023
    Copy the full SHA
    34ce09c View commit details
  16. Copy the full SHA
    bd3f8af View commit details

Commits on Mar 6, 2023

  1. Add FTP mirroring timeout (#763)

    Co-authored-by: Sasha Romijn <github@mxsasha.eu>
    alopintsev and mxsasha authored Mar 6, 2023
    Copy the full SHA
    a5c2f2b View commit details
  2. Copy the full SHA
    a52d2b6 View commit details

Commits on Mar 31, 2023

  1. Copy the full SHA
    33fd058 View commit details
  2. Fix doc build failure (#770)

    mxsasha authored Mar 31, 2023
    Copy the full SHA
    22acf53 View commit details
  3. Bump redis from 4.5.1 to 4.5.4 (#769)

    Bumps [redis](https://github.com/redis/redis-py) from 4.5.1 to 4.5.4.
    - [Release notes](https://github.com/redis/redis-py/releases)
    - [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
    - [Commits](redis/redis-py@v4.5.1...v4.5.4)
    
    ---
    updated-dependencies:
    - dependency-name: redis
      dependency-type: direct:production
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Mar 31, 2023
    Copy the full SHA
    555c327 View commit details

Commits on Apr 11, 2023

  1. Disable routepref filter_prefixes for large filter sets

    When using filter_prefixes, we run one SQL query per prefix,
    which has overhead for large sets. This ignored it when there
    are >5000.
    mxsasha committed Apr 11, 2023
    Copy the full SHA
    97cbd22 View commit details
  2. Copy the full SHA
    a6c01f4 View commit details

Commits on Apr 17, 2023

  1. Copy the full SHA
    d495aa1 View commit details

Commits on Apr 19, 2023

  1. Fix #774 - Fix NRTM generator performance on PyPy (#777)

    Apparently, PyPy deals quite poorly when extending the same string many times, as the old code did. More details in #774 / #777.
    mxsasha authored Apr 19, 2023
    Copy the full SHA
    87bceb8 View commit details
  2. Copy the full SHA
    4b041ee View commit details

Commits on Apr 25, 2023

  1. Copy the full SHA
    501bf85 View commit details
  2. Copy the full SHA
    b0d8db9 View commit details
  3. Dependency updates (#785)

    Includes a number of fixes for Starlette API and test client changes.
    mxsasha authored Apr 25, 2023
    Copy the full SHA
    024867c View commit details

Commits on Apr 26, 2023

  1. Copy the full SHA
    8ac8a30 View commit details
  2. Copy the full SHA
    b4df6f9 View commit details
  3. Copy the full SHA
    572d903 View commit details

Commits on May 4, 2023

  1. Copy the full SHA
    78e00d7 View commit details
  2. Copy the full SHA
    1f983de View commit details

Commits on May 5, 2023

  1. Copy the full SHA
    b828eaa View commit details

Commits on May 16, 2023

  1. Copy the full SHA
    2d95984 View commit details

Commits on Jun 5, 2023

  1. Copy the full SHA
    1bd0d03 View commit details
  2. Copy the full SHA
    5c11e4a View commit details
  3. Copy the full SHA
    ce3526f View commit details

Commits on Jun 9, 2023

  1. Copy the full SHA
    c424447 View commit details
  2. Copy the full SHA
    8c543d8 View commit details

Commits on Jun 28, 2023

  1. Copy the full SHA
    abc74a1 View commit details

Commits on Jun 29, 2023

  1. Ref #617 - Add change log (#807)

    mxsasha authored Jun 29, 2023
    Copy the full SHA
    800ce07 View commit details

Commits on Jul 13, 2023

  1. Add new sync method to support #617 using txid poller to fix #656 (#811)

    Renames database_readonly to readonly_standby as an intentional breaking change due to additional setup requirements.
    mxsasha authored Jul 13, 2023
    Copy the full SHA
    ca8f412 View commit details

Commits on Jul 14, 2023

  1. Copy the full SHA
    9128d5c View commit details

Commits on Jul 17, 2023

  1. Documentation updates and fixes (#812)

    Add recent new features to 4.4 release notes, some other doc fixes
    mxsasha authored Jul 17, 2023
    Copy the full SHA
    7cbf680 View commit details

Commits on Jul 19, 2023

  1. Copy the full SHA
    0b73622 View commit details

Commits on Aug 1, 2023

  1. Bump pyyaml to 6.0.1 (#816)

    * Bump pyyaml to 6.0.1
    
    Temporary workaround for wheel build issue on Cython versions >= 3 (yaml/pyyaml#702)
    
    * Pin black to prevent breakage on updates
    MattKobayashi authored Aug 1, 2023
    Copy the full SHA
    383dfbd View commit details
  2. Copy the full SHA
    4ddc6d9 View commit details
  3. fix compatibility with asgiref >=3.7.0

    sync_to_async no longer accepts thread_sensitive as an unnamed parameter.
    django/asgiref@72f45c5
    yu-re-ka authored and mxsasha committed Aug 1, 2023
    Copy the full SHA
    900f7ff View commit details
Showing with 52,069 additions and 10,955 deletions.
  1. +62 −145 .circleci/config.yml
  2. +0 −1 .coveragerc
  3. +18 −0 .git-blame-ignore-revs
  4. +89 −0 .github/workflows/codeql.yml
  5. +21 −2 .mergify.yml
  6. +25 −0 .readthedocs.yaml
  7. +54 −0 LICENSE
  8. +7 −3 SECURITY.rst
  9. +88 −2 conftest.py
  10. +419 −0 docs/_templates/base.html
  11. +240 −158 docs/admins/availability-and-migration.rst
  12. +161 −34 docs/admins/configuration.rst
  13. +48 −23 docs/admins/deployment.rst
  14. +5 −5 docs/admins/faq.rst
  15. +3 −2 docs/admins/object-validation.rst
  16. +179 −0 docs/admins/prometheus-metrics.rst
  17. +13 −9 docs/admins/status_page.rst
  18. +2 −1 docs/admins/suspension.rst
  19. +104 −0 docs/admins/webui.rst
  20. +34 −13 docs/conf.py
  21. +8 −8 docs/development/architecture.rst
  22. +20 −17 docs/development/development-setup.rst
  23. +9 −9 docs/development/storage.rst
  24. +2 −5 docs/index.rst
  25. +9 −0 docs/releases/4.2.8.rst
  26. +12 −0 docs/releases/4.2.9.rst
  27. +14 −4 docs/releases/4.3.0.rst
  28. +17 −0 docs/releases/4.3.1.rst
  29. +13 −0 docs/releases/4.3.2.rst
  30. +9 −0 docs/releases/4.3.3.rst
  31. +190 −0 docs/releases/4.4.0.rst
  32. +9 −0 docs/releases/4.4.1.rst
  33. +8 −0 docs/releases/4.4.2.rst
  34. +15 −0 docs/releases/4.4.3.rst
  35. +15 −0 docs/releases/4.4.4.rst
  36. +83 −0 docs/releases/4.5.0.rst
  37. +31 −16 docs/spelling_wordlist.txt
  38. +50 −5 docs/users/database-changes.rst
  39. +188 −41 docs/users/mirroring.rst
  40. +6 −4 docs/users/queries/event-stream.rst
  41. +31 −19 docs/users/queries/graphql.rst
  42. +3 −2 docs/users/queries/index.rst
  43. +14 −10 docs/users/queries/whois.rst
  44. +5 −2 irrd/__init__.py
  45. +392 −167 irrd/conf/__init__.py
  46. +2 −0 irrd/conf/default_config.yaml
  47. +8 −1 irrd/conf/defaults.py
  48. +106 −90 irrd/conf/known_keys.py
  49. +358 −254 irrd/conf/test_conf.py
  50. +110 −70 irrd/daemon/main.py
  51. +4 −4 irrd/integration_tests/constants.py
  52. +651 −528 irrd/integration_tests/run.py
  53. +45 −0 irrd/mirroring/jobs.py
  54. +29 −27 irrd/mirroring/mirror_runners_export.py
  55. +143 −183 irrd/mirroring/mirror_runners_import.py
  56. +1 −0 irrd/mirroring/nrtm4/__init__.py
  57. +52 −0 irrd/mirroring/nrtm4/jsonseq.py
  58. +410 −0 irrd/mirroring/nrtm4/nrtm4_client.py
  59. +384 −0 irrd/mirroring/nrtm4/nrtm4_server.py
  60. +154 −0 irrd/mirroring/nrtm4/nrtm4_types.py
  61. +22 −0 irrd/mirroring/nrtm4/tests/__init__.py
  62. +22 −0 irrd/mirroring/nrtm4/tests/test_jsonseq.py
  63. +631 −0 irrd/mirroring/nrtm4/tests/test_nrtm4_client.py
  64. +275 −0 irrd/mirroring/nrtm4/tests/test_nrtm4_server.py
  65. +229 −0 irrd/mirroring/nrtm4/tests/test_nrtm4_types.py
  66. +80 −31 irrd/mirroring/nrtm_generator.py
  67. +84 −42 irrd/mirroring/nrtm_operation.py
  68. +167 −122 irrd/mirroring/parsers.py
  69. +152 −0 irrd/mirroring/retrieval.py
  70. +96 −65 irrd/mirroring/scheduler.py
  71. +57 −0 irrd/mirroring/tests/test_jobs.py
  72. +106 −99 irrd/mirroring/tests/test_mirror_runners_export.py
  73. +442 −312 irrd/mirroring/tests/test_mirror_runners_import.py
  74. +172 −68 irrd/mirroring/tests/test_nrtm_generator.py
  75. +43 −38 irrd/mirroring/tests/test_nrtm_operation.py
  76. +185 −152 irrd/mirroring/tests/test_parsers.py
  77. +21 −0 irrd/mirroring/tests/test_retrieval.py
  78. +178 −112 irrd/mirroring/tests/test_scheduler.py
  79. +27 −10 irrd/routepref/routepref.py
  80. +52 −3 irrd/routepref/tests/test_routepref.py
  81. +65 −52 irrd/rpki/importer.py
  82. +45 −32 irrd/rpki/notifications.py
  83. +3 −3 irrd/rpki/status.py
  84. +186 −156 irrd/rpki/tests/test_importer.py
  85. +72 −45 irrd/rpki/tests/test_notifications.py
  86. +291 −249 irrd/rpki/tests/test_validators.py
  87. +49 −39 irrd/rpki/validators.py
  88. +71 −0 irrd/rpsl/auth.py
  89. +246 −129 irrd/rpsl/fields.py
  90. +117 −79 irrd/rpsl/parser.py
  91. +24 −15 irrd/rpsl/parser_state.py
  92. +0 −39 irrd/rpsl/passwords.py
  93. +668 −357 irrd/rpsl/rpsl_objects.py
  94. +234 −207 irrd/rpsl/tests/test_fields.py
  95. +240 −148 irrd/rpsl/tests/test_rpsl_objects.py
  96. +3 −3 irrd/scopefilter/status.py
  97. +163 −147 irrd/scopefilter/tests/test_scopefilter.py
  98. +47 −38 irrd/scopefilter/validators.py
  99. +19 −10 irrd/scripts/database_downgrade.py
  100. +19 −10 irrd/scripts/database_upgrade.py
  101. +31 −15 irrd/scripts/expire_journal.py
  102. +35 −36 irrd/scripts/irr_rpsl_submit.py
  103. +223 −0 irrd/scripts/irrd_control.py
  104. +34 −24 irrd/scripts/load_database.py
  105. +18 −15 irrd/scripts/load_pgp_keys.py
  106. +13 −15 irrd/scripts/load_test.py
  107. +32 −10 irrd/scripts/mirror_force_reload.py
  108. +65 −61 irrd/scripts/query_qa_comparison.py
  109. +39 −28 irrd/scripts/rpsl_read.py
  110. +24 −17 irrd/scripts/set_last_modified_auth.py
  111. +11 −6 irrd/scripts/submit_changes.py
  112. +13 −8 irrd/scripts/submit_email.py
  113. +18 −4 irrd/scripts/tests/test_expire_journal.py
  114. +78 −38 irrd/scripts/tests/test_irr_rpsl_submit.py
  115. +256 −0 irrd/scripts/tests/test_irrd_control.py
  116. +34 −27 irrd/scripts/tests/test_load_database.py
  117. +20 −18 irrd/scripts/tests/test_load_pgp_keys.py
  118. +27 −6 irrd/scripts/tests/test_mirror_force_reload.py
  119. +21 −21 irrd/scripts/tests/test_rpsl_read.py
  120. +20 −20 irrd/scripts/tests/test_set_last_modified_auth.py
  121. +9 −9 irrd/scripts/tests/test_submit_email.py
  122. +6 −6 irrd/scripts/tests/test_submit_update.py
  123. +32 −27 irrd/scripts/tests/test_update_database.py
  124. +29 −22 irrd/scripts/update_database.py
  125. +4 −5 irrd/server/access_check.py
  126. +1 −1 irrd/server/graphql/__init__.py
  127. +10 −9 irrd/server/graphql/extensions.py
  128. +135 −120 irrd/server/graphql/resolvers.py
  129. +48 −30 irrd/server/graphql/schema_builder.py
  130. +96 −69 irrd/server/graphql/schema_generator.py
  131. +20 −18 irrd/server/graphql/tests/test_extensions.py
  132. +269 −221 irrd/server/graphql/tests/test_resolvers.py
  133. +61 −3 irrd/server/graphql/tests/test_schema_generator.py
  134. +70 −13 irrd/server/http/app.py
  135. +50 −30 irrd/server/http/{endpoints.py → endpoints_api.py}
  136. +33 −33 irrd/server/http/event_stream.py
  137. +210 −0 irrd/server/http/metrics_generator.py
  138. +12 −8 irrd/server/http/server.py
  139. +69 −45 irrd/server/http/status_generator.py
  140. +137 −101 irrd/server/http/tests/test_endpoints.py
  141. +20 −15 irrd/server/http/tests/test_event_stream.py
  142. +148 −0 irrd/server/http/tests/test_metrics_generator.py
  143. +235 −106 irrd/server/http/tests/test_status_generator.py
  144. +198 −132 irrd/server/query_resolver.py
  145. +36 −30 irrd/server/test_access_check.py
  146. +347 −465 irrd/server/tests/test_query_resolver.py
  147. +243 −148 irrd/server/whois/query_parser.py
  148. +27 −22 irrd/server/whois/query_response.py
  149. +36 −28 irrd/server/whois/server.py
  150. +407 −264 irrd/server/whois/tests/test_query_parser.py
  151. +87 −67 irrd/server/whois/tests/test_query_response.py
  152. +54 −46 irrd/server/whois/tests/test_server.py
  153. +6 −16 irrd/storage/__init__.py
  154. +10 −13 irrd/storage/alembic/env.py
  155. +41 −24 irrd/storage/alembic/versions/0548f1aa4f10_add_rpsl_objects_suspended.py
  156. +6 −7 irrd/storage/alembic/versions/1743f98a456d_add_serial_newest_mirror.py
  157. +46 −10 irrd/storage/alembic/versions/181670a62643_add_journal_entry_origin.py
  158. +29 −0 irrd/storage/alembic/versions/2353e60e63f8_add_setting.py
  159. +186 −121 irrd/storage/alembic/versions/28dc1cd85bdc_initial_db.py
  160. +9 −9 irrd/storage/alembic/versions/39e4f15ed80c_add_bogon_status.py
  161. +32 −0 irrd/storage/alembic/versions/44ceb7efbcde_add_nrtm4_client.py
  162. +27 −17 irrd/storage/alembic/versions/4a514ead8fc2_bogon_to_scope_filter.py
  163. +49 −0 irrd/storage/alembic/versions/500027f85a55_add_api_tokens.py
  164. +50 −0 irrd/storage/alembic/versions/50d1a0ef58cb_add_protected_name.py
  165. +108 −0 irrd/storage/alembic/versions/5bbbc2989aa6_add_internal_auth.py
  166. +78 −0 irrd/storage/alembic/versions/5d942647566e_add_changelog.py
  167. +18 −10 irrd/storage/alembic/versions/64a3d6faf6d4_add_prefix_length_rpki_status_to_rpsl_objects.py
  168. +12 −13 irrd/storage/alembic/versions/8744b4b906bb_fix_rpsl_unique_key.py
  169. +11 −5 irrd/storage/alembic/versions/893d0d5363b3_add_rpsl_prefix_idx.py
  170. +27 −14 irrd/storage/alembic/versions/8b8357acd333_add_global_serial.py
  171. +28 −0 irrd/storage/alembic/versions/a635d2217a48_add_rpsl_data_updated_field_to_database_.py
  172. +15 −11 irrd/storage/alembic/versions/a7766c144d61_add_synchronised_serial_to_database_.py
  173. +20 −17 irrd/storage/alembic/versions/a8609af97aa3_set_prefix_length_in_existing_rpsl_.py
  174. +9 −4 irrd/storage/alembic/versions/b175c262448f_set_rpsl_prefix.py
  175. +59 −0 irrd/storage/alembic/versions/b7b3c367f9ba_add_nrtm4_server.py
  176. +30 −21 irrd/storage/alembic/versions/e07863eac52f_add_roa_object_table.py
  177. +29 −0 irrd/storage/alembic/versions/e1e649b5f8bb_add_nrtm_client_previous_file_hashes_field_to_.py
  178. +5 −5 irrd/storage/alembic/versions/f4c837d8258c_add_rpsl_prefix.py
  179. +1 −1 irrd/storage/alembic/versions/fd4473bc1a10_add_route_preference_status.py
  180. +565 −256 irrd/storage/database_handler.py
  181. +1 −4 irrd/storage/event_stream.py
  182. +491 −50 irrd/storage/models.py
  183. +102 −0 irrd/storage/orm_provider.py
  184. +291 −85 irrd/storage/preload.py
  185. +160 −87 irrd/storage/queries.py
  186. +868 −454 irrd/storage/tests/test_database.py
  187. +5 −1 irrd/storage/tests/test_event_stream.py
  188. +288 −92 irrd/storage/tests/test_preload.py
  189. +42 −22 irrd/updates/email.py
  190. +112 −76 irrd/updates/handler.py
  191. +315 −158 irrd/updates/parser.py
  192. +41 −22 irrd/updates/parser_state.py
  193. +61 −38 irrd/updates/suspension.py
  194. +39 −39 irrd/updates/tests/test_email.py
  195. +421 −299 irrd/updates/tests/test_handler.py
  196. +1,111 −534 irrd/updates/tests/test_parser.py
  197. +180 −160 irrd/updates/tests/test_suspension.py
  198. +625 −316 irrd/updates/tests/test_validators.py
  199. +453 −111 irrd/updates/validators.py
  200. +49 −0 irrd/utils/crypto.py
  201. +22 −22 irrd/utils/email.py
  202. +94 −0 irrd/utils/factories.py
  203. +17 −1 irrd/utils/misc.py
  204. +27 −15 irrd/utils/pgp.py
  205. +23 −3 irrd/utils/process_support.py
  206. +47 −21 irrd/utils/rpsl_samples.py
  207. +96 −44 irrd/utils/test_utils.py
  208. +49 −0 irrd/utils/tests/test_crypto.py
  209. +48 −45 irrd/utils/tests/test_email.py
  210. +9 −12 irrd/utils/tests/test_pgp.py
  211. +27 −0 irrd/utils/tests/test_process_support.py
  212. +34 −27 irrd/utils/tests/test_text.py
  213. +89 −39 irrd/utils/tests/test_validators.py
  214. +107 −109 irrd/utils/tests/test_whois_client.py
  215. +20 −18 irrd/utils/text.py
  216. +63 −27 irrd/utils/validators.py
  217. +38 −30 irrd/utils/whois_client.py
  218. +21 −50 irrd/vendor/dotted/collection.py
  219. +1 −0 irrd/vendor/mock_alchemy/__init__.py
  220. +178 −0 irrd/vendor/mock_alchemy/comparison.py
  221. +662 −0 irrd/vendor/mock_alchemy/mocking.py
  222. +63 −0 irrd/vendor/mock_alchemy/unittests.py
  223. +262 −0 irrd/vendor/mock_alchemy/utils.py
  224. +17 −30 irrd/vendor/postgres_copy/__init__.py
  225. +19 −0 irrd/webui/__init__.py
  226. 0 irrd/webui/auth/__init__.py
  227. +62 −0 irrd/webui/auth/decorators.py
  228. +312 −0 irrd/webui/auth/endpoints.py
  229. +401 −0 irrd/webui/auth/endpoints_mfa.py
  230. +59 −0 irrd/webui/auth/routes.py
  231. +166 −0 irrd/webui/auth/users.py
  232. +268 −0 irrd/webui/endpoints.py
  233. +698 −0 irrd/webui/endpoints_mntners.py
  234. +175 −0 irrd/webui/helpers.py
  235. +59 −0 irrd/webui/rendering.py
  236. +62 −0 irrd/webui/routes.py
  237. +10,878 −0 irrd/webui/static/css/bootstrap.css
  238. +7 −0 irrd/webui/static/css/bootstrap.min.css
  239. +7,075 −0 irrd/webui/static/js/bootstrap.bundle.js
  240. +7 −0 irrd/webui/static/js/bootstrap.bundle.min.js
  241. +2 −0 irrd/webui/static/js/qrcode.js
  242. +2 −0 irrd/webui/static/js/simplewebauthn-browser-es5-umd.js
  243. +11 −0 irrd/webui/templates/api_token_delete.html
  244. +19 −0 irrd/webui/templates/api_token_form.html
  245. +7 −0 irrd/webui/templates/authentication_change_mail.txt
  246. +1 −0 irrd/webui/templates/authentication_change_mail_subject.txt
  247. +85 −0 irrd/webui/templates/base.html
  248. +120 −0 irrd/webui/templates/change_log_entry.html
  249. +56 −0 irrd/webui/templates/change_log_mntner.html
  250. +21 −0 irrd/webui/templates/create_account_confirm_form.html
  251. +15 −0 irrd/webui/templates/create_account_form.html
  252. +6 −0 irrd/webui/templates/create_account_mail.txt
  253. +1 −0 irrd/webui/templates/create_account_mail_subject.txt
  254. +103 −0 irrd/webui/templates/index.html
  255. +46 −0 irrd/webui/templates/login.html
  256. +48 −0 irrd/webui/templates/maintained_objects.html
  257. +62 −0 irrd/webui/templates/mfa_authenticate.html
  258. +58 −0 irrd/webui/templates/mfa_status.html
  259. +19 −0 irrd/webui/templates/mntner_migrate_complete.html
  260. +19 −0 irrd/webui/templates/mntner_migrate_initiate.html
  261. +11 −0 irrd/webui/templates/mntner_migrate_initiate_mail.txt
  262. +1 −0 irrd/webui/templates/mntner_migrate_initiate_mail_subject.txt
  263. +15 −0 irrd/webui/templates/password_change_form.html
  264. +16 −0 irrd/webui/templates/permission_delete.html
  265. +21 −0 irrd/webui/templates/permission_form.html
  266. +9 −0 irrd/webui/templates/profile_change_form.html
  267. +16 −0 irrd/webui/templates/reset_password_request_form.html
  268. +5 −0 irrd/webui/templates/reset_password_request_mail.txt
  269. +1 −0 irrd/webui/templates/reset_password_request_mail_subject.txt
  270. +22 −0 irrd/webui/templates/rpsl_detail.html
  271. +59 −0 irrd/webui/templates/rpsl_form.html
  272. +24 −0 irrd/webui/templates/totp_register.html
  273. +14 −0 irrd/webui/templates/totp_remove.html
  274. +122 −0 irrd/webui/templates/user_permissions.html
  275. +56 −0 irrd/webui/templates/webauthn_register.html
  276. +9 −0 irrd/webui/templates/webauthn_remove.html
  277. 0 irrd/webui/tests/__init__.py
  278. +108 −0 irrd/webui/tests/conftest.py
  279. +545 −0 irrd/webui/tests/test_auth_endpoints.py
  280. +450 −0 irrd/webui/tests/test_auth_endpoints_mfa.py
  281. +447 −0 irrd/webui/tests/test_endpoints.py
  282. +709 −0 irrd/webui/tests/test_endpoints_mntners.py
  283. +12 −0 irrd/webui/tests/test_helpers.py
  284. +4,164 −0 poetry.lock
  285. +173 −0 pyproject.toml
  286. +0 −64 requirements.txt
  287. +0 −44 setup.cfg
  288. +0 −94 setup.py
207 changes: 62 additions & 145 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -11,35 +11,20 @@ workflows:
test-regular:
# This workflow is about 400 credits
when:
condition:
- not: << pipeline.parameters.build_extensive >>
not: << pipeline.parameters.build_extensive >>
jobs:
- unit_tests_cpython:
name: unit-tests-cpython<< matrix.python_version >>-pg<< matrix.postgres_version >>-redis<< matrix.redis_version >>
matrix:
parameters:
python_version: ["3.7", "3.11"]
postgres_version: ["15.0"]
redis_version: ["5.0"]
- unit_tests_pypy:
name: unit-tests-pypy<< matrix.python_version >>-pg<< matrix.postgres_version >>-redis<< matrix.redis_version >>
matrix:
parameters:
python_version: ["3.7", "3.9"]
python_version: ["3.9", "3.12"]
postgres_version: ["15.0"]
redis_version: ["5.0"]
- integration_tests_cpython:
name: integration-tests-cpython<< matrix.python_version >>-pg<< matrix.postgres_version >>-redis<< matrix.redis_version >>
matrix:
parameters:
python_version: ["3.7", "3.11"]
postgres_version: ["15.0"]
redis_version: ["5.0"]
- integration_tests_pypy:
name: integration-tests-pypy<< matrix.python_version >>-pg<< matrix.postgres_version >>-redis<< matrix.redis_version >>
matrix:
parameters:
python_version: ["3.7", "3.9"]
python_version: ["3.9", "3.12"]
postgres_version: ["15.0"]
redis_version: ["5.0"]
- lint:
@@ -57,28 +42,14 @@ workflows:
name: unit-tests-cpython<< matrix.python_version >>-pg<< matrix.postgres_version >>-redis<< matrix.redis_version >>
matrix:
parameters:
python_version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
postgres_version: ["9.6", "11.16", "13.7", "15.0"]
redis_version: ["5.0", "6.2", "7.0"]
- unit_tests_pypy:
name: unit-tests-pypy<< matrix.python_version >>-pg<< matrix.postgres_version >>-redis<< matrix.redis_version >>
matrix:
parameters:
python_version: ["3.7", "3.8", "3.9"]
python_version: [3.9", "3.10", "3.11", "3.12"]
postgres_version: ["9.6", "11.16", "13.7", "15.0"]
redis_version: ["5.0", "6.2", "7.0"]
- integration_tests_cpython:
name: integration-tests-cpython<< matrix.python_version >>-pg<< matrix.postgres_version >>-redis<< matrix.redis_version >>
matrix:
parameters:
python_version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
postgres_version: ["9.6", "11.16", "13.7", "15.0"]
redis_version: ["5.0", "6.2", "7.0"]
- integration_tests_pypy:
name: integration-tests-pypy<< matrix.python_version >>-pg<< matrix.postgres_version >>-redis<< matrix.redis_version >>
matrix:
parameters:
python_version: ["3.7", "3.8", "3.9"]
python_version: ["3.9", "3.10", "3.11", "3.12"]
postgres_version: ["9.6", "11.16", "13.7", "15.0"]
redis_version: ["5.0", "6.2", "7.0"]
- lint:
@@ -102,33 +73,29 @@ commands:
name: Installing psql client, enchant, netcat, rust
command: $SUDO apt -y install postgresql-client netcat python3-enchant rustc

- run:
name: Installing poetry if needed
command: which poetry || curl -sSL https://install.python-poetry.org | POETRY_HOME=/usr python3 -

- restore_cache:
keys:
- v21-dependencies-{{ .Environment.CIRCLE_JOB }}-{{ checksum
"requirements.txt" }}
- v4-dependencies-{{ .Environment.CIRCLE_JOB }}-{{ checksum
"poetry.lock" }}
# fallback to using the latest cache if no exact match is found
- v21-dependencies-{{ .Environment.CIRCLE_JOB }}

- run:
name: install latest pip
command: |
$PYTHON_INTERPRETER -m venv venv
. venv/bin/activate
pip install -U pip
- v4-dependencies-{{ .Environment.CIRCLE_JOB }}

- run:
name: install dependencies
command: |
PATH=$PATH:/root/.cargo/bin/
$PYTHON_INTERPRETER -m venv venv
. venv/bin/activate
pip install -vUr requirements.txt
name: install python dependencies
working_directory: irrd
environment:
POETRY_VIRTUALENVS_IN_PROJECT: true
command: poetry -n --no-ansi --no-root --with=dev,docs install

- save_cache:
paths:
- ./venv
key: v21-dependencies-{{ .Environment.CIRCLE_JOB }}-{{ checksum
"requirements.txt" }}
- /mnt/ramdisk/.venv
key: v4-dependencies-{{ .Environment.CIRCLE_JOB }}-{{ checksum
"poetry.lock" }}

wait_for_postgres:
steps:
@@ -147,9 +114,7 @@ commands:
steps:
- run:
name: run regular tests
command: |
. venv/bin/activate
py.test -s -vvvv --cov=irrd irrd --junitxml=test-reports/junit.xml --cov-fail-under=100 --cov-report term-missing:skip-covered
command: poetry -n --no-ansi run py.test -s -vvvv --cov=irrd irrd --junitxml=test-reports/junit.xml --cov-fail-under=100 --cov-report term-missing:skip-covered

create_integration_test_db:
steps:
@@ -163,13 +128,16 @@ commands:
command: |
psql -U root -h localhost -d circle_test -c "CREATE DATABASE circle_test_integration_2;"
- run:
name: Creating additional database 3
command: |
psql -U root -h localhost -d circle_test -c "CREATE DATABASE circle_test_integration_3;"
run_integration_tests:
steps:
- run:
name: run integration tests
command: |
. venv/bin/activate
py.test irrd/integration_tests/run.py -s
command: poetry -n --no-ansi run py.test irrd/integration_tests/run.py -s

store_results:
steps:
@@ -180,7 +148,6 @@ commands:
path: /tmp/pytest-of-circleci/



jobs:
unit_tests_cpython:
parameters:
@@ -206,42 +173,7 @@ jobs:
POSTGRES_USER: root
POSTGRES_DB: circle_test
POSTGRES_HOST_AUTH_METHOD: trust

- image: cimg/redis:<< parameters.redis_version >>
# - image: cimg/rust:1.65

steps:
- checkout
- install_dependencies
- wait_for_postgres
- run_unit_tests
- store_results


unit_tests_pypy:
parameters:
python_version:
type: string
postgres_version:
type: string
redis_version:
type: string

resource_class: small
working_directory: /mnt/ramdisk
docker:
- image: pypy:<< parameters.python_version >>
environment:
IRRD_DATABASE_URL: 'postgresql://root@localhost/circle_test'
IRRD_REDIS_URL: 'redis://localhost'
PYTHON_INTERPRETER: pypy3
SUDO: ''

- image: cimg/postgres:<< parameters.postgres_version >>
environment:
POSTGRES_USER: root
POSTGRES_DB: circle_test
POSTGRES_HOST_AUTH_METHOD: trust
command: postgres -c track_commit_timestamp=true

- image: cimg/redis:<< parameters.redis_version >>
# - image: cimg/rust:1.65
@@ -270,8 +202,10 @@ jobs:
environment:
IRRD_DATABASE_URL_INTEGRATION_1: 'postgresql://root@localhost/circle_test_integration_1'
IRRD_DATABASE_URL_INTEGRATION_2: 'postgresql://root@localhost/circle_test_integration_2'
IRRD_DATABASE_URL_INTEGRATION_3: 'postgresql://root@localhost/circle_test_integration_3'
IRRD_REDIS_URL_INTEGRATION_1: 'redis://localhost/4'
IRRD_REDIS_URL_INTEGRATION_2: 'redis://localhost/5'
IRRD_REDIS_URL_INTEGRATION_3: 'redis://localhost/6'
PYTHON_INTERPRETER: python3
SUDO: sudo

@@ -280,45 +214,7 @@ jobs:
POSTGRES_USER: root
POSTGRES_DB: circle_test
POSTGRES_HOST_AUTH_METHOD: trust

- image: cimg/redis:<< parameters.redis_version >>
# - image: cimg/rust:1.65

steps:
- checkout
- install_dependencies
- wait_for_postgres
- create_integration_test_db
- run_integration_tests
- store_results


integration_tests_pypy:
parameters:
python_version:
type: string
postgres_version:
type: string
redis_version:
type: string

resource_class: large
working_directory: /mnt/ramdisk
docker:
- image: pypy:<< parameters.python_version >>
environment:
IRRD_DATABASE_URL_INTEGRATION_1: 'postgresql://root@localhost/circle_test_integration_1'
IRRD_DATABASE_URL_INTEGRATION_2: 'postgresql://root@localhost/circle_test_integration_2'
IRRD_REDIS_URL_INTEGRATION_1: 'redis://localhost/4'
IRRD_REDIS_URL_INTEGRATION_2: 'redis://localhost/5'
PYTHON_INTERPRETER: pypy3
SUDO: ''

- image: cimg/postgres:<< parameters.postgres_version >>
environment:
POSTGRES_USER: root
POSTGRES_DB: circle_test
POSTGRES_HOST_AUTH_METHOD: trust
command: postgres -c track_commit_timestamp=true

- image: cimg/redis:<< parameters.redis_version >>
# - image: cimg/rust:1.65
@@ -351,16 +247,20 @@ jobs:
- install_dependencies

- run:
name: run flake8
command: |
. venv/bin/activate
flake8 irrd
name: run ruff
command: poetry -n --no-ansi run ruff irrd

- run:
name: run isort
command: poetry -n --no-ansi run isort --check --diff irrd

- run:
name: run mypy
command: |
. venv/bin/activate
mypy irrd
command: poetry -n --no-ansi run mypy irrd

- run:
name: run black
command: poetry -n --no-ansi run black --check irrd


build_docs:
@@ -375,14 +275,31 @@ jobs:
environment:
PYTHON_INTERPRETER: python3
SUDO: sudo
SPHINX_IMMATERIAL_EXTERNAL_RESOURCE_CACHE_DIR: sphinx_immaterial_cache
# - image: cimg/rust:1.65

steps:
- checkout
- install_dependencies

- restore_cache:
keys: v1-docs-cache

# Sphinx_immaterial does parallel downloads that don't work
# well on CircleCI. There is no setting, so we just edit
# the max number of workers. Bit gross, but this isn't our
# production doc build anyways, that happens on RTD without hacks.
- run:
name: build docs
name: hack sphinx_immaterial
command: |
. venv/bin/activate
sphinx-build -nW -b spelling docs/ docs/build
sed -i 's/max_workers=33/max_workers=2/' /mnt/ramdisk/.venv/lib/py*/site-packages/sphinx_immaterial/google_fonts.py
- run:
name: build docs
command: poetry -n --no-ansi run sphinx-build -nW -b spelling docs/ docs/build

- save_cache:
paths:
- ./sphinx_immaterial_cache
key: v1-docs-cache

1 change: 0 additions & 1 deletion .coveragerc

This file was deleted.

18 changes: 18 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# https://docs.github.com/en/repositories/working-with-files/using-files/viewing-a-file#ignore-commits-in-the-blame-view
# Apply to your local blame with:
# git config blame.ignoreRevsFile .git-blame-ignore-revs

# Reformat all code according to black for 4.3.x
5c56da8e15a297c72512885332b17b64835f9b83

### PR #759 ###
# Normalise all strings according to black
ebd6f321c786347fbafa2bed6b12d211df023844
# Reformat all code according to black (preview, 110 line length)
1c4f3666f5c06f587e7b329d2c1dfe91b62b0149
# Run isort
8cf25a14da2f18ab91e5ad5d30fa9ef85f341b75
# Clean up unused imports / extra f-strings
f3afd08d43f8d17d0bbb96431c27b195ca46e2ad
# Remove outdated flake8 ignores
f61b346da2f1e35c8f8b9167807a64c2d9bde64a
Loading