diff --git a/requirements.txt b/requirements.txt index 3634310..de8c2af 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,8 +9,9 @@ fastapi==0.143.5 h11==0.16.0 idna==3.20 lib-db-module==0.4.0 -lib-secret-manager==0.3.1 +lib-secret-manager==0.3.6 lib-send-notifications==0.1.0 +lib-service-auth==0.1.0 mysql-connector-python==26.10.0 opentelemetry-api==1.45.1 prometheus_client==0.26.0 diff --git a/response b/response new file mode 100644 index 0000000..1e5aed1 --- /dev/null +++ b/response @@ -0,0 +1 @@ +{"count":40,"next":"https://hub.docker.com/v2/repositories/library/mysql/tags?name=8.4.\u0026page=2\u0026page_size=10","previous":null,"results":[{"creator":1156886,"id":1359745752,"images":[{"architecture":"amd64","features":"","variant":null,"digest":"sha256:5cf1e1293ea42e077e6a22114e6773b9aae3bb8f9933a2acd5a9721518ff8f5b","os":"linux","os_features":"","os_version":null,"size":238252878,"status":"active","last_pulled":"2026-11-01T17:02:33.81918026Z","last_pushed":"2026-10-28T02:02:38.141242078Z"},{"architecture":"arm64","features":"","variant":"v8","digest":"sha256:8ab2115abe8ca3d2745962f4e75f2f86fb8182ae19908773cd4cce811f3c106e","os":"linux","os_features":"","os_version":null,"size":232911891,"status":"active","last_pulled":"2026-11-01T17:06:12.746749221Z","last_pushed":"2026-10-28T02:02:39.007768511Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:720bd91371e732633312953fbc3cc8004a11ebc5a101b42eaf6ea869b7a1a986","os":"unknown","os_features":"","os_version":null,"size":15725397,"status":"active","last_pulled":"2026-11-01T17:04:36.016226618Z","last_pushed":"2026-10-28T02:02:39.362276069Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:b4cbb134db78c0c4507c478bfda0ee704db240efc6cf3702604046cc565c94d2","os":"unknown","os_features":"","os_version":null,"size":15726728,"status":"active","last_pulled":"2026-11-01T16:59:38.91554001Z","last_pushed":"2026-10-28T02:02:38.551885087Z"}],"last_updated":"2026-10-28T02:02:55.733839Z","last_updater":1156886,"last_updater_username":"doijanky","name":"8.4.13-oraclelinux9","repository":21179,"full_size":238252878,"v2":true,"tag_status":"active","tag_last_pulled":"2026-11-01T17:06:12.746749221Z","tag_last_pushed":"2026-10-28T02:02:55.733839Z","media_type":"application/vnd.oci.image.index.v1+json","content_type":"image","digest":"sha256:a0225d1ea6631c8bc2385dc4c2faba17bbf1834ecf369e1659a9a382bd8d5dd7"},{"creator":1156886,"id":1359745720,"images":[{"architecture":"amd64","features":"","variant":null,"digest":"sha256:5cf1e1293ea42e077e6a22114e6773b9aae3bb8f9933a2acd5a9721518ff8f5b","os":"linux","os_features":"","os_version":null,"size":238252878,"status":"active","last_pulled":"2026-11-01T17:02:33.81918026Z","last_pushed":"2026-10-28T02:02:38.141242078Z"},{"architecture":"arm64","features":"","variant":"v8","digest":"sha256:8ab2115abe8ca3d2745962f4e75f2f86fb8182ae19908773cd4cce811f3c106e","os":"linux","os_features":"","os_version":null,"size":232911891,"status":"active","last_pulled":"2026-11-01T17:06:12.746749221Z","last_pushed":"2026-10-28T02:02:39.007768511Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:b4cbb134db78c0c4507c478bfda0ee704db240efc6cf3702604046cc565c94d2","os":"unknown","os_features":"","os_version":null,"size":15726728,"status":"active","last_pulled":"2026-11-01T16:59:38.91554001Z","last_pushed":"2026-10-28T02:02:38.551885087Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:720bd91371e732633312953fbc3cc8004a11ebc5a101b42eaf6ea869b7a1a986","os":"unknown","os_features":"","os_version":null,"size":15725397,"status":"active","last_pulled":"2026-11-01T17:04:36.016226618Z","last_pushed":"2026-10-28T02:02:39.362276069Z"}],"last_updated":"2026-10-28T02:02:53.825244Z","last_updater":1156886,"last_updater_username":"doijanky","name":"8.4.13-oracle","repository":21179,"full_size":238252878,"v2":true,"tag_status":"active","tag_last_pulled":"2026-11-01T17:06:12.746749221Z","tag_last_pushed":"2026-10-28T02:02:53.825244Z","media_type":"application/vnd.oci.image.index.v1+json","content_type":"image","digest":"sha256:a0225d1ea6631c8bc2385dc4c2faba17bbf1834ecf369e1659a9a382bd8d5dd7"},{"creator":1156886,"id":1359745688,"images":[{"architecture":"amd64","features":"","variant":null,"digest":"sha256:5cf1e1293ea42e077e6a22114e6773b9aae3bb8f9933a2acd5a9721518ff8f5b","os":"linux","os_features":"","os_version":null,"size":238252878,"status":"active","last_pulled":"2026-11-01T17:02:33.81918026Z","last_pushed":"2026-10-28T02:02:38.141242078Z"},{"architecture":"arm64","features":"","variant":"v8","digest":"sha256:8ab2115abe8ca3d2745962f4e75f2f86fb8182ae19908773cd4cce811f3c106e","os":"linux","os_features":"","os_version":null,"size":232911891,"status":"active","last_pulled":"2026-11-01T17:06:12.746749221Z","last_pushed":"2026-10-28T02:02:39.007768511Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:b4cbb134db78c0c4507c478bfda0ee704db240efc6cf3702604046cc565c94d2","os":"unknown","os_features":"","os_version":null,"size":15726728,"status":"active","last_pulled":"2026-11-01T16:59:38.91554001Z","last_pushed":"2026-10-28T02:02:38.551885087Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:720bd91371e732633312953fbc3cc8004a11ebc5a101b42eaf6ea869b7a1a986","os":"unknown","os_features":"","os_version":null,"size":15725397,"status":"active","last_pulled":"2026-11-01T17:04:36.016226618Z","last_pushed":"2026-10-28T02:02:39.362276069Z"}],"last_updated":"2026-10-28T02:02:51.883725Z","last_updater":1156886,"last_updater_username":"doijanky","name":"8.4.13","repository":21179,"full_size":238252878,"v2":true,"tag_status":"active","tag_last_pulled":"2026-11-01T17:06:12.746749221Z","tag_last_pushed":"2026-10-28T02:02:51.883725Z","media_type":"application/vnd.oci.image.index.v1+json","content_type":"image","digest":"sha256:a0225d1ea6631c8bc2385dc4c2faba17bbf1834ecf369e1659a9a382bd8d5dd7"},{"creator":1156886,"id":1247452568,"images":[{"architecture":"amd64","features":"","variant":null,"digest":"sha256:6f3a50835c54d61ffdcf78d71381ba268c27804cd96755231d2fd6f180f822f0","os":"linux","os_features":"","os_version":null,"size":238271081,"status":"active","last_pulled":"2026-11-01T16:56:46.914769819Z","last_pushed":"2026-10-19T23:02:39.703021023Z"},{"architecture":"arm64","features":"","variant":"v8","digest":"sha256:4452d4257b94692c09df0f6011a3275744746001150f3cdbdc9278bacfa385bb","os":"linux","os_features":"","os_version":null,"size":232973493,"status":"active","last_pulled":"2026-11-01T16:52:52.3057922Z","last_pushed":"2026-10-19T23:02:40.475561016Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:8ec1027552b88b4d8f861929c4c74c3d47de3ec1e0467c08a4a576eb86aa31c2","os":"unknown","os_features":"","os_version":null,"size":15745255,"status":"active","last_pulled":"2026-11-01T16:56:47.06501431Z","last_pushed":"2026-10-19T23:02:40.077895267Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:60e6667c26513621f2c4d9e31a4580344a8b8102c419b1afe07ce3f158cf6ad4","os":"unknown","os_features":"","os_version":null,"size":15743924,"status":"active","last_pulled":"2026-11-01T16:52:52.301221184Z","last_pushed":"2026-10-19T23:02:40.885988361Z"}],"last_updated":"2026-10-19T23:02:57.151798Z","last_updater":1156886,"last_updater_username":"doijanky","name":"8.4.11-oraclelinux9","repository":21179,"full_size":238271081,"v2":true,"tag_status":"active","tag_last_pulled":"2026-11-01T17:02:37.436469971Z","tag_last_pushed":"2026-10-19T23:02:57.151798Z","media_type":"application/vnd.oci.image.index.v1+json","content_type":"image","digest":"sha256:0f51e63e537a1f176423fa03ef559aabe6fa4372a53160a44bc7e75da7d15364"},{"creator":1156886,"id":1247452544,"images":[{"architecture":"amd64","features":"","variant":null,"digest":"sha256:6f3a50835c54d61ffdcf78d71381ba268c27804cd96755231d2fd6f180f822f0","os":"linux","os_features":"","os_version":null,"size":238271081,"status":"active","last_pulled":"2026-11-01T16:56:46.914769819Z","last_pushed":"2026-10-19T23:02:39.703021023Z"},{"architecture":"arm64","features":"","variant":"v8","digest":"sha256:4452d4257b94692c09df0f6011a3275744746001150f3cdbdc9278bacfa385bb","os":"linux","os_features":"","os_version":null,"size":232973493,"status":"active","last_pulled":"2026-11-01T16:52:52.3057922Z","last_pushed":"2026-10-19T23:02:40.475561016Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:8ec1027552b88b4d8f861929c4c74c3d47de3ec1e0467c08a4a576eb86aa31c2","os":"unknown","os_features":"","os_version":null,"size":15745255,"status":"active","last_pulled":"2026-11-01T16:56:47.06501431Z","last_pushed":"2026-10-19T23:02:40.077895267Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:60e6667c26513621f2c4d9e31a4580344a8b8102c419b1afe07ce3f158cf6ad4","os":"unknown","os_features":"","os_version":null,"size":15743924,"status":"active","last_pulled":"2026-11-01T16:52:52.301221184Z","last_pushed":"2026-10-19T23:02:40.885988361Z"}],"last_updated":"2026-10-19T23:02:55.25967Z","last_updater":1156886,"last_updater_username":"doijanky","name":"8.4.11-oracle","repository":21179,"full_size":238271081,"v2":true,"tag_status":"active","tag_last_pulled":"2026-11-01T17:02:37.436469971Z","tag_last_pushed":"2026-10-19T23:02:55.25967Z","media_type":"application/vnd.oci.image.index.v1+json","content_type":"image","digest":"sha256:0f51e63e537a1f176423fa03ef559aabe6fa4372a53160a44bc7e75da7d15364"},{"creator":1156886,"id":1247452527,"images":[{"architecture":"amd64","features":"","variant":null,"digest":"sha256:6f3a50835c54d61ffdcf78d71381ba268c27804cd96755231d2fd6f180f822f0","os":"linux","os_features":"","os_version":null,"size":238271081,"status":"active","last_pulled":"2026-11-01T16:56:46.914769819Z","last_pushed":"2026-10-19T23:02:39.703021023Z"},{"architecture":"arm64","features":"","variant":"v8","digest":"sha256:4452d4257b94692c09df0f6011a3275744746001150f3cdbdc9278bacfa385bb","os":"linux","os_features":"","os_version":null,"size":232973493,"status":"active","last_pulled":"2026-11-01T16:52:52.3057922Z","last_pushed":"2026-10-19T23:02:40.475561016Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:8ec1027552b88b4d8f861929c4c74c3d47de3ec1e0467c08a4a576eb86aa31c2","os":"unknown","os_features":"","os_version":null,"size":15745255,"status":"active","last_pulled":"2026-11-01T16:56:47.06501431Z","last_pushed":"2026-10-19T23:02:40.077895267Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:60e6667c26513621f2c4d9e31a4580344a8b8102c419b1afe07ce3f158cf6ad4","os":"unknown","os_features":"","os_version":null,"size":15743924,"status":"active","last_pulled":"2026-11-01T16:52:52.301221184Z","last_pushed":"2026-10-19T23:02:40.885988361Z"}],"last_updated":"2026-10-19T23:02:53.335134Z","last_updater":1156886,"last_updater_username":"doijanky","name":"8.4.11","repository":21179,"full_size":238271081,"v2":true,"tag_status":"active","tag_last_pulled":"2026-11-01T17:02:37.436469971Z","tag_last_pushed":"2026-10-19T23:02:53.335134Z","media_type":"application/vnd.oci.image.index.v1+json","content_type":"image","digest":"sha256:0f51e63e537a1f176423fa03ef559aabe6fa4372a53160a44bc7e75da7d15364"},{"creator":1156886,"id":1202082870,"images":[{"architecture":"amd64","features":"","variant":null,"digest":"sha256:870634c634aae968ea1a93e5c094a14e00c692da2ee9bed956b3dfcc7bd08cb0","os":"linux","os_features":"","os_version":null,"size":238952505,"status":"active","last_pulled":"2026-11-01T17:06:38.202113527Z","last_pushed":"2026-07-24T02:02:14.148236516Z"},{"architecture":"arm64","features":"","variant":"v8","digest":"sha256:3f616910ccd923d5089d7889d491cefa65e24fcfa79d74db4084729f48c9cab1","os":"linux","os_features":"","os_version":null,"size":233690249,"status":"active","last_pulled":"2026-11-01T17:04:39.076590516Z","last_pushed":"2026-07-24T02:02:15.002681174Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:0a072fb65ce1b42890e106c9fabe32eac11154fe065498a929611d93ec427d79","os":"unknown","os_features":"","os_version":null,"size":15745154,"status":"active","last_pulled":"2026-11-01T17:04:38.36326766Z","last_pushed":"2026-07-24T02:02:14.545992024Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:00e8366ebe0b03dd22a95b763d2c36b7349b2b5b67b50df1a2918cd762f1a8b3","os":"unknown","os_features":"","os_version":null,"size":15743822,"status":"active","last_pulled":"2026-11-01T17:04:39.77928493Z","last_pushed":"2026-07-24T02:02:15.481948571Z"}],"last_updated":"2026-07-24T02:02:32.585078Z","last_updater":1156886,"last_updater_username":"doijanky","name":"8.4.10-oraclelinux9","repository":21179,"full_size":238952505,"v2":true,"tag_status":"active","tag_last_pulled":"2026-11-01T17:06:38.202113527Z","tag_last_pushed":"2026-07-24T02:02:32.585078Z","media_type":"application/vnd.oci.image.index.v1+json","content_type":"image","digest":"sha256:8dbcf531a03aade657e181b9cf2f1d1803ce621a1d55610cb44cb531ab7d7db6"},{"creator":1156886,"id":1202082851,"images":[{"architecture":"amd64","features":"","variant":null,"digest":"sha256:870634c634aae968ea1a93e5c094a14e00c692da2ee9bed956b3dfcc7bd08cb0","os":"linux","os_features":"","os_version":null,"size":238952505,"status":"active","last_pulled":"2026-11-01T17:06:38.202113527Z","last_pushed":"2026-07-24T02:02:14.148236516Z"},{"architecture":"arm64","features":"","variant":"v8","digest":"sha256:3f616910ccd923d5089d7889d491cefa65e24fcfa79d74db4084729f48c9cab1","os":"linux","os_features":"","os_version":null,"size":233690249,"status":"active","last_pulled":"2026-11-01T17:04:39.076590516Z","last_pushed":"2026-07-24T02:02:15.002681174Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:0a072fb65ce1b42890e106c9fabe32eac11154fe065498a929611d93ec427d79","os":"unknown","os_features":"","os_version":null,"size":15745154,"status":"active","last_pulled":"2026-11-01T17:04:38.36326766Z","last_pushed":"2026-07-24T02:02:14.545992024Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:00e8366ebe0b03dd22a95b763d2c36b7349b2b5b67b50df1a2918cd762f1a8b3","os":"unknown","os_features":"","os_version":null,"size":15743822,"status":"active","last_pulled":"2026-11-01T17:04:39.77928493Z","last_pushed":"2026-07-24T02:02:15.481948571Z"}],"last_updated":"2026-07-24T02:02:30.563858Z","last_updater":1156886,"last_updater_username":"doijanky","name":"8.4.10-oracle","repository":21179,"full_size":238952505,"v2":true,"tag_status":"active","tag_last_pulled":"2026-11-01T17:06:38.202113527Z","tag_last_pushed":"2026-07-24T02:02:30.563858Z","media_type":"application/vnd.oci.image.index.v1+json","content_type":"image","digest":"sha256:8dbcf531a03aade657e181b9cf2f1d1803ce621a1d55610cb44cb531ab7d7db6"},{"creator":1156886,"id":1202082837,"images":[{"architecture":"amd64","features":"","variant":null,"digest":"sha256:870634c634aae968ea1a93e5c094a14e00c692da2ee9bed956b3dfcc7bd08cb0","os":"linux","os_features":"","os_version":null,"size":238952505,"status":"active","last_pulled":"2026-11-01T17:06:38.202113527Z","last_pushed":"2026-07-24T02:02:14.148236516Z"},{"architecture":"arm64","features":"","variant":"v8","digest":"sha256:3f616910ccd923d5089d7889d491cefa65e24fcfa79d74db4084729f48c9cab1","os":"linux","os_features":"","os_version":null,"size":233690249,"status":"active","last_pulled":"2026-11-01T17:04:39.076590516Z","last_pushed":"2026-07-24T02:02:15.002681174Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:0a072fb65ce1b42890e106c9fabe32eac11154fe065498a929611d93ec427d79","os":"unknown","os_features":"","os_version":null,"size":15745154,"status":"active","last_pulled":"2026-11-01T17:04:38.36326766Z","last_pushed":"2026-07-24T02:02:14.545992024Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:00e8366ebe0b03dd22a95b763d2c36b7349b2b5b67b50df1a2918cd762f1a8b3","os":"unknown","os_features":"","os_version":null,"size":15743822,"status":"active","last_pulled":"2026-11-01T17:04:39.77928493Z","last_pushed":"2026-07-24T02:02:15.481948571Z"}],"last_updated":"2026-07-24T02:02:28.61532Z","last_updater":1156886,"last_updater_username":"doijanky","name":"8.4.10","repository":21179,"full_size":238952505,"v2":true,"tag_status":"active","tag_last_pulled":"2026-11-01T17:06:38.202113527Z","tag_last_pushed":"2026-07-24T02:02:28.61532Z","media_type":"application/vnd.oci.image.index.v1+json","content_type":"image","digest":"sha256:8dbcf531a03aade657e181b9cf2f1d1803ce621a1d55610cb44cb531ab7d7db6"},{"creator":1156886,"id":1137225404,"images":[{"architecture":"amd64","features":"","variant":null,"digest":"sha256:14690274f4967ba207939c97dd79a8d6604f1d532218ea6be69c0001ddd2d45f","os":"linux","os_features":"","os_version":null,"size":238253989,"status":"active","last_pulled":"2026-11-01T17:00:06.955142656Z","last_pushed":"2026-05-12T23:02:17.064230694Z"},{"architecture":"arm64","features":"","variant":"v8","digest":"sha256:c3d0492f593ef24dad1d77ff63bc287041d1d07de5fbc38ae095de0170421d1d","os":"linux","os_features":"","os_version":null,"size":233039323,"status":"active","last_pulled":"2026-11-01T16:57:44.238522871Z","last_pushed":"2026-05-12T23:02:18.50246065Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:ad2658b0203b3293805fa34fdfd24f6bcc5a0948e3d9bb03f01a60b42470c0ff","os":"unknown","os_features":"","os_version":null,"size":15743304,"status":"active","last_pulled":"2026-11-01T17:01:02.543558018Z","last_pushed":"2026-05-12T23:02:17.668723557Z"},{"architecture":"unknown","features":"","variant":null,"digest":"sha256:96d3713d71ba400559341758e67f9aaf6de60b4ad080c1ee2839f6a95f3ac13e","os":"unknown","os_features":"","os_version":null,"size":15741957,"status":"active","last_pulled":"2026-11-01T16:57:44.463314321Z","last_pushed":"2026-05-12T23:02:19.619834051Z"}],"last_updated":"2026-05-12T23:02:36.636944Z","last_updater":1156886,"last_updater_username":"doijanky","name":"8.4.9-oraclelinux9","repository":21179,"full_size":238253989,"v2":true,"tag_status":"active","tag_last_pulled":"2026-11-01T17:01:02.543558018Z","tag_last_pushed":"2026-05-12T23:02:36.636944Z","media_type":"application/vnd.oci.image.index.v1+json","content_type":"image","digest":"sha256:c36050afdca850f23cef85703f84c7531a5ae155a11b5ee1c60acb09937c4084"}]} diff --git a/response.json b/response.json new file mode 100644 index 0000000..1fa7cfb --- /dev/null +++ b/response.json @@ -0,0 +1,717 @@ +{ + "count": 40, + "next": "https://hub.docker.com/v2/repositories/library/mysql/tags?name=8.4.&page=2&page_size=10", + "previous": null, + "results": [ + { + "creator": 1156886, + "id": 1359745752, + "images": [ + { + "architecture": "amd64", + "features": "", + "variant": null, + "digest": "sha256:5cf1e1293ea42e077e6a22114e6773b9aae3bb8f9933a2acd5a9721518ff8f5b", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 238252878, + "status": "active", + "last_pulled": "2026-11-01T17:02:33.81918026Z", + "last_pushed": "2026-10-28T02:02:38.141242078Z" + }, + { + "architecture": "arm64", + "features": "", + "variant": "v8", + "digest": "sha256:8ab2115abe8ca3d2745962f4e75f2f86fb8182ae19908773cd4cce811f3c106e", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 232911891, + "status": "active", + "last_pulled": "2026-11-01T17:06:12.746749221Z", + "last_pushed": "2026-10-28T02:02:39.007768511Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:720bd91371e732633312953fbc3cc8004a11ebc5a101b42eaf6ea869b7a1a986", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15725397, + "status": "active", + "last_pulled": "2026-11-01T17:04:36.016226618Z", + "last_pushed": "2026-10-28T02:02:39.362276069Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:b4cbb134db78c0c4507c478bfda0ee704db240efc6cf3702604046cc565c94d2", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15726728, + "status": "active", + "last_pulled": "2026-11-01T16:59:38.91554001Z", + "last_pushed": "2026-10-28T02:02:38.551885087Z" + } + ], + "last_updated": "2026-10-28T02:02:55.733839Z", + "last_updater": 1156886, + "last_updater_username": "doijanky", + "name": "8.4.13-oraclelinux9", + "repository": 21179, + "full_size": 238252878, + "v2": true, + "tag_status": "active", + "tag_last_pulled": "2026-11-01T17:06:12.746749221Z", + "tag_last_pushed": "2026-10-28T02:02:55.733839Z", + "media_type": "application/vnd.oci.image.index.v1+json", + "content_type": "image", + "digest": "sha256:a0225d1ea6631c8bc2385dc4c2faba17bbf1834ecf369e1659a9a382bd8d5dd7" + }, + { + "creator": 1156886, + "id": 1359745720, + "images": [ + { + "architecture": "amd64", + "features": "", + "variant": null, + "digest": "sha256:5cf1e1293ea42e077e6a22114e6773b9aae3bb8f9933a2acd5a9721518ff8f5b", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 238252878, + "status": "active", + "last_pulled": "2026-11-01T17:02:33.81918026Z", + "last_pushed": "2026-10-28T02:02:38.141242078Z" + }, + { + "architecture": "arm64", + "features": "", + "variant": "v8", + "digest": "sha256:8ab2115abe8ca3d2745962f4e75f2f86fb8182ae19908773cd4cce811f3c106e", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 232911891, + "status": "active", + "last_pulled": "2026-11-01T17:06:12.746749221Z", + "last_pushed": "2026-10-28T02:02:39.007768511Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:b4cbb134db78c0c4507c478bfda0ee704db240efc6cf3702604046cc565c94d2", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15726728, + "status": "active", + "last_pulled": "2026-11-01T16:59:38.91554001Z", + "last_pushed": "2026-10-28T02:02:38.551885087Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:720bd91371e732633312953fbc3cc8004a11ebc5a101b42eaf6ea869b7a1a986", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15725397, + "status": "active", + "last_pulled": "2026-11-01T17:04:36.016226618Z", + "last_pushed": "2026-10-28T02:02:39.362276069Z" + } + ], + "last_updated": "2026-10-28T02:02:53.825244Z", + "last_updater": 1156886, + "last_updater_username": "doijanky", + "name": "8.4.13-oracle", + "repository": 21179, + "full_size": 238252878, + "v2": true, + "tag_status": "active", + "tag_last_pulled": "2026-11-01T17:06:12.746749221Z", + "tag_last_pushed": "2026-10-28T02:02:53.825244Z", + "media_type": "application/vnd.oci.image.index.v1+json", + "content_type": "image", + "digest": "sha256:a0225d1ea6631c8bc2385dc4c2faba17bbf1834ecf369e1659a9a382bd8d5dd7" + }, + { + "creator": 1156886, + "id": 1359745688, + "images": [ + { + "architecture": "amd64", + "features": "", + "variant": null, + "digest": "sha256:5cf1e1293ea42e077e6a22114e6773b9aae3bb8f9933a2acd5a9721518ff8f5b", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 238252878, + "status": "active", + "last_pulled": "2026-11-01T17:02:33.81918026Z", + "last_pushed": "2026-10-28T02:02:38.141242078Z" + }, + { + "architecture": "arm64", + "features": "", + "variant": "v8", + "digest": "sha256:8ab2115abe8ca3d2745962f4e75f2f86fb8182ae19908773cd4cce811f3c106e", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 232911891, + "status": "active", + "last_pulled": "2026-11-01T17:06:12.746749221Z", + "last_pushed": "2026-10-28T02:02:39.007768511Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:b4cbb134db78c0c4507c478bfda0ee704db240efc6cf3702604046cc565c94d2", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15726728, + "status": "active", + "last_pulled": "2026-11-01T16:59:38.91554001Z", + "last_pushed": "2026-10-28T02:02:38.551885087Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:720bd91371e732633312953fbc3cc8004a11ebc5a101b42eaf6ea869b7a1a986", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15725397, + "status": "active", + "last_pulled": "2026-11-01T17:04:36.016226618Z", + "last_pushed": "2026-10-28T02:02:39.362276069Z" + } + ], + "last_updated": "2026-10-28T02:02:51.883725Z", + "last_updater": 1156886, + "last_updater_username": "doijanky", + "name": "8.4.13", + "repository": 21179, + "full_size": 238252878, + "v2": true, + "tag_status": "active", + "tag_last_pulled": "2026-11-01T17:06:12.746749221Z", + "tag_last_pushed": "2026-10-28T02:02:51.883725Z", + "media_type": "application/vnd.oci.image.index.v1+json", + "content_type": "image", + "digest": "sha256:a0225d1ea6631c8bc2385dc4c2faba17bbf1834ecf369e1659a9a382bd8d5dd7" + }, + { + "creator": 1156886, + "id": 1247452568, + "images": [ + { + "architecture": "amd64", + "features": "", + "variant": null, + "digest": "sha256:6f3a50835c54d61ffdcf78d71381ba268c27804cd96755231d2fd6f180f822f0", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 238271081, + "status": "active", + "last_pulled": "2026-11-01T16:56:46.914769819Z", + "last_pushed": "2026-10-19T23:02:39.703021023Z" + }, + { + "architecture": "arm64", + "features": "", + "variant": "v8", + "digest": "sha256:4452d4257b94692c09df0f6011a3275744746001150f3cdbdc9278bacfa385bb", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 232973493, + "status": "active", + "last_pulled": "2026-11-01T16:52:52.3057922Z", + "last_pushed": "2026-10-19T23:02:40.475561016Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:8ec1027552b88b4d8f861929c4c74c3d47de3ec1e0467c08a4a576eb86aa31c2", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15745255, + "status": "active", + "last_pulled": "2026-11-01T16:56:47.06501431Z", + "last_pushed": "2026-10-19T23:02:40.077895267Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:60e6667c26513621f2c4d9e31a4580344a8b8102c419b1afe07ce3f158cf6ad4", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15743924, + "status": "active", + "last_pulled": "2026-11-01T16:52:52.301221184Z", + "last_pushed": "2026-10-19T23:02:40.885988361Z" + } + ], + "last_updated": "2026-10-19T23:02:57.151798Z", + "last_updater": 1156886, + "last_updater_username": "doijanky", + "name": "8.4.11-oraclelinux9", + "repository": 21179, + "full_size": 238271081, + "v2": true, + "tag_status": "active", + "tag_last_pulled": "2026-11-01T17:02:37.436469971Z", + "tag_last_pushed": "2026-10-19T23:02:57.151798Z", + "media_type": "application/vnd.oci.image.index.v1+json", + "content_type": "image", + "digest": "sha256:0f51e63e537a1f176423fa03ef559aabe6fa4372a53160a44bc7e75da7d15364" + }, + { + "creator": 1156886, + "id": 1247452544, + "images": [ + { + "architecture": "amd64", + "features": "", + "variant": null, + "digest": "sha256:6f3a50835c54d61ffdcf78d71381ba268c27804cd96755231d2fd6f180f822f0", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 238271081, + "status": "active", + "last_pulled": "2026-11-01T16:56:46.914769819Z", + "last_pushed": "2026-10-19T23:02:39.703021023Z" + }, + { + "architecture": "arm64", + "features": "", + "variant": "v8", + "digest": "sha256:4452d4257b94692c09df0f6011a3275744746001150f3cdbdc9278bacfa385bb", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 232973493, + "status": "active", + "last_pulled": "2026-11-01T16:52:52.3057922Z", + "last_pushed": "2026-10-19T23:02:40.475561016Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:8ec1027552b88b4d8f861929c4c74c3d47de3ec1e0467c08a4a576eb86aa31c2", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15745255, + "status": "active", + "last_pulled": "2026-11-01T16:56:47.06501431Z", + "last_pushed": "2026-10-19T23:02:40.077895267Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:60e6667c26513621f2c4d9e31a4580344a8b8102c419b1afe07ce3f158cf6ad4", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15743924, + "status": "active", + "last_pulled": "2026-11-01T16:52:52.301221184Z", + "last_pushed": "2026-10-19T23:02:40.885988361Z" + } + ], + "last_updated": "2026-10-19T23:02:55.25967Z", + "last_updater": 1156886, + "last_updater_username": "doijanky", + "name": "8.4.11-oracle", + "repository": 21179, + "full_size": 238271081, + "v2": true, + "tag_status": "active", + "tag_last_pulled": "2026-11-01T17:02:37.436469971Z", + "tag_last_pushed": "2026-10-19T23:02:55.25967Z", + "media_type": "application/vnd.oci.image.index.v1+json", + "content_type": "image", + "digest": "sha256:0f51e63e537a1f176423fa03ef559aabe6fa4372a53160a44bc7e75da7d15364" + }, + { + "creator": 1156886, + "id": 1247452527, + "images": [ + { + "architecture": "amd64", + "features": "", + "variant": null, + "digest": "sha256:6f3a50835c54d61ffdcf78d71381ba268c27804cd96755231d2fd6f180f822f0", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 238271081, + "status": "active", + "last_pulled": "2026-11-01T16:56:46.914769819Z", + "last_pushed": "2026-10-19T23:02:39.703021023Z" + }, + { + "architecture": "arm64", + "features": "", + "variant": "v8", + "digest": "sha256:4452d4257b94692c09df0f6011a3275744746001150f3cdbdc9278bacfa385bb", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 232973493, + "status": "active", + "last_pulled": "2026-11-01T16:52:52.3057922Z", + "last_pushed": "2026-10-19T23:02:40.475561016Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:8ec1027552b88b4d8f861929c4c74c3d47de3ec1e0467c08a4a576eb86aa31c2", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15745255, + "status": "active", + "last_pulled": "2026-11-01T16:56:47.06501431Z", + "last_pushed": "2026-10-19T23:02:40.077895267Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:60e6667c26513621f2c4d9e31a4580344a8b8102c419b1afe07ce3f158cf6ad4", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15743924, + "status": "active", + "last_pulled": "2026-11-01T16:52:52.301221184Z", + "last_pushed": "2026-10-19T23:02:40.885988361Z" + } + ], + "last_updated": "2026-10-19T23:02:53.335134Z", + "last_updater": 1156886, + "last_updater_username": "doijanky", + "name": "8.4.11", + "repository": 21179, + "full_size": 238271081, + "v2": true, + "tag_status": "active", + "tag_last_pulled": "2026-11-01T17:02:37.436469971Z", + "tag_last_pushed": "2026-10-19T23:02:53.335134Z", + "media_type": "application/vnd.oci.image.index.v1+json", + "content_type": "image", + "digest": "sha256:0f51e63e537a1f176423fa03ef559aabe6fa4372a53160a44bc7e75da7d15364" + }, + { + "creator": 1156886, + "id": 1202082870, + "images": [ + { + "architecture": "amd64", + "features": "", + "variant": null, + "digest": "sha256:870634c634aae968ea1a93e5c094a14e00c692da2ee9bed956b3dfcc7bd08cb0", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 238952505, + "status": "active", + "last_pulled": "2026-11-01T17:06:38.202113527Z", + "last_pushed": "2026-07-24T02:02:14.148236516Z" + }, + { + "architecture": "arm64", + "features": "", + "variant": "v8", + "digest": "sha256:3f616910ccd923d5089d7889d491cefa65e24fcfa79d74db4084729f48c9cab1", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 233690249, + "status": "active", + "last_pulled": "2026-11-01T17:04:39.076590516Z", + "last_pushed": "2026-07-24T02:02:15.002681174Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:0a072fb65ce1b42890e106c9fabe32eac11154fe065498a929611d93ec427d79", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15745154, + "status": "active", + "last_pulled": "2026-11-01T17:04:38.36326766Z", + "last_pushed": "2026-07-24T02:02:14.545992024Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:00e8366ebe0b03dd22a95b763d2c36b7349b2b5b67b50df1a2918cd762f1a8b3", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15743822, + "status": "active", + "last_pulled": "2026-11-01T17:04:39.77928493Z", + "last_pushed": "2026-07-24T02:02:15.481948571Z" + } + ], + "last_updated": "2026-07-24T02:02:32.585078Z", + "last_updater": 1156886, + "last_updater_username": "doijanky", + "name": "8.4.10-oraclelinux9", + "repository": 21179, + "full_size": 238952505, + "v2": true, + "tag_status": "active", + "tag_last_pulled": "2026-11-01T17:06:38.202113527Z", + "tag_last_pushed": "2026-07-24T02:02:32.585078Z", + "media_type": "application/vnd.oci.image.index.v1+json", + "content_type": "image", + "digest": "sha256:8dbcf531a03aade657e181b9cf2f1d1803ce621a1d55610cb44cb531ab7d7db6" + }, + { + "creator": 1156886, + "id": 1202082851, + "images": [ + { + "architecture": "amd64", + "features": "", + "variant": null, + "digest": "sha256:870634c634aae968ea1a93e5c094a14e00c692da2ee9bed956b3dfcc7bd08cb0", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 238952505, + "status": "active", + "last_pulled": "2026-11-01T17:06:38.202113527Z", + "last_pushed": "2026-07-24T02:02:14.148236516Z" + }, + { + "architecture": "arm64", + "features": "", + "variant": "v8", + "digest": "sha256:3f616910ccd923d5089d7889d491cefa65e24fcfa79d74db4084729f48c9cab1", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 233690249, + "status": "active", + "last_pulled": "2026-11-01T17:04:39.076590516Z", + "last_pushed": "2026-07-24T02:02:15.002681174Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:0a072fb65ce1b42890e106c9fabe32eac11154fe065498a929611d93ec427d79", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15745154, + "status": "active", + "last_pulled": "2026-11-01T17:04:38.36326766Z", + "last_pushed": "2026-07-24T02:02:14.545992024Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:00e8366ebe0b03dd22a95b763d2c36b7349b2b5b67b50df1a2918cd762f1a8b3", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15743822, + "status": "active", + "last_pulled": "2026-11-01T17:04:39.77928493Z", + "last_pushed": "2026-07-24T02:02:15.481948571Z" + } + ], + "last_updated": "2026-07-24T02:02:30.563858Z", + "last_updater": 1156886, + "last_updater_username": "doijanky", + "name": "8.4.10-oracle", + "repository": 21179, + "full_size": 238952505, + "v2": true, + "tag_status": "active", + "tag_last_pulled": "2026-11-01T17:06:38.202113527Z", + "tag_last_pushed": "2026-07-24T02:02:30.563858Z", + "media_type": "application/vnd.oci.image.index.v1+json", + "content_type": "image", + "digest": "sha256:8dbcf531a03aade657e181b9cf2f1d1803ce621a1d55610cb44cb531ab7d7db6" + }, + { + "creator": 1156886, + "id": 1202082837, + "images": [ + { + "architecture": "amd64", + "features": "", + "variant": null, + "digest": "sha256:870634c634aae968ea1a93e5c094a14e00c692da2ee9bed956b3dfcc7bd08cb0", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 238952505, + "status": "active", + "last_pulled": "2026-11-01T17:06:38.202113527Z", + "last_pushed": "2026-07-24T02:02:14.148236516Z" + }, + { + "architecture": "arm64", + "features": "", + "variant": "v8", + "digest": "sha256:3f616910ccd923d5089d7889d491cefa65e24fcfa79d74db4084729f48c9cab1", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 233690249, + "status": "active", + "last_pulled": "2026-11-01T17:04:39.076590516Z", + "last_pushed": "2026-07-24T02:02:15.002681174Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:0a072fb65ce1b42890e106c9fabe32eac11154fe065498a929611d93ec427d79", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15745154, + "status": "active", + "last_pulled": "2026-11-01T17:04:38.36326766Z", + "last_pushed": "2026-07-24T02:02:14.545992024Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:00e8366ebe0b03dd22a95b763d2c36b7349b2b5b67b50df1a2918cd762f1a8b3", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15743822, + "status": "active", + "last_pulled": "2026-11-01T17:04:39.77928493Z", + "last_pushed": "2026-07-24T02:02:15.481948571Z" + } + ], + "last_updated": "2026-07-24T02:02:28.61532Z", + "last_updater": 1156886, + "last_updater_username": "doijanky", + "name": "8.4.10", + "repository": 21179, + "full_size": 238952505, + "v2": true, + "tag_status": "active", + "tag_last_pulled": "2026-11-01T17:06:38.202113527Z", + "tag_last_pushed": "2026-07-24T02:02:28.61532Z", + "media_type": "application/vnd.oci.image.index.v1+json", + "content_type": "image", + "digest": "sha256:8dbcf531a03aade657e181b9cf2f1d1803ce621a1d55610cb44cb531ab7d7db6" + }, + { + "creator": 1156886, + "id": 1137225404, + "images": [ + { + "architecture": "amd64", + "features": "", + "variant": null, + "digest": "sha256:14690274f4967ba207939c97dd79a8d6604f1d532218ea6be69c0001ddd2d45f", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 238253989, + "status": "active", + "last_pulled": "2026-11-01T17:00:06.955142656Z", + "last_pushed": "2026-05-12T23:02:17.064230694Z" + }, + { + "architecture": "arm64", + "features": "", + "variant": "v8", + "digest": "sha256:c3d0492f593ef24dad1d77ff63bc287041d1d07de5fbc38ae095de0170421d1d", + "os": "linux", + "os_features": "", + "os_version": null, + "size": 233039323, + "status": "active", + "last_pulled": "2026-11-01T16:57:44.238522871Z", + "last_pushed": "2026-05-12T23:02:18.50246065Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:ad2658b0203b3293805fa34fdfd24f6bcc5a0948e3d9bb03f01a60b42470c0ff", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15743304, + "status": "active", + "last_pulled": "2026-11-01T17:01:02.543558018Z", + "last_pushed": "2026-05-12T23:02:17.668723557Z" + }, + { + "architecture": "unknown", + "features": "", + "variant": null, + "digest": "sha256:96d3713d71ba400559341758e67f9aaf6de60b4ad080c1ee2839f6a95f3ac13e", + "os": "unknown", + "os_features": "", + "os_version": null, + "size": 15741957, + "status": "active", + "last_pulled": "2026-11-01T16:57:44.463314321Z", + "last_pushed": "2026-05-12T23:02:19.619834051Z" + } + ], + "last_updated": "2026-05-12T23:02:36.636944Z", + "last_updater": 1156886, + "last_updater_username": "doijanky", + "name": "8.4.9-oraclelinux9", + "repository": 21179, + "full_size": 238253989, + "v2": true, + "tag_status": "active", + "tag_last_pulled": "2026-11-01T17:01:02.543558018Z", + "tag_last_pushed": "2026-05-12T23:02:36.636944Z", + "media_type": "application/vnd.oci.image.index.v1+json", + "content_type": "image", + "digest": "sha256:c36050afdca850f23cef85703f84c7531a5ae155a11b5ee1c60acb09937c4084" + } + ] +} diff --git a/scripts/filter_requirements.py b/scripts/filter_requirements.py index 3ed444f..c400efb 100644 --- a/scripts/filter_requirements.py +++ b/scripts/filter_requirements.py @@ -12,6 +12,7 @@ SKIP = { "lib-secret-manager", "lib-send-notifications", "simple-logger-handler", + "lib-service-auth", } NAME_RE = re.compile(r"^\s*([A-Za-z0-9][A-Za-z0-9._-]*)") diff --git a/src/auth_config.py b/src/auth_config.py new file mode 100644 index 0000000..43c3784 --- /dev/null +++ b/src/auth_config.py @@ -0,0 +1,13 @@ +from enum import StrEnum + +from service_auth import KeySource, ServiceAuth + + +class Caller(StrEnum): + GATEWAY = "gateway" + SCHEDULER = "scheduler" + +auth = ServiceAuth({ + Caller.GATEWAY: KeySource("GATEWAY_KEY", "/etc/secrets/gateway_key"), + Caller.SCHEDULER: KeySource("SCHEDULER_KEY", "/etc/secrets/scheduler_key"), +}) \ No newline at end of file diff --git a/src/dockerhub_api.py b/src/dockerhub_api.py index 2b197ad..21bbb40 100644 --- a/src/dockerhub_api.py +++ b/src/dockerhub_api.py @@ -1,12 +1,11 @@ -import os import requests from secret_manager import get_secret from simple_logger_handler import setup_logger -dockerhub_token = get_secret(os.getenv("DOCKERHUB_TOKEN",""),"/etc/secrets/dockerhub_token") -dockerhub_username = get_secret(os.getenv("DOCKERHUB_USERNAME",""),"/etc/secrets/dockerhub_username") +dockerhub_token = get_secret("DOCKERHUB_TOKEN","/etc/secrets/dockerhub_token") +dockerhub_username = get_secret("DOCKERHUB_USERNAME","/etc/secrets/dockerhub_username") logger = setup_logger(__name__) @@ -68,4 +67,5 @@ def find_package_version_with_tag(repo: str, tag: str) -> str: if __name__ == "__main__": - print(find_package_version_with_tag("pihole/pihole", "latest")) \ No newline at end of file + #print(find_package_version_with_tag("pihole/pihole", "latest")) + print(find_package_version_with_tag("library/mysql","8.4")) \ No newline at end of file diff --git a/src/github_api.py b/src/github_api.py index e1980d9..c2806d2 100644 --- a/src/github_api.py +++ b/src/github_api.py @@ -1,11 +1,10 @@ -import os import requests from secret_manager import get_secret from simple_logger_handler import setup_logger -github_token = get_secret(os.getenv("GITHUB_TOKEN",""),"/etc/secrets/github_token") +github_token = get_secret("GITHUB_TOKEN","/etc/secrets/github_token") logger = setup_logger(__name__) def find_package_version_with_tag(org: str, package: str, target_tag: str) -> str: diff --git a/src/main.py b/src/main.py index a653f59..0348ada 100644 --- a/src/main.py +++ b/src/main.py @@ -1,14 +1,15 @@ import asyncio -from contextlib import asynccontextmanager import os +from contextlib import asynccontextmanager import uvicorn -from fastapi import Depends, FastAPI, HTTPException, Request, Response +from fastapi import APIRouter, Depends, FastAPI, HTTPException, Request, Response +from auth_config import Caller, auth from db_module import close_connection_pool, create_connection_pool, get_db, start_healthcheck_thread from dockerhub_api import find_package_version_with_tag as find_package_version_with_tag_dockerhub from github_api import find_package_version_with_tag as find_package_version_with_tag_github -from metrics_server import REQUEST_COUNTER +from metrics_server import REQUEST_COUNTER, metrics_api from secret_manager import cleanup_secret_files from send_notifications import NotificationClient from simple_logger_handler import LOG_LEVEL, setup_logger @@ -46,7 +47,8 @@ api = FastAPI( title="Docker Repository Query", description="Queries Dockerhub and GHCR for new docker images", version="1.0.0", - lifespan=lifespan + lifespan=lifespan, + dependencies=[Depends(auth.authenticate)], ) @api.middleware("http") @@ -65,14 +67,10 @@ async def prometheus_middleware(request: Request, call_next): logger.debug(f"[FastAPI] Counter incremented for {request.method} {request.url.path} [{status}]") return response +user_router = APIRouter(dependencies=[Depends(auth.require(Caller.GATEWAY))]) +scheduler_router = APIRouter(dependencies=[Depends(auth.require(Caller.SCHEDULER))]) - -@api.get("/health") -def return_health(): - return Response(status_code=200) - - -@api.get("/suwayomi") +@scheduler_router.post("/suwayomi") def handle_suwayomi( request: Request, db = Depends(get_db) @@ -98,7 +96,8 @@ def handle_suwayomi( request.app.state.notifier.send( title="New Suwayomi version has been found", body=f"Version {online_version}", - category="utility" + category="utility", + user_id=1, ) logger.debug("[FastAPI] Notification sent for Suwayomi update") return Response(status_code=200) @@ -112,7 +111,7 @@ def handle_suwayomi( -@api.get("/pihole") +@scheduler_router.post("/pihole") def handle_pihole( request: Request, db = Depends(get_db) @@ -137,7 +136,8 @@ def handle_pihole( request.app.state.notifier.send( title="New Pi-hole version has been found", body=f"Version {online_version}", - category="utility" + category="utility", + user_id=1, ) logger.debug("[FastAPI] Notification sent for Pi-hole update") return Response(status_code=200) @@ -149,12 +149,18 @@ def handle_pihole( logger.error(f"[FastAPI] Error in Pi-hole handler: {e}", exc_info=True) raise HTTPException(status_code=500, detail=str(e)) from e +api.include_router(user_router) +api.include_router(scheduler_router) async def start_servers(): - logger.info("[Server] Starting main and metrics servers") + logger.info("[Server] Starting main API (port 5000) and metrics server (port 9000)...") logger.info(f"[Server] Build commit id={os.getenv("COMMIT_ID","unknown")}") - config_main = uvicorn.Config("main:api", host="0.0.0.0", port=5000, log_level=LOG_LEVEL.lower(), log_config=None) - config_metrics = uvicorn.Config("metrics_server:metrics_api", host="0.0.0.0", port=9000, log_level=LOG_LEVEL.lower(), log_config=None) + + auth.load_keys(api, Caller.GATEWAY, Caller.SCHEDULER) + cleanup_secret_files(auth.key_paths(Caller.GATEWAY, Caller.SCHEDULER)) + + config_main = uvicorn.Config(api, host="0.0.0.0", port=5000, log_level=LOG_LEVEL.lower(), log_config=None) + config_metrics = uvicorn.Config(metrics_api, host="0.0.0.0", port=9000, log_level=LOG_LEVEL.lower(), log_config=None) server_main = uvicorn.Server(config_main) server_metrics = uvicorn.Server(config_metrics)