0
Fork 0
mirror of https://github.com/project-zot/zot.git synced 2025-01-20 22:52:51 -05:00
zot/pkg/extensions
LaurentiuNiculae 9cc990d7ca
feat(repodb): add user related information to repodb (#1317)
Initial code was contributed by Bogdan BIVOLARU <104334+bogdanbiv@users.noreply.github.com>
Moved implementation from a separate db to repodb by Andrei Aaron <aaaron@luxoft.com>

Not done yet:
- run/test dynamodb implementation, only boltdb was tested
- add additional coverage for existing functionality
- add web-based APIs to toggle the stars/bookmarks on/off

Initially graphql mutation was discussed for the missing API but
we decided REST endpoints would be better suited for configuration



feat(userdb): complete functionality for userdb integration

- dynamodb rollback changes to user starred repos in case increasing the total star count fails
- dynamodb increment/decrement repostars in repometa when user stars/unstars a repo
- dynamodb check anonymous user permissions are working as intendend
- common test handle anonymous users
- RepoMeta2RepoSummary set IsStarred and IsBookmarked



feat(userdb): rest api calls for toggling stars/bookmarks on/off



test(userdb): blackbox tests



test(userdb): move preferences tests in a different file with specific build tags



feat(repodb): add is-starred and is-bookmarked fields to repo-meta

- removed duplicated logic for determining if a repo is starred/bookmarked

Signed-off-by: Laurentiu Niculae <niculae.laurentiu1@gmail.com>
Co-authored-by: Andrei Aaron <aaaron@luxoft.com>
2023-04-24 11:13:15 -07:00
..
config feat(mgmt): added mgmt extension which returns current zot configuration (#1198) 2023-03-09 10:43:26 -08:00
lint fix(errors): remove direct dependency on 'github.com/pkg/errors' (#1275) 2023-03-20 09:34:04 -07:00
monitoring refactor: Cleanup/simplify testcases in /pkg/extensions (#1116) 2023-01-19 08:54:05 -08:00
scrub feat(storage): rebuild storage(s3/local) dedupe index when switching dedupe status (#1062) 2023-04-07 09:49:24 -07:00
search feat(repodb): add user related information to repodb (#1317) 2023-04-24 11:13:15 -07:00
sync test(sync): make sure sync doesn't write on shutdown (#1370) 2023-04-19 11:34:41 -07:00
_zot.md feat(mgmt): added mgmt extension which returns current zot configuration (#1198) 2023-03-09 10:43:26 -08:00
extension_metrics.go feat(ui): package zui within zot binary (#1161) 2023-02-10 14:52:54 -08:00
extension_metrics_disabled.go feat(ui): package zui within zot binary (#1161) 2023-02-10 14:52:54 -08:00
extension_mgmt.go feat(mgmt): added mgmt extension which returns current zot configuration (#1198) 2023-03-09 10:43:26 -08:00
extension_mgmt_disabled.go feat(mgmt): added mgmt extension which returns current zot configuration (#1198) 2023-03-09 10:43:26 -08:00
extension_scrub.go add enable/disable option for scrub extension (#827) 2022-09-27 18:06:50 -07:00
extension_scrub_disabled.go initial design for task scheduler (#700) 2022-09-22 22:27:56 -07:00
extension_search.go fix(trivy): consistent coverage for reset method + longer wait time between retries (#1272) 2023-03-22 09:52:48 -07:00
extension_search_disabled.go fix: trivydb update now uses task scheduler (#1204) 2023-03-02 09:43:54 -08:00
extension_search_test.go fix(trivy): consistent coverage for reset method + longer wait time between retries (#1272) 2023-03-22 09:52:48 -07:00
extension_sync.go test: stop task scheduler between test runs (#1311) 2023-03-29 11:37:58 -07:00
extension_sync_disabled.go test: stop task scheduler between test runs (#1311) 2023-03-29 11:37:58 -07:00
extension_ui.go fix(csp): upgrade UI and fix zap failure (#1372) 2023-04-13 13:48:09 -07:00
extension_ui_disabled.go build(ui): the ui is now included in the zot binary by default (#1202) 2023-02-23 22:28:08 +02:00
extension_ui_test.go feat(repodb): Multiarch Image support (#1147) 2023-02-27 11:23:18 -08:00
extension_userprefs.go feat(repodb): add user related information to repodb (#1317) 2023-04-24 11:13:15 -07:00
extension_userprefs_disable.go feat(repodb): add user related information to repodb (#1317) 2023-04-24 11:13:15 -07:00
extension_userprefs_test.go feat(repodb): add user related information to repodb (#1317) 2023-04-24 11:13:15 -07:00
extensions_lint.go image level lint: enforce manifest mandatory annotations 2022-07-27 11:48:04 +03:00
extensions_lint_disabled.go image level lint: enforce manifest mandatory annotations 2022-07-27 11:48:04 +03:00
extensions_test.go feat(storage): rebuild storage(s3/local) dedupe index when switching dedupe status (#1062) 2023-04-07 09:49:24 -07:00
mgmt.md feat(mgmt): added mgmt extension which returns current zot configuration (#1198) 2023-03-09 10:43:26 -08:00
README.md build(tags): remove redundant build tag ui_base (#857) 2022-10-10 15:05:55 +03:00

Adding new extensions

As new requirements come and build time extensions need to be added, there are a few things that you have to make sure are present before commiting :

  • files that should be included in the binary only with a specific extension must contain the following syntax at the beginning of the file :

//go:build sync will be added automatically by the linter, so only the second line is mandatory .

NOTE: the third line in the example should be blank, otherwise the build tag would be just another comment.

//go:build sync
// +build sync

package extensions
...................
  • when adding a new tag, specify the new order in which multiple tags should be used (bottom of this page)

  • for each and every new file that contains functions (functionalities) specific to an extension, one should create a corresponding file that must contain the exact same functions, but no functionalities included. This file must begin with an "anti-tag" (e.g. // +build !sync) which will include this file in binaries that don't include this extension ( in this example, the file won't be used in binaries that include sync extension ). See extension-sync-disabled.go for an example.

  • when a new extension comes out, the developer should also write some blackbox tests, where a binary that contains the new extension should be tested in a real usage scenario. See test/blackbox folder for multiple extensions examples.

  • newly added blackbox tests should have targets in Makefile. You should also add them as Github Workflows, in .github/workflows/ecosystem-tools.yaml

  • with every new extension, you should modify the EXTENSIONS variable in Makefile by adding the new extension. The EXTENSIONS variable represents all extensions and is used in Make targets that require them all (e.g make test).

  • the available extensions that can be used at the moment are: sync, scrub, metrics, search . NOTE: When multiple extensions are used, they should be enlisted in the above presented order.