From 151be62e182fd919659681045613387a34825cd2 Mon Sep 17 00:00:00 2001 From: Gert Drapers Date: Thu, 31 Aug 2023 23:08:34 -0700 Subject: [PATCH 01/25] upd test-cmd (#122) --- pkg/cli/cmd/test.go | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/pkg/cli/cmd/test.go b/pkg/cli/cmd/test.go index fe9fe210..a4453a58 100644 --- a/pkg/cli/cmd/test.go +++ b/pkg/cli/cmd/test.go @@ -75,14 +75,25 @@ func (cmd *TestExecCmd) Run(c *cc.CommonCtx) error { return err } + if req.Relation.GetObjectType() == "" { + req.Relation.ObjectType = req.Object.Type + } + start := time.Now() resp, err := dsc.Reader.CheckRelation(c.Context, &req) if err != nil { return err } duration := time.Since(start) - - fmt.Printf("%04d %s %s %s (%s)\n", i, "check-relation ", iff(expected == resp.GetCheck(), passed, failed), checkRelationString(&req), duration) + outcome := resp.GetCheck() + fmt.Printf("%04d %s %s %s [%t] (%s)\n", + i+1, + "check-relation ", + iff(expected == outcome, passed, failed), + checkRelationString(&req), + outcome, + duration, + ) } if field, ok := msg.Fields[checkPermission]; ok { @@ -97,8 +108,16 @@ func (cmd *TestExecCmd) Run(c *cc.CommonCtx) error { return err } duration := time.Since(start) - - fmt.Printf("%04d %s %s %s (%s)\n", i, "check-permission", iff(expected == resp.GetCheck(), passed, failed), checkPermissionString(&req), duration) + outcome := resp.GetCheck() + + fmt.Printf("%04d %s %s %s [%t] (%s)\n", + i+1, + "check-permission", + iff(expected == resp.GetCheck(), passed, failed), + checkPermissionString(&req), + outcome, + duration, + ) } } From 061dbb2a801c427631edf8955a1553ee1bbb30be Mon Sep 17 00:00:00 2001 From: carabasdaniel Date: Thu, 7 Sep 2023 18:04:15 +0300 Subject: [PATCH 02/25] Add example of edge authorizer configuration --- docs/config.md | 12 +- docs/examples/config-edge-authorizer.yaml | 164 ++++++++++++++++++++++ 2 files changed, 170 insertions(+), 6 deletions(-) create mode 100644 docs/examples/config-edge-authorizer.yaml diff --git a/docs/config.md b/docs/config.md index 04c594c4..87149858 100644 --- a/docs/config.md +++ b/docs/config.md @@ -50,9 +50,9 @@ grpc: listen_address: "localhost:8282" connection_timeout_seconds: 160 certs: - tls_cert_path: "/app/grpc.crt" - tls_key_path: "/app/grpc.key" - tls_ca_cert_path: "/app/grpc-ca.crt" + tls_cert_path: "/certs/grpc.crt" + tls_key_path: "/certs/grpc.key" + tls_ca_cert_path: "/certs/grpc-ca.crt" ``` #### 2. gateway @@ -75,9 +75,9 @@ gateway: listen_address: "localhost:8383" http: false certs: - tls_cert_path: "/app/gateway.crt" - tls_key_path: "/app/gateway.key" - tls_ca_cert_path: "/app/gateway-ca.crt" + tls_cert_path: "/certs/gateway.crt" + tls_key_path: "/certs/gateway.key" + tls_ca_cert_path: "/certs/gateway-ca.crt" allowed_origins: - https://*.aserto.com - https://*aserto-console.netlify.app diff --git a/docs/examples/config-edge-authorizer.yaml b/docs/examples/config-edge-authorizer.yaml new file mode 100644 index 00000000..d4d9aea4 --- /dev/null +++ b/docs/examples/config-edge-authorizer.yaml @@ -0,0 +1,164 @@ +# Important: This is not a working example as some field need to be updated with your Aserto information. +# +# This is an example of a topaz configuration that will allow it to run as an edge authorizer connected to the Aserto Control Plane. +# This configuration can be generated using the Aserto CLI +--- +version: 1 + +logging: + prod: true + log_level: info + +directory: + db_path: ${TOPAZ_DIR}/db/directory.db + seed_metadata: false + +# remote directory is used to resolve the identity for the authorizer. +remote_directory: + address: "0.0.0.0:9292" # set as default, it should be the same as the reader as we resolve the identity from the local directory service. + insecure: true + +# default jwt validation configuration +# jwt: +# acceptable_time_skew_seconds: 5 + +api: + reader: + grpc: + listen_address: "0.0.0.0:9292" + # if certs are not specified default certs will be generate with the format reader_grpc.* + certs: + tls_key_path: "${TOPAZ_DIR}/certs/grpc.key" + tls_cert_path: "${TOPAZ_DIR}/certs/grpc.crt" + tls_ca_cert_path: "${TOPAZ_DIR}/certs/grpc-ca.crt" + gateway: + listen_address: "0.0.0.0:9393" + # allowed_origins include localhost by default + allowed_origins: + - https://*.aserto.com + - https://*aserto-console.netlify.app + # if certs are not specified the gateway will have the http: true flag enabled + certs: + tls_key_path: "${TOPAZ_DIR}/certs/gateway.key" + tls_cert_path: "${TOPAZ_DIR}/certs/gateway.crt" + tls_ca_cert_path: "${TOPAZ_DIR}/certs/gateway-ca.crt" + health: + listen_address: "0.0.0.0:9494" + writer: + grpc: + listen_address: "0.0.0.0:9292" + certs: + tls_key_path: "${TOPAZ_DIR}/certs/grpc.key" + tls_cert_path: "${TOPAZ_DIR}/certs/grpc.crt" + tls_ca_cert_path: "${TOPAZ_DIR}/certs/grpc-ca.crt" + gateway: + listen_address: "0.0.0.0:9393" + allowed_origins: + - https://*.aserto.com + - https://*aserto-console.netlify.app + certs: + tls_key_path: "${TOPAZ_DIR}/certs/gateway.key" + tls_cert_path: "${TOPAZ_DIR}/certs/gateway.crt" + tls_ca_cert_path: "${TOPAZ_DIR}/certs/gateway-ca.crt" + health: + listen_address: "0.0.0.0:9494" + exporter: + grpc: + listen_address: "0.0.0.0:9292" + certs: + tls_key_path: "${TOPAZ_DIR}/certs/grpc.key" + tls_cert_path: "${TOPAZ_DIR}/certs/grpc.crt" + tls_ca_cert_path: "${TOPAZ_DIR}/certs/grpc-ca.crt" + gateway: + listen_address: "0.0.0.0:9393" + allowed_origins: + - https://*.aserto.com + - https://*aserto-console.netlify.app + certs: + tls_key_path: "${TOPAZ_DIR}/certs/gateway.key" + tls_cert_path: "${TOPAZ_DIR}/certs/gateway.crt" + tls_ca_cert_path: "${TOPAZ_DIR}/certs/gateway-ca.crt" + health: + listen_address: "0.0.0.0:9494" + importer: + grpc: + listen_address: "0.0.0.0:9292" + certs: + tls_key_path: "${TOPAZ_DIR}/certs/grpc.key" + tls_cert_path: "${TOPAZ_DIR}/certs/grpc.crt" + tls_ca_cert_path: "${TOPAZ_DIR}/certs/grpc-ca.crt" + gateway: + listen_address: "0.0.0.0:9393" + allowed_origins: + - https://*.aserto.com + - https://*aserto-console.netlify.app + certs: + tls_key_path: "${TOPAZ_DIR}/certs/gateway.key" + tls_cert_path: "${TOPAZ_DIR}/certs/gateway.crt" + tls_ca_cert_path: "${TOPAZ_DIR}/certs/gateway-ca.crt" + health: + listen_address: "0.0.0.0:9494" + + authorizer: + needs: + - reader + grpc: + connection_timeout_seconds: 2 + listen_address: "0.0.0.0:8282" + certs: + tls_key_path: "${TOPAZ_DIR}/certs/grpc.key" + tls_cert_path: "${TOPAZ_DIR}/certs/grpc.crt" + tls_ca_cert_path: "${TOPAZ_DIR}/certs/grpc-ca.crt" + gateway: + listen_address: "0.0.0.0:8383" + allowed_origins: + - https://*.aserto.com + - https://*aserto-console.netlify.app + certs: + tls_key_path: "${TOPAZ_DIR}/certs/gateway.key" + tls_cert_path: "${TOPAZ_DIR}/certs/gateway.crt" + tls_ca_cert_path: "${TOPAZ_DIR}/certs/gateway-ca.crt" + health: + listen_address: "0.0.0.0:8484" + +opa: + instance_id: + graceful_shutdown_period_seconds: 2 + local_bundles: + paths: [] + skip_verification: true + config: + services: + aserto-discovery: + url: https://discovery.prod.aserto.com/api/v2/discovery + credentials: + bearer: + token: "" + scheme: "basic" + headers: + Aserto-Tenant-Id: + discovery: + service: aserto-discovery + resource: //opa + +controller: + enabled: true + server: + address: relay.prod.aserto.com:8443 + client_cert_path: + client_key_path: + + +decision_logger: + type: self + config: + store_directory: /app/decision_logs + scribe: + address: ems.prod.aserto.com:8443 + client_cert_path: + client_key_path: + ack_wait_seconds: 30 + headers: + Aserto-Tenant-Id: + shipper: + publish_timeout_seconds: 2 From 38ca765f35bc6e84d9084dbb087c711d7b42dc29 Mon Sep 17 00:00:00 2001 From: carabasdaniel Date: Thu, 7 Sep 2023 19:29:47 +0300 Subject: [PATCH 03/25] Do not prepare edge ds if not configured --- pkg/app/authorizer.go | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/pkg/app/authorizer.go b/pkg/app/authorizer.go index 4e016077..8ddc9ece 100644 --- a/pkg/app/authorizer.go +++ b/pkg/app/authorizer.go @@ -72,18 +72,19 @@ func (e *Authorizer) Start() error { } func (e *Authorizer) ConfigServices() error { - // prepare services - dir, err := locker.New(&e.Configuration.Edge, e.Logger) - if err != nil { - return err - } + if edgeNeeded(e.Configuration.Services) { + dir, err := locker.New(&e.Configuration.Edge, e.Logger) + if err != nil { + return err + } - edgeDir, err := NewEdgeDir(dir) - if err != nil { - return err + edgeDir, err := NewEdgeDir(dir) + if err != nil { + return err + } + e.Services["edge"] = edgeDir } - e.Services["edge"] = edgeDir if serviceConfig, ok := e.Configuration.Services[authorizerService]; ok { topaz, err := NewTopaz(serviceConfig, &e.Configuration.Common, nil, e.Logger) @@ -241,9 +242,27 @@ func (e *Authorizer) validateConfig() error { } for key := range e.Configuration.Services { - if !(contains(e.Services["edge"].AvailableServices(), key) || key == authorizerService) { - return errors.Errorf("unknown service type %s", key) + if _, ok := e.Services["edge"]; ok { + if !(contains(e.Services["edge"].AvailableServices(), key) || key == authorizerService) { + return errors.Errorf("unknown service type %s", key) + } } } return nil } + +func edgeNeeded(cfg map[string]*builder.API) bool { + if _, ok := cfg[readerService]; ok { + return true + } + if _, ok := cfg[writerService]; ok { + return true + } + if _, ok := cfg[importerService]; ok { + return true + } + if _, ok := cfg[exporterService]; ok { + return true + } + return false +} From f982db780451f9f3299785914c00d3d341e0ab50 Mon Sep 17 00:00:00 2001 From: carabasdaniel Date: Thu, 7 Sep 2023 20:16:37 +0300 Subject: [PATCH 04/25] Add openAPI spec handler for all servers --- go.mod | 2 ++ go.sum | 4 ++++ pkg/app/authorizer.go | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/go.mod b/go.mod index 52830599..887bc0ce 100644 --- a/go.mod +++ b/go.mod @@ -25,6 +25,8 @@ require ( github.com/aserto-dev/go-grpc v0.8.57 github.com/aserto-dev/header v0.0.5 github.com/aserto-dev/logger v0.0.4 + github.com/aserto-dev/openapi-authorizer v0.8.81 + github.com/aserto-dev/openapi-directory v0.21.5 github.com/aserto-dev/runtime v0.54.2 github.com/aserto-dev/self-decision-logger v0.0.4 github.com/aserto-dev/service-host v0.0.3 diff --git a/go.sum b/go.sum index a8ba9e65..877148d2 100644 --- a/go.sum +++ b/go.sum @@ -85,6 +85,10 @@ github.com/aserto-dev/header v0.0.5 h1:nEvYNgBoIwomxuvo14JuQ/ZqGGHU67NKuZyNdW4n4 github.com/aserto-dev/header v0.0.5/go.mod h1:LNgRo3gStS71lO1d9Oue9e9kfVvirvUHvdZClzDmNwo= github.com/aserto-dev/logger v0.0.4 h1:GF+17mhn03ZnE5KHCszrzGRcZULgczsql+y+PCHjgpI= github.com/aserto-dev/logger v0.0.4/go.mod h1:awdS/W0VnLNyP+aT5mmLx9PjOcT5IrXsYMxqwHglSLU= +github.com/aserto-dev/openapi-authorizer v0.8.81 h1:YDxVLBssBvj71/ecgLFuvC7dkOQu5Jl/A92wA58CcX0= +github.com/aserto-dev/openapi-authorizer v0.8.81/go.mod h1:3kmTs3pjNE5aQXt1Ob71uVdqC2qC61EO9gl6O63md4U= +github.com/aserto-dev/openapi-directory v0.21.5 h1:H423V9bawyyvfXc335Hpysjkx+fpWjoj20rrYVqfQio= +github.com/aserto-dev/openapi-directory v0.21.5/go.mod h1:9qvcKhAO3kg0H+vjRhUrWXbxGtsPMp/g6X7bne0C0L4= github.com/aserto-dev/runtime v0.54.2 h1:9M9J38rf+gUeBH3PngRMSHn3W8oTvy6qga8169YZuYs= github.com/aserto-dev/runtime v0.54.2/go.mod h1:KYF4DZo5lIWMvRg4QQioypxdi2mDwZF7DmPggAK+2Dg= github.com/aserto-dev/self-decision-logger v0.0.4 h1:Thlz9QTlJm0X+uC3YLUTSyvX+VgF2wVIk9Wh8+rkE/c= diff --git a/pkg/app/authorizer.go b/pkg/app/authorizer.go index 8ddc9ece..6991170a 100644 --- a/pkg/app/authorizer.go +++ b/pkg/app/authorizer.go @@ -3,6 +3,8 @@ package app import ( "context" "fmt" + "net/http" + "strconv" "time" "github.com/aserto-dev/go-aserto/client" @@ -21,10 +23,18 @@ import ( edge "github.com/aserto-dev/go-edge-ds/pkg/server" builder "github.com/aserto-dev/service-host" + + azOpenAPI "github.com/aserto-dev/openapi-authorizer/publish/authorizer" + dsOpenAPI "github.com/aserto-dev/openapi-directory/publish/directory" ) var locker edge.EdgeDirLock +const ( + authorizerOpenAPISpec string = "/authorizer/openapi.json" + directoryOpenAPISpec string = "/directory/openapi.json" +) + // Authorizer is an authorizer service instance, responsible for managing // the authorizer API, user directory instance and the OPA plugins. type Authorizer struct { @@ -143,6 +153,11 @@ func (e *Authorizer) ConfigServices() error { if err != nil { return err } + + // add openAPI handlers for all servers + server.Gateway.Mux.HandleFunc(authorizerOpenAPISpec, azOpenAPIHandler) + server.Gateway.Mux.HandleFunc(directoryOpenAPISpec, dsOpenAPIHandler) + err = e.Manager.AddGRPCServer(server) if err != nil { return err @@ -266,3 +281,27 @@ func edgeNeeded(cfg map[string]*builder.API) bool { } return false } + +func azOpenAPIHandler(w http.ResponseWriter, r *http.Request) { + buf, err := azOpenAPI.Static().ReadFile("openapi.json") + if err != nil { + w.WriteHeader(http.StatusNotFound) + return + } + writeFile(buf, w, r) +} + +func dsOpenAPIHandler(w http.ResponseWriter, r *http.Request) { + buf, err := dsOpenAPI.Static().ReadFile("openapi.json") + if err != nil { + w.WriteHeader(http.StatusNotFound) + return + } + writeFile(buf, w, r) +} + +func writeFile(buf []byte, w http.ResponseWriter, _ *http.Request) { + w.Header().Add("Content-Type", "application/json") + w.Header().Add("Content-Length", strconv.FormatInt(int64(len(buf)), 10)) + _, _ = w.Write(buf) +} From 15d08010529574be405d63e876c37c82c614cc9f Mon Sep 17 00:00:00 2001 From: Gert Drapers Date: Wed, 13 Sep 2023 13:23:49 -0700 Subject: [PATCH 05/25] topaz cli updates (#126) * suppress writing info messages when writing to stdout ``` >>> configure policy policy name: test ``` * remove whitespace from template * colorize test output * update clui and color dependencies * add check-decision, authorizer `Is` requests * improve test output * update Depfile (goreleaser & golangci-lint) --- .github/workflows/ci.yaml | 54 ++++----- .goreleaser.yml | 7 +- Depfile | 6 +- go.mod | 30 ++--- go.sum | 60 +++++----- pkg/cli/clients/authorizer_client.go | 74 ++++++++++++ pkg/cli/clients/const.go | 12 ++ pkg/cli/clients/directory_client.go | 2 - pkg/cli/cmd/configure.go | 9 +- pkg/cli/cmd/templates.go | 8 +- pkg/cli/cmd/test.go | 165 ++++++++++++++++++++------- 11 files changed, 297 insertions(+), 130 deletions(-) create mode 100644 pkg/cli/clients/authorizer_client.go create mode 100644 pkg/cli/clients/const.go diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 242f45d7..18efe453 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -25,14 +25,14 @@ jobs: test: runs-on: ubuntu-latest steps: - - + - uses: actions/checkout@v3 - - + - name: Setup Go uses: actions/setup-go@v4 with: go-version: ${{ env.GO_VERSION }} - - + - name: Setup caching uses: actions/cache@v3 with: @@ -42,26 +42,26 @@ jobs: key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - - + - name: Build run: | go build -o ./bin/topaz ./cmd/topaz/ go build -o ./bin/topazd ./cmd/topazd/ - - + - name: Lint uses: golangci/golangci-lint-action@v3 with: version: v1.52.2 - - + - name: Test Setup uses: autero1/action-gotestsum@v2.0.0 with: gotestsum_version: 1.10.0 - - + - name: Test run: | gotestsum --format short-verbose -- -count=1 -v -timeout=240s -coverprofile=cover.out -coverpkg=./... ./... - - + - name: Upload code coverage uses: shogo82148/actions-goveralls@v1 continue-on-error: true @@ -73,7 +73,7 @@ jobs: # always push when ref is a tag if: github.event_name == 'push' && ( github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release-') || startsWith(github.ref, 'refs/heads/dev-') || startsWith(github.ref, 'refs/tags/v') ) steps: - - + - name: Read Configuration uses: hashicorp/vault-action@v2.5.0 id: vault @@ -85,16 +85,16 @@ jobs: kv/data/github "USERNAME" | DOCKER_USERNAME; kv/data/github "DOCKER_PUSH_TOKEN" | DOCKER_PASSWORD; kv/data/github "READ_WRITE_TOKEN" | READ_WRITE_TOKEN; - - + - uses: actions/checkout@v3 with: fetch-depth: 0 - - + - name: Setup Go uses: actions/setup-go@v4 with: go-version: ${{ env.GO_VERSION }} - - + - name: Setup caching uses: actions/cache@v3 with: @@ -106,15 +106,15 @@ jobs: ${{ runner.os }}-go- - name: Setup QEMU - uses: docker/setup-qemu-action@v2 - - + uses: docker/setup-qemu-action@v2 + - name: Login to GitHub Packages Docker Registry uses: docker/login-action@v2 with: registry: https://ghcr.io username: ${{ env.DOCKER_USERNAME }} password: ${{ env.DOCKER_PASSWORD }} - - + - name: Docker SSH Setup run: | mkdir -p $HOME/.ssh @@ -125,7 +125,7 @@ jobs: git config --global user.name "Aserto Bot" eval `ssh-agent` ssh-add $HOME/.ssh/id_rsa - - + - name: Wait for tests to succeed uses: fountainhead/action-wait-for-check@v1.1.0 id: wait-for-tests @@ -133,11 +133,11 @@ jobs: token: ${{ env.READ_WRITE_TOKEN }} checkName: test ref: ${{ github.event.pull_request.head.sha || github.sha }} - - + - name: Stop if tests fail if: steps.wait-for-tests.outputs.conclusion != 'success' run: exit 1 - - + - name: Push image to GitHub Container Registry uses: goreleaser/goreleaser-action@v4 with: @@ -145,7 +145,7 @@ jobs: version: v1.18.2 args: release --clean --snapshot env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} release: needs: [test, push] @@ -153,7 +153,7 @@ jobs: # Only release when ref is a tag if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') steps: - - + - name: Read Configuration uses: hashicorp/vault-action@v2.5.0 id: vault @@ -167,16 +167,16 @@ jobs: kv/data/github "READ_WRITE_TOKEN" | READ_WRITE_TOKEN; kv/data/github "ASERTO_TAP" | ASERTO_TAP; kv/data/gcp "SERVICE_ACCOUNT_GITHUB_ACTIONS_RELEASE" | SERVICE_ACCOUNT_GITHUB_ACTIONS_RELEASE; - - + - uses: actions/checkout@v3 with: fetch-depth: 0 - - + - name: Setup Go uses: actions/setup-go@v4 with: go-version: ${{ env.GO_VERSION }} - - + - name: Setup caching uses: actions/cache@v3 with: @@ -188,8 +188,8 @@ jobs: ${{ runner.os }}-go- - name: Setup QEMU - uses: docker/setup-qemu-action@v2 - - + uses: docker/setup-qemu-action@v2 + - name: Login to GitHub Packages Docker Registry uses: docker/login-action@v2 with: @@ -215,7 +215,7 @@ jobs: name: Write Version Info run: | git describe --tags > VERSION.txt - - + - name: Release uses: goreleaser/goreleaser-action@v4 env: @@ -226,7 +226,7 @@ jobs: distribution: goreleaser version: v1.18.2 args: release --clean - + msi: needs: release runs-on: windows-latest diff --git a/.goreleaser.yml b/.goreleaser.yml index 70f95bb1..d4e0fb39 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -59,7 +59,6 @@ builds: archives: # https://goreleaser.com/customization/archive/ - format: zip - rlcp: true builds: - topaz - topazd @@ -68,7 +67,7 @@ archives: - README.md name_template: >- topaz_{{ .Os }}_{{- if eq .Arch "amd64" }}x86_64{{- else }}{{ .Arch }}{{ end }} - + checksum: # https://goreleaser.com/customization/checksum/ name_template: "checksums.txt" @@ -119,7 +118,7 @@ brews: - name: topaz - tap: + repository: owner: "{{ .Env.ORG }}" name: homebrew-tap token: "{{ .Env.ASERTO_TAP }}" @@ -163,7 +162,7 @@ dockers: - "--label=org.opencontainers.image.source=https://github.com/{{ .Env.ORG }}/{{ .Env.REPO }}" - "--label=org.opencontainers.image.description=Topaz Authorizer" - "--label=org.opencontainers.image.licenses=Apache-2.0" - + - use: buildx goos: linux goarch: arm64 diff --git a/Depfile b/Depfile index acc2b2cf..3f58fc52 100644 --- a/Depfile +++ b/Depfile @@ -8,13 +8,13 @@ go: version: "v0.5.0" goreleaser: importPath: github.com/goreleaser/goreleaser - version: "v1.18.2" + version: "v1.20.0" gotestsum: importPath: "gotest.tools/gotestsum" - version: "v1.10.0" + version: "v1.10.1" golangci-lint: importPath: "github.com/golangci/golangci-lint/cmd/golangci-lint" - version: "v1.52.2" + version: "v1.54.2" goimports: importPath: "golang.org/x/tools/cmd/goimports" version: "latest" diff --git a/go.mod b/go.mod index 887bc0ce..eed511cd 100644 --- a/go.mod +++ b/go.mod @@ -15,8 +15,8 @@ require ( github.com/aserto-dev/aserto-grpc v0.2.2 github.com/aserto-dev/aserto-management v0.9.2 github.com/aserto-dev/certs v0.0.3 - github.com/aserto-dev/clui v0.8.2 - github.com/aserto-dev/errors v0.0.5 + github.com/aserto-dev/clui v0.8.3 + github.com/aserto-dev/errors v0.0.6 github.com/aserto-dev/go-aserto v0.20.3 github.com/aserto-dev/go-authorizer v0.20.2 github.com/aserto-dev/go-directory v0.21.7 @@ -32,10 +32,10 @@ require ( github.com/aserto-dev/service-host v0.0.3 github.com/fatih/color v1.15.0 github.com/fullstorydev/grpcurl v1.8.7 - github.com/google/uuid v1.3.0 + github.com/google/uuid v1.3.1 github.com/google/wire v0.5.0 github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.2 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 github.com/lestrrat-go/jwx v1.2.26 github.com/magefile/mage v1.15.0 github.com/mennanov/fmutils v0.2.0 @@ -50,7 +50,7 @@ require ( github.com/stretchr/testify v1.8.4 go.opencensus.io v0.24.0 golang.org/x/sync v0.3.0 - google.golang.org/grpc v1.57.0 + google.golang.org/grpc v1.58.0 google.golang.org/protobuf v1.31.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/controller-runtime v0.15.0 @@ -103,7 +103,7 @@ require ( github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.19 // indirect - github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/minio/highwayhash v1.0.2 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect @@ -144,18 +144,18 @@ require ( go.opentelemetry.io/otel/metric v1.16.0 // indirect go.opentelemetry.io/otel/sdk v1.16.0 // indirect go.opentelemetry.io/otel/trace v1.16.0 // indirect - golang.org/x/crypto v0.11.0 // indirect + golang.org/x/crypto v0.13.0 // indirect golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.12.0 // indirect - golang.org/x/sys v0.10.0 // indirect - golang.org/x/term v0.10.0 // indirect - golang.org/x/text v0.11.0 // indirect + golang.org/x/net v0.15.0 // indirect + golang.org/x/sys v0.12.0 // indirect + golang.org/x/term v0.12.0 // indirect + golang.org/x/text v0.13.0 // indirect golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.11.0 // indirect - google.golang.org/genproto v0.0.0-20230720185612-659f7aaaa771 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230726155614-23370e0ffb3e // indirect + golang.org/x/tools v0.13.0 // indirect + google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 877148d2..9558d8e8 100644 --- a/go.sum +++ b/go.sum @@ -61,10 +61,10 @@ github.com/aserto-dev/aserto-management v0.9.2 h1:fX0YMEWvE+THKm96A/h6gjDxHtFzKF github.com/aserto-dev/aserto-management v0.9.2/go.mod h1:T+P3l7Lr9QhKgQOnOkh8j4S9tqpyuRXWE1aYZWFGn9o= github.com/aserto-dev/certs v0.0.3 h1:FiCJwh3nMHm/g1hRzKng1ZghLhNJgbMFxQd6ppJSVEE= github.com/aserto-dev/certs v0.0.3/go.mod h1:9mFvZ1NR92aEGj4ce6QleZGPXJuDZKTv+CWIOX28Xj8= -github.com/aserto-dev/clui v0.8.2 h1:QPyAsKnZrafSfPMWPni6w5JyZUJOThbqVmHWWxWPi+M= -github.com/aserto-dev/clui v0.8.2/go.mod h1:b3hhCepxBKdbeaIwYXRtlt07jnn7tgnfF4onVOwSEL4= -github.com/aserto-dev/errors v0.0.5 h1:9sSeCKZbPEs8CKBj9SzKLoyxsmhimlKuygZd3cRX2zY= -github.com/aserto-dev/errors v0.0.5/go.mod h1:kenI1gamsemaR2wS+M2un0kXIJ9exTrmeRT/fCFwlWc= +github.com/aserto-dev/clui v0.8.3 h1:foEJuVpMFVP4La3SxUcinxRLOZx/TyS2BRuahbywYFg= +github.com/aserto-dev/clui v0.8.3/go.mod h1:KsL/g2x5LAbkEE4ofW/ZoA4FDOIdAyLes/5ullvzUt8= +github.com/aserto-dev/errors v0.0.6 h1:iH5fkJwBGFPbcdS4B8mwvNdwODlhDEXXPduZtjLh6vo= +github.com/aserto-dev/errors v0.0.6/go.mod h1:kenI1gamsemaR2wS+M2un0kXIJ9exTrmeRT/fCFwlWc= github.com/aserto-dev/go-aserto v0.20.3 h1:yUhMIENFIdKA6TxE36E+99N3baEIuzfj7Y+onsOuLyg= github.com/aserto-dev/go-aserto v0.20.3/go.mod h1:6e5FdSQNvVvaRVIVrAqlQk9uh5k3jtIcDIXciQtN+GQ= github.com/aserto-dev/go-authorizer v0.20.2 h1:jDjPeaD3lyJmgWFDL6+B8ebG9nrRsqFyMP16HVdNhj4= @@ -252,8 +252,8 @@ github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3 github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8= github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -271,8 +271,8 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92Bcuy github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.2 h1:dygLcbEBA+t/P7ck6a8AkXv6juQ4cK0RHBoh32jxhHM= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.2/go.mod h1:Ap9RLCIJVtgQg1/BBgVEfypOAySvvlcpcVQkSzJCH4Y= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -335,8 +335,8 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mennanov/fmutils v0.2.0 h1:Hw/iuQPdKtiB2B9YYh+NX8iv7U7eQu1rICPjr8NvxSo= @@ -502,8 +502,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -581,8 +581,8 @@ golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -659,14 +659,14 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -677,8 +677,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -738,8 +738,8 @@ golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= -golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -808,12 +808,12 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20230720185612-659f7aaaa771 h1:2CKO8yUZZPdYiN1S9T7/PWPcFeZbzWrK88x4dT+j/Qg= -google.golang.org/genproto v0.0.0-20230720185612-659f7aaaa771/go.mod h1:iqkVr8IRpZ53gx1dEnWlCUIEwDWqWARWrbzpasaTNYM= -google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e h1:z3vDksarJxsAKM5dmEGv0GHwE2hKJ096wZra71Vs4sw= -google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230726155614-23370e0ffb3e h1:S83+ibolgyZ0bqz7KEsUOPErxcv4VzlszxY+31OfB/E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= +google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -834,8 +834,8 @@ google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw= -google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= +google.golang.org/grpc v1.58.0 h1:32JY8YpPMSR45K+c3o6b8VL73V+rR8k+DeMIr4vRH8o= +google.golang.org/grpc v1.58.0/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/pkg/cli/clients/authorizer_client.go b/pkg/cli/clients/authorizer_client.go new file mode 100644 index 00000000..c73d6a1f --- /dev/null +++ b/pkg/cli/clients/authorizer_client.go @@ -0,0 +1,74 @@ +package clients + +import ( + "context" + + grpcClient "github.com/aserto-dev/go-aserto/client" + "github.com/fullstorydev/grpcurl" + "github.com/pkg/errors" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" + "google.golang.org/grpc/credentials/insecure" + + "github.com/aserto-dev/go-authorizer/aserto/authorizer/v2" + "github.com/aserto-dev/topaz/pkg/cli/cc" +) + +type AuthorizerConfig struct { + Host string + APIKey string + Insecure bool + TenantID string +} + +func NewAuthorizerClient(c *cc.CommonCtx, cfg *AuthorizerConfig) (authorizer.AuthorizerClient, error) { + if cfg.Host == "" { + cfg.Host = localhostAuthorizer + } + + if err := cfg.validate(); err != nil { + return nil, err + } + + opts := []grpcClient.ConnectionOption{ + grpcClient.WithAddr(cfg.Host), + grpcClient.WithInsecure(cfg.Insecure), + } + + if cfg.APIKey != "" { + opts = append(opts, grpcClient.WithAPIKeyAuth(cfg.APIKey)) + } + + if cfg.TenantID != "" { + opts = append(opts, grpcClient.WithTenantID(cfg.TenantID)) + } + + conn, err := grpcClient.NewConnection(c.Context, opts...) + if err != nil { + return nil, err + } + + return authorizer.NewAuthorizerClient(conn.Conn), nil +} + +func (cfg *AuthorizerConfig) validate() error { + ctx := context.Background() + + tlsConf, err := grpcurl.ClientTLSConfig(cfg.Insecure, "", "", "") + if err != nil { + return errors.Wrap(err, "failed to create TLS config") + } + + creds := credentials.NewTLS(tlsConf) + + opts := []grpc.DialOption{ + grpc.WithUserAgent("topaz/dev-build (no version set)"), + } + if cfg.Insecure { + opts = append(opts, grpc.WithTransportCredentials(insecure.NewCredentials())) + } + if _, err := grpcurl.BlockingDial(ctx, "tcp", cfg.Host, creds, opts...); err != nil { + return err + } + return nil +} diff --git a/pkg/cli/clients/const.go b/pkg/cli/clients/const.go new file mode 100644 index 00000000..df2894f8 --- /dev/null +++ b/pkg/cli/clients/const.go @@ -0,0 +1,12 @@ +package clients + +const ( + localhostAuthorizer string = "localhost:8282" + localhostDirectory string = "localhost:9292" + EnvTopazAuthorizerSvc string = "TOPAZ_AUTHORIZER_SVC" + EnvTopazAuthorizerKey string = "TOPAZ_AUTHORIZER_KEY" + EnvTopazDirectorySvc string = "TOPAZ_DIRECTORY_SVC" + EnvTopazDirectoryKey string = "TOPAZ_DIRECTORY_KEY" + EnvTopazHeaderTenantID string = "TOPAZ_HEADER_TENANT_ID" + EnvTopazHeaderSessionID string = "TOPAZ_HEADER_SESSION_ID" +) diff --git a/pkg/cli/clients/directory_client.go b/pkg/cli/clients/directory_client.go index 37a41c3b..65e3c1ab 100644 --- a/pkg/cli/clients/directory_client.go +++ b/pkg/cli/clients/directory_client.go @@ -13,8 +13,6 @@ import ( "google.golang.org/grpc/credentials/insecure" ) -const localhostDirectory = "localhost:9292" - type Config struct { Host string `flag:"host" short:"H" help:"" env:"TOPAZ_DIRECTORY_SVC" default:"localhost:9292"` APIKey string `flag:"api-key" short:"k" help:"" env:"TOPAZ_DIRECTORY_KEY"` diff --git a/pkg/cli/cmd/configure.go b/pkg/cli/cmd/configure.go index cd89e95b..1266d218 100644 --- a/pkg/cli/cmd/configure.go +++ b/pkg/cli/cmd/configure.go @@ -27,7 +27,10 @@ func (cmd ConfigureCmd) Run(c *cc.CommonCtx) error { return errors.New("you either need to provide a local policy image or the resource and the policy name for the configuration") } } - color.Green(">>> configure policy") + + if !cmd.Stdout { + color.Green(">>> configure policy") + } configDir, err := CreateConfigDir() if err != nil { @@ -65,7 +68,9 @@ func (cmd ConfigureCmd) Run(c *cc.CommonCtx) error { return WriteConfig(w, localImageTemplate, ¶ms) } - color.Green("policy name: %s", params.PolicyName) + if !cmd.Stdout { + color.Green("policy name: %s", params.PolicyName) + } return WriteConfig(w, configTemplate, ¶ms) } diff --git a/pkg/cli/cmd/templates.go b/pkg/cli/cmd/templates.go index 978aa994..a6e833ea 100644 --- a/pkg/cli/cmd/templates.go +++ b/pkg/cli/cmd/templates.go @@ -47,7 +47,7 @@ opa: const templatePreamble = `--- # config schema version -version: {{ .Version }} +version: {{ .Version }} logging: prod: true @@ -92,8 +92,8 @@ api: tls_ca_cert_path: "${TOPAZ_DIR}/certs/gateway-ca.crt" http: false read_timeout: 2s # default 2 seconds - read_header_timeout: 2s - write_timeout: 2s + read_header_timeout: 2s + write_timeout: 2s idle_timeout: 30s # default 30 seconds health: listen_address: "0.0.0.0:9494" @@ -178,7 +178,7 @@ api: idle_timeout: 30s health: listen_address: "0.0.0.0:9494" - + authorizer: needs: - reader diff --git a/pkg/cli/cmd/test.go b/pkg/cli/cmd/test.go index a4453a58..b3ff894d 100644 --- a/pkg/cli/cmd/test.go +++ b/pkg/cli/cmd/test.go @@ -7,11 +7,13 @@ import ( "strings" "time" + az2 "github.com/aserto-dev/go-authorizer/aserto/authorizer/v2" + "github.com/aserto-dev/go-directory-cli/client" dsr2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" - "github.com/aserto-dev/topaz/pkg/cli/cc" "github.com/aserto-dev/topaz/pkg/cli/clients" + "github.com/fatih/color" "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/structpb" @@ -20,9 +22,10 @@ import ( const ( checkRelation string = "check_relation" checkPermission string = "check_permission" + checkDecision string = "check_decision" expected string = "expected" - passed string = "PASSED" - failed string = "FAILED" + passed string = "PASS" + failed string = "FAIL" ) type TestCmd struct { @@ -31,7 +34,8 @@ type TestCmd struct { } type TestExecCmd struct { - File string `arg:"" default:"assertions.json" help:"filepath to assertions file"` + File string `arg:"" default:"assertions.json" help:"filepath to assertions file"` + NoColor bool `flag:"" default:"false" help:"disable colorized output"` clients.Config } @@ -51,6 +55,17 @@ func (cmd *TestExecCmd) Run(c *cc.CommonCtx) error { return err } + azc, err := clients.NewAuthorizerClient(c, &clients.AuthorizerConfig{ + Host: iff(os.Getenv(clients.EnvTopazAuthorizerSvc) != "", os.Getenv(clients.EnvTopazAuthorizerSvc), ""), + APIKey: iff(os.Getenv(clients.EnvTopazAuthorizerKey) != "", os.Getenv(clients.EnvTopazAuthorizerKey), ""), + Insecure: cmd.Config.Insecure, + TenantID: cmd.Config.TenantID, + }) + + if err != nil { + return err + } + var assertions struct { Assertions []json.RawMessage `json:"assertions"` } @@ -60,6 +75,10 @@ func (cmd *TestExecCmd) Run(c *cc.CommonCtx) error { return err } + if cmd.NoColor { + color.NoColor = true + } + for i := 0; i < len(assertions.Assertions); i++ { var msg structpb.Struct err = protojson.UnmarshalOptions{DiscardUnknown: true}.Unmarshal(assertions.Assertions[i], &msg) @@ -70,60 +89,109 @@ func (cmd *TestExecCmd) Run(c *cc.CommonCtx) error { expected := msg.Fields[expected].GetBoolValue() if field, ok := msg.Fields[checkRelation]; ok { - var req dsr2.CheckRelationRequest - if err := unmarshalReq(field, &req); err != nil { + if err := cmd.execCheckRelation(c, dsc, field, i, expected); err != nil { return err } - - if req.Relation.GetObjectType() == "" { - req.Relation.ObjectType = req.Object.Type - } - - start := time.Now() - resp, err := dsc.Reader.CheckRelation(c.Context, &req) - if err != nil { - return err - } - duration := time.Since(start) - outcome := resp.GetCheck() - fmt.Printf("%04d %s %s %s [%t] (%s)\n", - i+1, - "check-relation ", - iff(expected == outcome, passed, failed), - checkRelationString(&req), - outcome, - duration, - ) } if field, ok := msg.Fields[checkPermission]; ok { - var req dsr2.CheckPermissionRequest - if err := unmarshalReq(field, &req); err != nil { + if err := cmd.execCheckPermission(c, dsc, field, i, expected); err != nil { return err } + } - start := time.Now() - resp, err := dsc.Reader.CheckPermission(c.Context, &req) - if err != nil { + if field, ok := msg.Fields[checkDecision]; ok { + if err := cmd.execCheckDecision(c, azc, field, i, expected); err != nil { return err } - duration := time.Since(start) - outcome := resp.GetCheck() - - fmt.Printf("%04d %s %s %s [%t] (%s)\n", - i+1, - "check-permission", - iff(expected == resp.GetCheck(), passed, failed), - checkPermissionString(&req), - outcome, - duration, - ) } } return nil } +func (*TestExecCmd) execCheckRelation(c *cc.CommonCtx, dsc *client.Client, field *structpb.Value, i int, expected bool) error { + var req dsr2.CheckRelationRequest + if err := unmarshalReq(field, &req); err != nil { + return err + } + + if req.Relation.GetObjectType() == "" { + req.Relation.ObjectType = req.Object.Type + } + + start := time.Now() + resp, err := dsc.Reader.CheckRelation(c.Context, &req) + if err != nil { + return err + } + duration := time.Since(start) + outcome := resp.GetCheck() + + fmt.Printf("%04d %s %v %s [%s] (%s)\n", + i+1, + "check-relation ", + iff(expected == outcome, color.GreenString(passed), color.RedString(failed)), + checkRelationString(&req), + iff(outcome, color.BlueString("%t", outcome), color.YellowString("%t", outcome)), + duration, + ) + + return nil +} + +func (*TestExecCmd) execCheckPermission(c *cc.CommonCtx, dsc *client.Client, field *structpb.Value, i int, expected bool) error { + var req dsr2.CheckPermissionRequest + if err := unmarshalReq(field, &req); err != nil { + return err + } + + start := time.Now() + resp, err := dsc.Reader.CheckPermission(c.Context, &req) + if err != nil { + return err + } + duration := time.Since(start) + outcome := resp.GetCheck() + + fmt.Printf("%04d %s %v %s [%s] (%s)\n", + i+1, + "check-permission", + iff(expected == resp.GetCheck(), color.GreenString(passed), color.RedString(failed)), + checkPermissionString(&req), + iff(outcome, color.BlueString("%t", outcome), color.YellowString("%t", outcome)), + duration, + ) + + return nil +} + +func (*TestExecCmd) execCheckDecision(c *cc.CommonCtx, azc az2.AuthorizerClient, field *structpb.Value, i int, expected bool) error { + var req az2.IsRequest + if err := unmarshalReq(field, &req); err != nil { + return err + } + + start := time.Now() + resp, err := azc.Is(c.Context, &req) + if err != nil { + return err + } + duration := time.Since(start) + decision := resp.Decisions[0] + + fmt.Printf("%04d %s %v %s [%s] (%s)\n", + i+1, + "check-decision ", + iff(expected == decision.GetIs(), color.GreenString(passed), color.RedString(failed)), + checkDecisionString(&req), + iff(decision.GetIs(), color.BlueString("%t", decision.GetIs()), color.YellowString("%t", decision.GetIs())), + duration, + ) + + return nil +} + func unmarshalReq(value *structpb.Value, msg proto.Message) error { b, err := value.MarshalJSON() if err != nil { @@ -172,6 +240,14 @@ func checkPermissionString(req *dsr2.CheckPermissionRequest) string { ) } +func checkDecisionString(req *az2.IsRequest) string { + return fmt.Sprintf("%s/%s:%s", + req.PolicyContext.GetPath(), + req.PolicyContext.GetDecisions()[0], + req.IdentityContext.Identity, + ) +} + func (cmd *TestTemplateCmd) Run(c *cc.CommonCtx) error { if !cmd.Pretty { fmt.Fprintf(c.UI.Output(), "%s\n", assertionsTemplate) @@ -201,6 +277,9 @@ const assertionsTemplate string = `{ {"check_relation":{"subject":{"type":"","key":""},"relation":{"name":""},"object":{"type":"","key":""}},"expected":false}, {"check_permission":{"subject":{"type":"","key":""},"permission":{"name":""},"object":{"type":"","key":""}},"expected":true}, - {"check_permission":{"subject":{"type":"","key":""},"permission":{"name":""},"object":{"type":"","key":""}},"expected":false} + {"check_permission":{"subject":{"type":"","key":""},"permission":{"name":""},"object":{"type":"","key":""}},"expected":false}, + + {"check_decision":{"identity_context":{"identity":"","type":""},"resource_context":{},"policy_context":{"path":"","decisions":[""]}},"expected":true}, + {"check_decision":{"identity_context":{"identity":"","type":""},"resource_context":{},"policy_context":{"path":"","decisions":[""]}},"expected":false} ] }` From bb191b2c19002762aaf0e3d9a1e0b23e3837bf3d Mon Sep 17 00:00:00 2001 From: Gert Drapers Date: Wed, 13 Sep 2023 13:30:13 -0700 Subject: [PATCH 06/25] update goreleaser to v1.20.0 (#127) --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 18efe453..f69ceb5b 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -142,7 +142,7 @@ jobs: uses: goreleaser/goreleaser-action@v4 with: distribution: goreleaser - version: v1.18.2 + version: v1.20.0 args: release --clean --snapshot env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From de1348d921f6d2048924ebe6d9fd52dce40067fa Mon Sep 17 00:00:00 2001 From: Gert Drapers Date: Wed, 13 Sep 2023 13:50:15 -0700 Subject: [PATCH 07/25] missed version update --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f69ceb5b..75c5defe 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -224,7 +224,7 @@ jobs: GOOGLE_APPLICATION_CREDENTIALS: /tmp/gs.json with: distribution: goreleaser - version: v1.18.2 + version: v1.20.0 args: release --clean msi: From 293a1356750eaf6751e549503d8e7eb3f79840f8 Mon Sep 17 00:00:00 2001 From: Gert Drapers Date: Tue, 19 Sep 2023 12:20:18 -0700 Subject: [PATCH 08/25] get relation directionality (#128) * get-relation-directionality * config language service --- docs/config.md | 50 +++++++++++------------ docs/examples/config-edge-authorizer.yaml | 8 ++-- docs/examples/config-local-image.yaml | 12 ++++-- docs/examples/config-private-ghcr.yaml | 4 ++ docs/examples/config-public-ghcr.yaml | 8 +++- docs/examples/config-remote-dir.yaml | 3 ++ go.mod | 2 +- pkg/cli/cmd/templates.go | 3 +- 8 files changed, 54 insertions(+), 36 deletions(-) diff --git a/docs/config.md b/docs/config.md index 87149858..ba244440 100644 --- a/docs/config.md +++ b/docs/config.md @@ -1,5 +1,5 @@ # Topaz configuration -The main configuration for Topaz can be devided in 3 main sections: +The main configuration for Topaz can be divided in 3 main sections: 1. Common configuration 2. Auth configuration - optional 3. Decision logger configuration - optional @@ -8,17 +8,17 @@ The main configuration for Topaz can be devided in 3 main sections: ## Topaz configuration environment variables --- -> The topaz service configuration is built using the [spf13/viper](https://github.com/spf13/viper) library so all configuration parameters can be passed to the topazd service as environment variable with the **TOPAZ_** prefix. +> The topaz service configuration is built using the [spf13/viper](https://github.com/spf13/viper) library so all configuration parameters can be passed to the topazd service as environment variable with the **TOPAZ_** prefix. --- -If you use topaz CLI to generate your configuration file by default it will add the TOPAZ_DIR environment variable to the path configurations. By default this is empty and considered an NOP addition, but it can easily allow you to specify the desired value to the run/start topaz CLI command with the `-e` flag. +If you use topaz CLI to generate your configuration file by default it will add the TOPAZ_DIR environment variable to the path configurations. By default this is empty and considered an NOP addition, but it can easily allow you to specify the desired value to the run/start topaz CLI command with the `-e` flag. By default if you run/start the topaz container using the topaz CLI the following environment variables will be set in your topaz container: - TOPAZ_CERTS_DIR - default $HOME/.config/topaz - the directory where topaz will load/generate the certs - TOPAZ_CFG_DIR - default $HOME/.config/topaz - the directory from where topaz will load the configuration file - TOPAZ_EDS_DIR - default $HOME/.config/topaz - the directory where topaz will store the edge directory DB -Both run and start topaz CLI commands allow passing optional environment variables to your running container using the -e flag. This will allow you to use any desired environment variable in your configuration file as long as you pass it to the container. +Both run and start topaz CLI commands allow passing optional environment variables to your running container using the -e flag. This will allow you to use any desired environment variable in your configuration file as long as you pass it to the container. ## 1. Common configuration @@ -27,7 +27,7 @@ The configuration version accepted by the version of topaz - current compatible ### b. Logging The [logging mechanism](https://github.com/aserto-dev/logger) for topaz is based on [zerolog](https://github.com/rs/zerolog) and has the following available settings: - - *prod* - boolean - if set to false the entire log output will be written using a zerolog ConsoleWriter, setting this to true will write the errors to the stderr output and other logs to the stdout + - *prod* - boolean - if set to false the entire log output will be written using a zerolog ConsoleWriter, setting this to true will write the errors to the stderr output and other logs to the stdout - *log_level* - string - this value is parsed by zerolog to match desired logging level (default: info), available levels: trace, debug, info, warn, error, fatal and panic - *grpc_log_level* - string - same as above available values, however this is specific for the logged grpc messages, having the default value set to warn @@ -40,7 +40,7 @@ logging: ### c. API The API section is a map that defines the API configuration for each of the possible services that topaz is able to spin up:["reader","writer","importer","exporter","authorizer"] #### 1. grpc -The grpc section allows configuring the listen address, the connection timeout and the certificates. +The grpc section allows configuring the listen address, the connection timeout and the certificates. - *listen_address* - string - allows the topaz GRPC server to spin up on the requested port (default: "0.0.0.0:8282") - *connection_timeout_seconds* - uint32 - sets the timeout for a [connection establishment](https://pkg.go.dev/google.golang.org/grpc#ConnectionTimeout) (default: 120) - *certs* - certs.TLSCredsConfig - based on [aserto-dev/certs](https://github.com/aserto-dev/certs) package allows setting the paths of your certificate files. If you do not have your certificates in the specified paths, topaz will generate self-signed certificates for you. By default topaz will generate the certificates in ` ~/.config/topaz/certs/` path @@ -48,7 +48,7 @@ Example: ``` grpc: listen_address: "localhost:8282" - connection_timeout_seconds: 160 + connection_timeout_seconds: 160 certs: tls_cert_path: "/certs/grpc.crt" tls_key_path: "/certs/grpc.key" @@ -56,7 +56,7 @@ grpc: ``` #### 2. gateway -The gateway section allows configuring the [grpc gateway](https://github.com/grpc-ecosystem/grpc-gateway) for your topaz authorizer. +The gateway section allows configuring the [grpc gateway](https://github.com/grpc-ecosystem/grpc-gateway) for your topaz authorizer. - *listen_address* - string - allows the topaz Gateway server to spin up on the requested port (default: "0.0.0.0:8383") - *http* - boolean - when set to true it allows the gateway service to respond to plain http request (default: false) @@ -64,9 +64,9 @@ The gateway section allows configuring the [grpc gateway](https://github.com/grp - *allowed_origins* - []string - allows setting the paths for the [CORS handler](https://github.com/rs/cors) Detailed information about the gateway http server timeout configuration is available [here](https://pkg.go.dev/net/http#Server) -- *read_timeout* - time.Duration - default value set to 2 * time.Second (default: 2000000000) -- *read_header_timeout* - time.Duration - default value set to 2 * time.Second (default: 2000000000) -- *write_timeout* - time.Duration - default value set to 2 * time.Second (default: 2000000000) +- *read_timeout* - time.Duration - default value set to 2 * time.Second (default: 2000000000) +- *read_header_timeout* - time.Duration - default value set to 2 * time.Second (default: 2000000000) +- *write_timeout* - time.Duration - default value set to 2 * time.Second (default: 2000000000) - *idle_timeout* - time.Duration - default is set to 30 * time.Second (default: 30000000000) Example: @@ -87,7 +87,7 @@ gateway: #### 3. health The health is the simplest of these section as it only allows to set the listen address of the health server. By default the listen address is set to 0.0.0.0:8484 -To check the health of your service you can use the available [grpc-health-probe](https://github.com/grpc-ecosystem/grpc-health-probe) +To check the health of your service you can use the available [grpc-health-probe](https://github.com/grpc-ecosystem/grpc-health-probe) Example: ``` grpc-health-probe --addr=localhost:8484 @@ -102,7 +102,7 @@ Example: api: reader: gateway: - listen_address: localhost:9393 + listen_address: localhost:9393 grpc: listen_address: localhost:9595 authorizer: @@ -117,15 +117,15 @@ api: ``` #### 5. metrics -Allow topaz to spin up a metrics server for the configured API. -Example: +Allow topaz to spin up a metrics server for the configured API. +Example: ``` api: reader: metrics: - listen_address: "localhost:9696" + listen_address: "localhost:9696" gateway: - listen_address: localhost:9393 + listen_address: localhost:9393 grpc: listen_address: localhost:9595 ``` @@ -145,7 +145,7 @@ Topaz is able to communicate with a directory service based on the [pb-directory The remote address can also be configured to a service that implements the proto definitions (for example, the Postgres-based Aserto directory service). In this case, Topaz will NOT spin-up a local edge directory service, and instead send all directory requests to this remote service. - *address* - string - address:port of the remote directory service - *api_key* - string - API key for the directory -- *tenant_id* - string - the directory tenant ID +- *tenant_id* - string - the directory tenant ID Example (using the hosted Aserto directory): ``` @@ -159,11 +159,11 @@ remote_directory: The OPA configuration section represent the [runtime configuration](https://github.com/aserto-dev/runtime/blob/main/config.go). The main elements of the runtime configuration are: - *local_bundles* - runtime.LocalBundlesConfig - allows the runtime to run with a local bundle (local path or local policy OCI image) -- *instance_id* - string - represent the unique identifier of the runtime +- *instance_id* - string - represent the unique identifier of the runtime - *plugins_error_limit* - int - represents the maximum number of errors that an OPA plugin can trigger before killing the runtime - *graceful_shutdown_period_seconds* - int - passed to the runtime plugin manager, this represents the allowed time to stop the running plugins gracefully - *max_plugin_wait_time_seconds* - int - passed to the runtime plugin manager, this represents the maximum wait time for a plugin to spin-up (default: 30) -- *flags* - runtime.Flags - currently only the boolean *enable_status_plugin* is available. When set to true the runtime status is affected by the OPA status plugin +- *flags* - runtime.Flags - currently only the boolean *enable_status_plugin* is available. When set to true the runtime status is affected by the OPA status plugin - *config* - runtime.OPAConfig - the details of the [OPA configuration](https://www.openpolicyagent.org/docs/latest/configuration/) For more details regarding the OPA configuration see [examples folder](/docs/examples/) @@ -174,7 +174,7 @@ The JWT section allows setting a custom *acceptable_time_skew_seconds* - int - t ## 2. Auth configuration (optional) -By default Topaz authentication configuration is disabled, however if you want to configure API key basic authentication this section of the configuration allows you to set this up. +By default Topaz authentication configuration is disabled, however if you want to configure API key basic authentication this section of the configuration allows you to set this up. The options section allows you to specify overrides for specific paths if you want to enable the api key authentication or/and the anonymous authentication for these. @@ -193,7 +193,7 @@ auth: override: enable_anonymous: true enable_api_key: false - + ``` ## 3. Decision logger configuration (optional) @@ -221,19 +221,19 @@ opa: config: plugins: aserto_decision_log: - enabled: true + enabled: true policy_info: registry_service: 'ghcr.io' registry_image: 'aserto-policies/policy-peoplefinder-rbac' digest: 'b36c9fac3c4f3a20e524ef4eca4ac3170e30281fe003b80a499591043299c898' ``` -When deploying topaz as an [Aserto Edge Authorizer](https://docs.aserto.com/docs/edge-authorizers/overview) you can configure the decision logger to send the logs to the upstream Aserto policy instance. For configuration details see: https://docs.aserto.com/docs/edge-authorizers/decision-logs +When deploying topaz as an [Aserto Edge Authorizer](https://docs.aserto.com/docs/edge-authorizers/overview) you can configure the decision logger to send the logs to the upstream Aserto policy instance. For configuration details see: https://docs.aserto.com/docs/edge-authorizers/decision-logs ## 4. Controller configuration (optional) -The controller allows an edge Topaz authorizer to connect to the Aserto Control Plane through a secure mTLS connection. This way the edge authorizers can sync their running policy with an upstream policy instance and sync their local directory with a remote directory. +The controller allows an edge Topaz authorizer to connect to the Aserto Control Plane through a secure mTLS connection. This way the edge authorizers can sync their running policy with an upstream policy instance and sync their local directory with a remote directory. For more details on the security and management of edge authorizers see documentation available [here](https://docs.aserto.com/docs/edge-authorizers/security-and-management). diff --git a/docs/examples/config-edge-authorizer.yaml b/docs/examples/config-edge-authorizer.yaml index d4d9aea4..2cd88d6e 100644 --- a/docs/examples/config-edge-authorizer.yaml +++ b/docs/examples/config-edge-authorizer.yaml @@ -1,7 +1,9 @@ # Important: This is not a working example as some field need to be updated with your Aserto information. # -# This is an example of a topaz configuration that will allow it to run as an edge authorizer connected to the Aserto Control Plane. -# This configuration can be generated using the Aserto CLI +# This is an example of a topaz configuration that will allow it to run as an edge authorizer connected to the Aserto Control Plane. +# This configuration can be generated using the Aserto CLI + +# yaml-language-server: $schema=https://topaz.sh/schema/config.json --- version: 1 @@ -98,7 +100,7 @@ api: tls_ca_cert_path: "${TOPAZ_DIR}/certs/gateway-ca.crt" health: listen_address: "0.0.0.0:9494" - + authorizer: needs: - reader diff --git a/docs/examples/config-local-image.yaml b/docs/examples/config-local-image.yaml index 68afa8a3..afe05985 100644 --- a/docs/examples/config-local-image.yaml +++ b/docs/examples/config-local-image.yaml @@ -1,8 +1,12 @@ # If you follow the [topaz quickstart guide](https://github.com/aserto-dev/topaz#quickstart) and you wish to run an local image that you built with [policy CLI](https://github.com/opcr-io/policy) you can use the `topaz configure -d -s -l ghcr.io/default:latest` to generate this example configuration. # In this case the `ghcr.io/default:latest` policy image is set as your *local_policy_image*. In this example this values is set with the assumption that you [build your policy image](https://openpolicycontainers.com/docs/cli/build) without setting a custom tag. -# Using topaz with a local policy image gives you an easier method to ensure that your policies work as you desire before pushing an image to an upstream container registry. -# If you have started topaz with this configuration, if you rebuild the image, any changes will be reflected in your topaz runtime bundle. +# Using topaz with a local policy image gives you an easier method to ensure that your policies work as you desire before pushing an image to an upstream container registry. +# If you have started topaz with this configuration, if you rebuild the image, any changes will be reflected in your topaz runtime bundle. + +# yaml-language-server: $schema=https://topaz.sh/schema/config.json --- +version: 1 + logging: prod: true log_level: info @@ -10,11 +14,11 @@ logging: directory: db_path: ${TOPAZ_DIR}/db/directory.db seed_metadata: true - + remote_directory: address: "localhost:9292" insecure: true - + api: authorizer: grpc: diff --git a/docs/examples/config-private-ghcr.yaml b/docs/examples/config-private-ghcr.yaml index ca77f4d4..b0ca8827 100644 --- a/docs/examples/config-private-ghcr.yaml +++ b/docs/examples/config-private-ghcr.yaml @@ -2,7 +2,11 @@ # 1. Github PAT with the available rights to access private packages. # 2. Your organization # 3. Your policy image name and label + +# yaml-language-server: $schema=https://topaz.sh/schema/config.json --- +version: 1 + logging: prod: true log_level: debug diff --git a/docs/examples/config-public-ghcr.yaml b/docs/examples/config-public-ghcr.yaml index a492d3e1..6287a5f7 100644 --- a/docs/examples/config-public-ghcr.yaml +++ b/docs/examples/config-public-ghcr.yaml @@ -1,5 +1,9 @@ -# If you follow the [topaz quickstart guide](https://github.com/aserto-dev/topaz#quickstart) this is the configuration generated by the `topaz configure -d -s -r ghcr.io/aserto-policies/policy-todo-rebac:latest -n todo` command. +# If you follow the [topaz quickstart guide](https://github.com/aserto-dev/topaz#quickstart) this is the configuration generated by the `topaz configure -d -s -r ghcr.io/aserto-policies/policy-todo-rebac:latest -n todo` command. + +# yaml-language-server: $schema=https://topaz.sh/schema/config.json --- +version: 1 + logging: prod: true log_level: info @@ -7,7 +11,7 @@ logging: directory: db_path: ${TOPAZ_DIR}/db/directory.db seed_metadata: true - + api: authorizer: grpc: diff --git a/docs/examples/config-remote-dir.yaml b/docs/examples/config-remote-dir.yaml index 5254b00e..df293061 100644 --- a/docs/examples/config-remote-dir.yaml +++ b/docs/examples/config-remote-dir.yaml @@ -2,7 +2,10 @@ # You can find these values in the Aserto Console: for the directory access key you will find these values in the connections tab for Aserto Directory and to you will find the tenant ID in your account settings. # In this example, as we use the policy todo image, we recommend setting up a Demo Citadel IDP connection to exercise the example policy paths with the users that have the correct permissions. +# yaml-language-server: $schema=https://topaz.sh/schema/config.json --- +version: 1 + logging: prod: true log_level: debug diff --git a/go.mod b/go.mod index eed511cd..83952a5c 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/aserto-dev/go-authorizer v0.20.2 github.com/aserto-dev/go-directory v0.21.7 github.com/aserto-dev/go-directory-cli v0.20.13 - github.com/aserto-dev/go-edge-ds v0.21.9 + github.com/aserto-dev/go-edge-ds v0.21.10 github.com/aserto-dev/go-grpc v0.8.57 github.com/aserto-dev/header v0.0.5 github.com/aserto-dev/logger v0.0.4 diff --git a/pkg/cli/cmd/templates.go b/pkg/cli/cmd/templates.go index a6e833ea..05f2ce1d 100644 --- a/pkg/cli/cmd/templates.go +++ b/pkg/cli/cmd/templates.go @@ -45,7 +45,8 @@ opa: max_delay_seconds: 120 ` -const templatePreamble = `--- +const templatePreamble = `# yaml-language-server: $schema=https://topaz.sh/schema/config.json +--- # config schema version version: {{ .Version }} From 22fda7e166e5933f4059c6f5031754a70f99cf4c Mon Sep 17 00:00:00 2001 From: Bogdan Irimie Date: Wed, 20 Sep 2023 10:14:44 +0300 Subject: [PATCH 09/25] Viper env key replacer should replace . not - --- pkg/cc/config/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cc/config/config.go b/pkg/cc/config/config.go index bac17444..90387ae9 100644 --- a/pkg/cc/config/config.go +++ b/pkg/cc/config/config.go @@ -98,7 +98,7 @@ func NewConfig(configPath Path, log *zerolog.Logger, overrides Overrider, certsG v.AddConfigPath(".") v.SetConfigFile(file) v.SetEnvPrefix("TOPAZ") - v.SetEnvKeyReplacer(strings.NewReplacer("-", "_")) + v.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) // Set defaults v.SetDefault("jwt.acceptable_time_skew_seconds", 5) From 9f4a047243484bfab0e6b52b42b0c2b34d177268 Mon Sep 17 00:00:00 2001 From: Bogdan Irimie Date: Wed, 20 Sep 2023 14:05:17 +0300 Subject: [PATCH 10/25] Bump service-host to 0.0.5 --- go.mod | 10 +++++----- go.sum | 24 ++++++++++++------------ 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index 83952a5c..7bcdf84a 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,7 @@ require ( github.com/aserto-dev/openapi-directory v0.21.5 github.com/aserto-dev/runtime v0.54.2 github.com/aserto-dev/self-decision-logger v0.0.4 - github.com/aserto-dev/service-host v0.0.3 + github.com/aserto-dev/service-host v0.0.5 github.com/fatih/color v1.15.0 github.com/fullstorydev/grpcurl v1.8.7 github.com/google/uuid v1.3.1 @@ -50,7 +50,7 @@ require ( github.com/stretchr/testify v1.8.4 go.opencensus.io v0.24.0 golang.org/x/sync v0.3.0 - google.golang.org/grpc v1.58.0 + google.golang.org/grpc v1.58.1 google.golang.org/protobuf v1.31.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/controller-runtime v0.15.0 @@ -145,7 +145,7 @@ require ( go.opentelemetry.io/otel/sdk v1.16.0 // indirect go.opentelemetry.io/otel/trace v1.16.0 // indirect golang.org/x/crypto v0.13.0 // indirect - golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb // indirect + golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.15.0 // indirect golang.org/x/sys v0.12.0 // indirect @@ -154,8 +154,8 @@ require ( golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.13.0 // indirect google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 9558d8e8..bc4545cc 100644 --- a/go.sum +++ b/go.sum @@ -75,8 +75,8 @@ github.com/aserto-dev/go-directory v0.21.7 h1:eJXBz5zpOSmI99T+W0V4JufYeq87TbmiUt github.com/aserto-dev/go-directory v0.21.7/go.mod h1:xzUJUiyOcVj9B8Nd/nNYsIB0JSQps3IMuiPKejZkCnc= github.com/aserto-dev/go-directory-cli v0.20.13 h1:TepHQflnC8/czC7vhGe2wkP/EKgyJ/Q+S3fT6jrcVz8= github.com/aserto-dev/go-directory-cli v0.20.13/go.mod h1:wZUFVIF2gYZ7GfelEwy4ND5RX38kYqjVKEMvfo8A+xo= -github.com/aserto-dev/go-edge-ds v0.21.9 h1:cfpSBT8xOYbIJJLhNMOvC22cItzuMXuxDc2tW2VBqjA= -github.com/aserto-dev/go-edge-ds v0.21.9/go.mod h1:Y+i0v4GoTZA+KvTdTe6QQ8dkheM8wu05EArODelKdn4= +github.com/aserto-dev/go-edge-ds v0.21.10 h1:2WaGbaKDQ2N1ms2JE942ARsXKvqcy6adQ8FhM70Klg4= +github.com/aserto-dev/go-edge-ds v0.21.10/go.mod h1:lkrCafoscLP4IBcNEd76IDfkkjpTa/GBdhcfuzw9b8I= github.com/aserto-dev/go-grpc v0.8.57 h1:CjQVxZ2HkBvJrfCtaDeq2kZSn2yLmRel5kHCVzqRMLs= github.com/aserto-dev/go-grpc v0.8.57/go.mod h1:2FcclMDheTsEvYCY72o+EwTaoO0ti3/it4G6xIlzNIM= github.com/aserto-dev/go-http-metrics v0.10.1-20221024-1 h1:nONd24V5nyJ0IIw8QE+OKv30YuHOTNbJ4FsvczLaM8o= @@ -93,8 +93,8 @@ github.com/aserto-dev/runtime v0.54.2 h1:9M9J38rf+gUeBH3PngRMSHn3W8oTvy6qga8169Y github.com/aserto-dev/runtime v0.54.2/go.mod h1:KYF4DZo5lIWMvRg4QQioypxdi2mDwZF7DmPggAK+2Dg= github.com/aserto-dev/self-decision-logger v0.0.4 h1:Thlz9QTlJm0X+uC3YLUTSyvX+VgF2wVIk9Wh8+rkE/c= github.com/aserto-dev/self-decision-logger v0.0.4/go.mod h1:YJVf6HiAf5UeykhFxHe0dE+ODC8fUEF+PWteSDyJKw4= -github.com/aserto-dev/service-host v0.0.3 h1:C0TKtrkA0/QlhNzHdjQDOKwmTPNBnUPqQiIXuYvceeU= -github.com/aserto-dev/service-host v0.0.3/go.mod h1:xkPJgw1WjoML0uth5A2Leu4zwl+OoUTySQ4MraLK5RQ= +github.com/aserto-dev/service-host v0.0.5 h1:yvcUnfByaHMHDXgO0FmFsSGbGBBfhODN3hKHoVa+LwY= +github.com/aserto-dev/service-host v0.0.5/go.mod h1:KnjlBCcPN3fBZ3qTHu3rubxoPKJQpHrOrP6OEMgHIuE= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= @@ -514,8 +514,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb h1:xIApU0ow1zwMa2uL1VDNeQlNVFTWMQxZUZCMDy0Q4Us= -golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -810,10 +810,10 @@ google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb h1:lK0oleSc7IQsUxO3U5TjL9DWlsxpEBemh+zpB7IqhWI= +google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb h1:Isk1sSH7bovx8Rti2wZK0UZF6oraBDK74uoyLEEVFN0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -834,8 +834,8 @@ google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.58.0 h1:32JY8YpPMSR45K+c3o6b8VL73V+rR8k+DeMIr4vRH8o= -google.golang.org/grpc v1.58.0/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.58.1 h1:OL+Vz23DTtrrldqHK49FUOPHyY75rvFqJfXC84NYW58= +google.golang.org/grpc v1.58.1/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From 1c03aeecf5558d90299701ba64aad66737813607 Mon Sep 17 00:00:00 2001 From: Gert Drapers Date: Wed, 20 Sep 2023 16:43:11 -0700 Subject: [PATCH 11/25] add ds.relations (#132) --- builtins/edge/ds/relation.go | 83 +++++++++++++++++++++++++++++++ go.mod | 2 +- go.sum | 4 +- magefiles/go.mod | 17 +++---- magefiles/go.sum | 31 +++--------- pkg/app/topaz/runtime_resolver.go | 1 + 6 files changed, 103 insertions(+), 35 deletions(-) diff --git a/builtins/edge/ds/relation.go b/builtins/edge/ds/relation.go index 2b4b5be5..9f654a05 100644 --- a/builtins/edge/ds/relation.go +++ b/builtins/edge/ds/relation.go @@ -96,3 +96,86 @@ func RegisterRelation(logger *zerolog.Logger, fnName string, dr resolvers.Direct return ast.NewTerm(v), nil } } + +// RegisterRelations - ds.relations +// +// ds.relations({ +// "object": { +// "type": "" +// "key": "", +// }, +// "relation": { +// "name": "", +// }, +// "subject": { +// "type": "" +// "key": "", +// } +// }) +func RegisterRelations(logger *zerolog.Logger, fnName string, dr resolvers.DirectoryResolver) (*rego.Function, rego.Builtin1) { + return ®o.Function{ + Name: fnName, + Decl: types.NewFunction(types.Args(types.A), types.A), + Memoize: true, + }, + func(bctx rego.BuiltinContext, op1 *ast.Term) (*ast.Term, error) { + var a *dsc.RelationIdentifier + if err := ast.As(op1.Value, &a); err != nil { + return nil, err + } + + if a == nil || a.Object == nil || a.Relation == nil || a.Subject == nil { + + a = &dsc.RelationIdentifier{ + Subject: &dsc.ObjectIdentifier{ + Type: proto.String(""), + Key: proto.String(""), + }, + Relation: &dsc.RelationTypeIdentifier{ + Name: proto.String(""), + }, + Object: &dsc.ObjectIdentifier{ + Type: proto.String(""), + Key: proto.String(""), + }, + } + return help(fnName, a) + } + + client, err := dr.GetDS(bctx.Context) + if err != nil { + return nil, errors.Wrapf(err, "get directory client") + } + + page := &dsc.PaginationRequest{Size: 1, Token: ""} + + resp := &reader.GetRelationsResponse{} + + for { + r, err := client.GetRelations(bctx.Context, &reader.GetRelationsRequest{Param: a, Page: page}) + if err != nil { + traceError(&bctx, fnName, err) + return nil, err + } + + resp.Results = append(resp.Results, r.Results...) + + if r.Page.NextToken == "" { + break + } + page.Token = r.Page.NextToken + } + + buf := new(bytes.Buffer) + if err := ProtoToBuf(buf, resp); err != nil { + return nil, err + } + + v, err := ast.ValueFromReader(buf) + if err != nil { + return nil, err + } + + return ast.NewTerm(v), nil + } +} diff --git a/go.mod b/go.mod index 7bcdf84a..fb747358 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/aserto-dev/go-authorizer v0.20.2 github.com/aserto-dev/go-directory v0.21.7 github.com/aserto-dev/go-directory-cli v0.20.13 - github.com/aserto-dev/go-edge-ds v0.21.10 + github.com/aserto-dev/go-edge-ds v0.21.11 github.com/aserto-dev/go-grpc v0.8.57 github.com/aserto-dev/header v0.0.5 github.com/aserto-dev/logger v0.0.4 diff --git a/go.sum b/go.sum index bc4545cc..f5638edc 100644 --- a/go.sum +++ b/go.sum @@ -75,8 +75,8 @@ github.com/aserto-dev/go-directory v0.21.7 h1:eJXBz5zpOSmI99T+W0V4JufYeq87TbmiUt github.com/aserto-dev/go-directory v0.21.7/go.mod h1:xzUJUiyOcVj9B8Nd/nNYsIB0JSQps3IMuiPKejZkCnc= github.com/aserto-dev/go-directory-cli v0.20.13 h1:TepHQflnC8/czC7vhGe2wkP/EKgyJ/Q+S3fT6jrcVz8= github.com/aserto-dev/go-directory-cli v0.20.13/go.mod h1:wZUFVIF2gYZ7GfelEwy4ND5RX38kYqjVKEMvfo8A+xo= -github.com/aserto-dev/go-edge-ds v0.21.10 h1:2WaGbaKDQ2N1ms2JE942ARsXKvqcy6adQ8FhM70Klg4= -github.com/aserto-dev/go-edge-ds v0.21.10/go.mod h1:lkrCafoscLP4IBcNEd76IDfkkjpTa/GBdhcfuzw9b8I= +github.com/aserto-dev/go-edge-ds v0.21.11 h1:L8ZD+cK42+GKtV/7tZBK9RIWDzrQgf+iRF21tAmbegg= +github.com/aserto-dev/go-edge-ds v0.21.11/go.mod h1:lkrCafoscLP4IBcNEd76IDfkkjpTa/GBdhcfuzw9b8I= github.com/aserto-dev/go-grpc v0.8.57 h1:CjQVxZ2HkBvJrfCtaDeq2kZSn2yLmRel5kHCVzqRMLs= github.com/aserto-dev/go-grpc v0.8.57/go.mod h1:2FcclMDheTsEvYCY72o+EwTaoO0ti3/it4G6xIlzNIM= github.com/aserto-dev/go-http-metrics v0.10.1-20221024-1 h1:nONd24V5nyJ0IIw8QE+OKv30YuHOTNbJ4FsvczLaM8o= diff --git a/magefiles/go.mod b/magefiles/go.mod index 61e7b5c4..9c983c40 100644 --- a/magefiles/go.mod +++ b/magefiles/go.mod @@ -10,7 +10,7 @@ require ( require ( github.com/OneOfOne/xxhash v1.2.8 // indirect - github.com/aserto-dev/clui v0.8.1 // indirect + github.com/aserto-dev/clui v0.8.3 // indirect github.com/fatih/color v1.15.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/gitleaks/go-gitdiff v0.7.4 // indirect @@ -20,26 +20,25 @@ require ( github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.19 // indirect - github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/pelletier/go-toml/v2 v2.0.8 // indirect + github.com/pelletier/go-toml/v2 v2.0.9 // indirect github.com/rivo/uniseg v0.4.4 // indirect - github.com/rogpeppe/go-internal v1.10.0 // indirect - github.com/rs/zerolog v1.29.1 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/rs/zerolog v1.30.0 // indirect github.com/spf13/afero v1.9.5 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.16.0 // indirect - github.com/stretchr/testify v1.8.4 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/ulikunitz/xz v0.5.10 // indirect github.com/zricethezav/gitleaks/v8 v8.3.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.9.0 // indirect - golang.org/x/term v0.9.0 // indirect - golang.org/x/text v0.10.0 // indirect + golang.org/x/sys v0.12.0 // indirect + golang.org/x/term v0.12.0 // indirect + golang.org/x/text v0.13.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/magefiles/go.sum b/magefiles/go.sum index c7dff151..dac5a2cb 100644 --- a/magefiles/go.sum +++ b/magefiles/go.sum @@ -40,8 +40,7 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= -github.com/aserto-dev/clui v0.8.1 h1:5IW9OnFZoIWjvnmTE4FNTXrjP1wnMzd39qKAcRnRHt8= -github.com/aserto-dev/clui v0.8.1/go.mod h1:XpJxwNzSQaGN6rqXONZJEaeez4MUaCPikM2lKSngrXM= +github.com/aserto-dev/clui v0.8.3 h1:foEJuVpMFVP4La3SxUcinxRLOZx/TyS2BRuahbywYFg= github.com/aserto-dev/mage-loot v0.8.15 h1:tSYfLLkRqJ37YW/mQxnIeqlVv5TJw7o8NaKfXios0Wc= github.com/aserto-dev/mage-loot v0.8.15/go.mod h1:Oi7gxbSzxC4qlCMUaiNHWLE1DjmcMTk96fzFHNN/bsc= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -62,7 +61,6 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= @@ -152,24 +150,20 @@ github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= -github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= +github.com/pelletier/go-toml/v2 v2.0.9 h1:uH2qQXheeefCCkuBBSLi7jCiSmj3VRh2+Goq2N7Xxu0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= @@ -180,11 +174,8 @@ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.29.1 h1:cO+d60CHkknCbvzEWxP0S9K6KqyTjrCNUy1LdQLCGPc= -github.com/rs/zerolog v1.29.1/go.mod h1:Le6ESbR7hc+DP6Lt1THiV8CQSdkkNrd3R0XbEgp3ZBU= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rs/zerolog v1.30.0 h1:SymVODrcRsaRaSInD9yQtKbtWqwsfoPcRff/oRXLj4c= github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= @@ -204,7 +195,6 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= @@ -329,7 +319,6 @@ golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -357,12 +346,9 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= -golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= +golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -371,8 +357,7 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/pkg/app/topaz/runtime_resolver.go b/pkg/app/topaz/runtime_resolver.go index 5011a8a9..2aaa0e8a 100644 --- a/pkg/app/topaz/runtime_resolver.go +++ b/pkg/app/topaz/runtime_resolver.go @@ -41,6 +41,7 @@ func NewRuntimeResolver( runtime.WithBuiltin1(ds.RegisterUser(logger, "ds.user", directoryResolver)), runtime.WithBuiltin1(ds.RegisterObject(logger, "ds.object", directoryResolver)), runtime.WithBuiltin1(ds.RegisterRelation(logger, "ds.relation", directoryResolver)), + runtime.WithBuiltin1(ds.RegisterRelations(logger, "ds.relations", directoryResolver)), runtime.WithBuiltin1(ds.RegisterGraph(logger, "ds.graph", directoryResolver)), // authorization check functions From f90d0bbf051a86ba4164d86fa5559a0374c14f74 Mon Sep 17 00:00:00 2001 From: Bogdan Irimie Date: Thu, 21 Sep 2023 17:57:08 +0300 Subject: [PATCH 12/25] Add examples for how to use environment variables (#130) * Add examples for how to use enviornment variables to override topaz config * Improve docs for environment variables --- docs/config.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/docs/config.md b/docs/config.md index ba244440..1d72ecf4 100644 --- a/docs/config.md +++ b/docs/config.md @@ -18,7 +18,63 @@ By default if you run/start the topaz container using the topaz CLI the followin - TOPAZ_CFG_DIR - default $HOME/.config/topaz - the directory from where topaz will load the configuration file - TOPAZ_EDS_DIR - default $HOME/.config/topaz - the directory where topaz will store the edge directory DB -Both run and start topaz CLI commands allow passing optional environment variables to your running container using the -e flag. This will allow you to use any desired environment variable in your configuration file as long as you pass it to the container. +Both run and start topaz CLI commands allow passing optional environment variables to your running container using the -e or --env flag. This will allow you to use any desired environment variable in your configuration file as long as you pass it to the container. + +You have 2 ways of using the environment variables in your configuration file: +### 1. Using vipers automatic environment variable binding +Viper substitutes vales in the config based on the pattern of the environment variable name. The pattern is as follows: +`TOPAZ_OPA_CONFIG_SERVICES_GHCR_CREDENTIALS_BEARER_SCHEME` will be split in: + - `TOPAZ` - is the prefix that is used to identify the environment variable as a topaz environment variable. + - `OPA_CONFIG_SERVICES_GHCR_CREDENTIALS_BEARER_SCHEME` - is converted to the following YAML path: `opa.config.services.ghcr.credentials.bearer.scheme` and it's value is overwritten by the environment variable value. + +Only values that are present in the topaz config file will be overwritten by the environment variables. +In order for the above environment variables to be used in the topaz configuration file the following configuration must be present: +```yaml +opa: + config: + services: + ghcr: + credentials: + bearer: + token: + scheme: +``` +and then run topaz with +```shell +topaz run --env=TOPAZ_OPA_CONFIG_SERVICES_GHCR_CREDENTIALS_BEARER_TOKEN --env=TOPAZ_OPA_CONFIG_SERVICES_GHCR_CREDENTIALS_BEARER_SCHEME +``` + +### 2. Using interpolation +If you prefer to use interpolation, the name of the environment variable does not have to follow a particular pattern. +You just need to interpolate it usign `${ENV_NAME}` in your config file + +```yaml +opa: + config: + services: + ghcr: + credentials: + bearer: + token: ${TOKEN} + scheme: ${SCHEME} +``` +and then run topaz with +```shell +topaz run --env=TOKEN --env=SCHEME +``` + +The interpolation allows you to compose a value from multiple environment variables or a variable and a hardcoded string. +e.g. +```yaml +directory: + db_path: ${TOPAZ_DIR}/db/directory.db +``` + +and then run the topaz with +e.g. +```shell +topaz run --env=TOPAZ_DIR +``` ## 1. Common configuration From 53620c3c0776a2cacc241e0c7c915fcd14f559a9 Mon Sep 17 00:00:00 2001 From: Gert Drapers Date: Mon, 25 Sep 2023 20:42:44 -0700 Subject: [PATCH 13/25] add topaz version --container (#133) --- pkg/cli/cmd/cli.go | 14 ------------ pkg/cli/cmd/version.go | 50 ++++++++++++++++++++++++++++++++++++++++++ pkg/version/version.go | 2 +- 3 files changed, 51 insertions(+), 15 deletions(-) create mode 100644 pkg/cli/cmd/version.go diff --git a/pkg/cli/cmd/cli.go b/pkg/cli/cmd/cli.go index 7c65772a..59740617 100644 --- a/pkg/cli/cmd/cli.go +++ b/pkg/cli/cmd/cli.go @@ -2,12 +2,9 @@ package cmd import ( "errors" - "fmt" "github.com/aserto-dev/topaz/pkg/cli/cc" "github.com/aserto-dev/topaz/pkg/cli/dockerx" - "github.com/aserto-dev/topaz/pkg/cli/x" - "github.com/aserto-dev/topaz/pkg/version" ) var ErrNotRunning = errors.New("topaz is not running, use 'topaz start' or 'topaz run' to start") @@ -32,17 +29,6 @@ type CLI struct { NoCheck bool `name:"no-check" env:"TOPAZ_NO_CHECK" help:"disable local container status check"` } -type VersionCmd struct{} - -func (cmd *VersionCmd) Run(c *cc.CommonCtx) error { - fmt.Fprintf(c.UI.Output(), "%s - %s (%s)\n", - x.AppName, - version.GetInfo().String(), - x.AppVersionTag, - ) - return nil -} - func CheckRunning(c *cc.CommonCtx) error { if c.NoCheck { return nil diff --git a/pkg/cli/cmd/version.go b/pkg/cli/cmd/version.go new file mode 100644 index 00000000..3c02bc78 --- /dev/null +++ b/pkg/cli/cmd/version.go @@ -0,0 +1,50 @@ +package cmd + +import ( + "fmt" + + "github.com/aserto-dev/topaz/pkg/cli/cc" + "github.com/aserto-dev/topaz/pkg/cli/dockerx" + "github.com/aserto-dev/topaz/pkg/cli/x" + "github.com/aserto-dev/topaz/pkg/version" +) + +type VersionCmd struct { + Container bool `short:"c" help:"display topazd container version" default:"false"` + ContainerName string `optional:"" default:"topaz" help:"container name"` + ContainerVersion string `optional:"" default:"latest" help:"container version"` + Platform string `optional:"" default:"linux/amd64" help:"set platform if server is multi-platform capable"` +} + +func (cmd *VersionCmd) Run(c *cc.CommonCtx) error { + fmt.Fprintf(c.UI.Output(), "%s %s\n", + x.AppName, + version.GetInfo().String(), + ) + + if !cmd.Container { + return nil + } + + env := map[string]string{} + + // default command + // docker run -ti --rm --name topazd-version --platform=linux/arm64 ghcr.io/aserto-dev/topaz:latest version + args := []string{ + "run", + "-ti", + "--rm", + "--name", "topazd-version", + "--platform=" + cmd.Platform, + "ghcr.io/aserto-dev/" + cmd.ContainerName + ":" + cmd.ContainerVersion, + "version", + } + + result, err := dockerx.DockerWithOut(env, args...) + if err != nil { + return err + } + fmt.Fprintf(c.UI.Output(), "%s\n", result) + + return nil +} diff --git a/pkg/version/version.go b/pkg/version/version.go index a5745b58..a1090e66 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -42,7 +42,7 @@ func GetInfo() Info { // String() -- return version info string. func (vi Info) String() string { - return fmt.Sprintf("%s g%s %s-%s [%s]", + return fmt.Sprintf("%s %s %s-%s [%s]", vi.Version, vi.Commit, runtime.GOOS, From f86250e726ef1eda18cd5daa5574a3ed7093bd5a Mon Sep 17 00:00:00 2001 From: carabasdaniel Date: Wed, 27 Sep 2023 07:16:38 +0300 Subject: [PATCH 14/25] Bump runtime to v0.56.0 (#136) --- go.mod | 14 ++++++-------- go.sum | 32 +++++++++++++++----------------- 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/go.mod b/go.mod index fb747358..137139d7 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/aserto-dev/logger v0.0.4 github.com/aserto-dev/openapi-authorizer v0.8.81 github.com/aserto-dev/openapi-directory v0.21.5 - github.com/aserto-dev/runtime v0.54.2 + github.com/aserto-dev/runtime v0.56.0 github.com/aserto-dev/self-decision-logger v0.0.4 github.com/aserto-dev/service-host v0.0.5 github.com/fatih/color v1.15.0 @@ -42,7 +42,7 @@ require ( github.com/mitchellh/mapstructure v1.5.0 github.com/onsi/ginkgo v1.16.5 github.com/onsi/gomega v1.27.10 - github.com/open-policy-agent/opa v0.54.0 + github.com/open-policy-agent/opa v0.56.0 github.com/pkg/errors v0.9.1 github.com/rs/zerolog v1.30.0 github.com/spf13/cobra v1.7.0 @@ -57,7 +57,7 @@ require ( ) require ( - github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 // indirect + github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect github.com/agnivade/levenshtein v1.1.1 // indirect @@ -67,12 +67,10 @@ require ( github.com/bufbuild/protocompile v0.5.1 // indirect github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/containerd/containerd v1.7.2 // indirect - github.com/cyphar/filepath-securejoin v0.2.3 // indirect + github.com/containerd/containerd v1.7.4 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/ghodss/yaml v1.0.0 // indirect github.com/go-ini/ini v1.67.0 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -80,7 +78,6 @@ require ( github.com/goccy/go-json v0.10.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/google/flatbuffers v2.0.8+incompatible // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/subcommands v1.2.0 // indirect github.com/gorilla/mux v1.8.0 // indirect @@ -160,5 +157,6 @@ require ( gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - oras.land/oras-go/v2 v2.2.1 // indirect + oras.land/oras-go/v2 v2.3.0 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect ) diff --git a/go.sum b/go.sum index f5638edc..f085db23 100644 --- a/go.sum +++ b/go.sum @@ -36,8 +36,8 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1INOIyr5hWOWhvpmQpY6tKjeG0hT1s3AMC/9fic= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= @@ -89,8 +89,8 @@ github.com/aserto-dev/openapi-authorizer v0.8.81 h1:YDxVLBssBvj71/ecgLFuvC7dkOQu github.com/aserto-dev/openapi-authorizer v0.8.81/go.mod h1:3kmTs3pjNE5aQXt1Ob71uVdqC2qC61EO9gl6O63md4U= github.com/aserto-dev/openapi-directory v0.21.5 h1:H423V9bawyyvfXc335Hpysjkx+fpWjoj20rrYVqfQio= github.com/aserto-dev/openapi-directory v0.21.5/go.mod h1:9qvcKhAO3kg0H+vjRhUrWXbxGtsPMp/g6X7bne0C0L4= -github.com/aserto-dev/runtime v0.54.2 h1:9M9J38rf+gUeBH3PngRMSHn3W8oTvy6qga8169YZuYs= -github.com/aserto-dev/runtime v0.54.2/go.mod h1:KYF4DZo5lIWMvRg4QQioypxdi2mDwZF7DmPggAK+2Dg= +github.com/aserto-dev/runtime v0.56.0 h1:o9bNzrAkoiBMT/TAeIbidXjnyPaDNodzyqMmz5TBXsA= +github.com/aserto-dev/runtime v0.56.0/go.mod h1:CuJMOiaF6yw9wk2reef4cFnUIb/LsqwvQLTIn1cvfMs= github.com/aserto-dev/self-decision-logger v0.0.4 h1:Thlz9QTlJm0X+uC3YLUTSyvX+VgF2wVIk9Wh8+rkE/c= github.com/aserto-dev/self-decision-logger v0.0.4/go.mod h1:YJVf6HiAf5UeykhFxHe0dE+ODC8fUEF+PWteSDyJKw4= github.com/aserto-dev/service-host v0.0.5 h1:yvcUnfByaHMHDXgO0FmFsSGbGBBfhODN3hKHoVa+LwY= @@ -102,7 +102,7 @@ github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+ github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2/go.mod h1:RnUjnIXxEJcL6BgCvNyzCCRzZcxCgsZCi+RNlvYor5Q= -github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -120,13 +120,11 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= -github.com/containerd/containerd v1.7.2 h1:UF2gdONnxO8I6byZXDi5sXWiWvlW3D/sci7dTQimEJo= -github.com/containerd/containerd v1.7.2/go.mod h1:afcz74+K10M/+cjGHIVQrCt3RAQhUSCAjJ9iMYhhkuI= -github.com/containerd/continuity v0.4.1 h1:wQnVrjIyQ8vhU2sgOiL5T07jo+ouqc2bnKsv5/EqGhU= +github.com/containerd/containerd v1.7.4 h1:Q5lwCrO44ahHhO65rXthXkfJUG5W78LXwK9gTt8XFfU= +github.com/containerd/containerd v1.7.4/go.mod h1:gq7JDNtCrI1Zlcc572a9tvP1f1Ja8VBxiB9J00apAtU= +github.com/containerd/continuity v0.4.2-0.20230616210509-1e0d26eb2381 h1:a5jOuoZHKBi2oH9JsfNqrrPpHhmrYU0NAte3M/EPudw= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= -github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -158,7 +156,6 @@ github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4 github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fullstorydev/grpcurl v1.8.7 h1:xJWosq3BQovQ4QrdPO72OrPiWuGgEsxY8ldYsJbPrqI= github.com/fullstorydev/grpcurl v1.8.7/go.mod h1:pVtM4qe3CMoLaIzYS8uvTuDj2jVYmXqMUkZeijnXp/E= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -218,7 +215,6 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= -github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -379,8 +375,8 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= -github.com/open-policy-agent/opa v0.54.0 h1:mGEsK+R5ZTMV8fzzbNzmYDGbTmY30wmRCIHmtm2VqWs= -github.com/open-policy-agent/opa v0.54.0/go.mod h1:d8I8jWygKGi4+T4H07qrbeCdH1ITLsEfT0M+bsvxWw0= +github.com/open-policy-agent/opa v0.56.0 h1:FUSb6MyckjuffOMshEG8P+HGnckxkJ8ENZJHEzAddhk= +github.com/open-policy-agent/opa v0.56.0/go.mod h1:un01L10fkolr00KJMDSqGb2FXCjVyVQOybLtHOfSEfY= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0-rc4 h1:oOxKUJWnFC4YGHCCMNql1x4YaDfYBTS5Y4x/Cgeo1E0= @@ -478,7 +474,7 @@ go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 h1:pginetY7+onl4qN1vl0xW/V/v6OBZ0vVdH+esuJgvmM= go.opentelemetry.io/otel v1.16.0 h1:Z7GVAX/UkAXPKsy94IU+i6thsQS4nb7LviLpnaNeW8s= go.opentelemetry.io/otel v1.16.0/go.mod h1:vl0h9NUa1D5s1nv3A5vZOYWn8av4K8Ml6JDeHrT/bx4= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 h1:/fXHZHGvro6MVqV34fJzDhi7sHGpX3Ej/Qjmfn003ho= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 h1:t4ZwRPU+emrcvM2e9DHd0Fsf0JTPVcbfa/BhTDF03d0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0 h1:cbsD4cUcviQGXdw8+bo5x2wazq10SKz8hEbtCRPcU78= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0 h1:TVQp/bboR4mhZSav+MdgXB8FaRho1RC8UwVn3T0vjVc= go.opentelemetry.io/otel/metric v1.16.0 h1:RbrpwVG1Hfv85LgnZ7+txXioPDoh6EdbZHo26Q3hqOo= @@ -882,10 +878,12 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -oras.land/oras-go/v2 v2.2.1 h1:3VJTYqy5KfelEF9c2jo1MLSpr+TM3mX8K42wzZcd6qE= -oras.land/oras-go/v2 v2.2.1/go.mod h1:GeAwLuC4G/JpNwkd+bSZ6SkDMGaaYglt6YK2WvZP7uQ= +oras.land/oras-go/v2 v2.3.0 h1:lqX1aXdN+DAmDTKjiDyvq85cIaI4RkIKp/PghWlAGIU= +oras.land/oras-go/v2 v2.3.0/go.mod h1:GeAwLuC4G/JpNwkd+bSZ6SkDMGaaYglt6YK2WvZP7uQ= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/controller-runtime v0.15.0 h1:ML+5Adt3qZnMSYxZ7gAverBLNPSMQEibtzAgp0UPojU= sigs.k8s.io/controller-runtime v0.15.0/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= From 7eddba819e64a67ec63450c2c56cbe94d1979fb9 Mon Sep 17 00:00:00 2001 From: Gert Drapers Date: Tue, 26 Sep 2023 21:22:34 -0700 Subject: [PATCH 15/25] importer batch mode (#137) --- Depfile | 2 +- builtins/edge/ds/check.go | 32 ++++++------- builtins/edge/ds/graph.go | 22 ++++----- builtins/edge/ds/object.go | 10 ++-- builtins/edge/ds/relation.go | 32 ++++++------- builtins/edge/ds/user.go | 8 ++-- directory/identity.go | 16 +++---- go.mod | 2 +- go.sum | 4 +- pkg/app/directory/simple_resolver.go | 6 +-- pkg/app/edgedir.go | 16 +++---- pkg/app/impl/jwt.go | 8 ++-- plugins/edge/sync.go | 70 ++++++++++++++-------------- resolvers/directory_resolver.go | 4 +- 14 files changed, 116 insertions(+), 116 deletions(-) diff --git a/Depfile b/Depfile index 3f58fc52..3be7d993 100644 --- a/Depfile +++ b/Depfile @@ -14,7 +14,7 @@ go: version: "v1.10.1" golangci-lint: importPath: "github.com/golangci/golangci-lint/cmd/golangci-lint" - version: "v1.54.2" + version: "v1.53.3" goimports: importPath: "golang.org/x/tools/cmd/goimports" version: "latest" diff --git a/builtins/edge/ds/check.go b/builtins/edge/ds/check.go index 7aba6330..0140167e 100644 --- a/builtins/edge/ds/check.go +++ b/builtins/edge/ds/check.go @@ -1,8 +1,8 @@ package ds import ( - dsc "github.com/aserto-dev/go-directory/aserto/directory/common/v2" - dsr "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" + dsc2 "github.com/aserto-dev/go-directory/aserto/directory/common/v2" + dsr2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" "github.com/aserto-dev/topaz/resolvers" "github.com/open-policy-agent/opa/ast" "github.com/open-policy-agent/opa/rego" @@ -36,9 +36,9 @@ func RegisterCheckRelation(logger *zerolog.Logger, fnName string, dr resolvers.D func(bctx rego.BuiltinContext, op1 *ast.Term) (*ast.Term, error) { type args struct { - Subject *dsc.ObjectIdentifier `json:"subject"` - RelationType *dsc.RelationTypeIdentifier `json:"relation"` - Object *dsc.ObjectIdentifier `json:"object"` + Subject *dsc2.ObjectIdentifier `json:"subject"` + RelationType *dsc2.RelationTypeIdentifier `json:"relation"` + Object *dsc2.ObjectIdentifier `json:"object"` } var a args @@ -49,14 +49,14 @@ func RegisterCheckRelation(logger *zerolog.Logger, fnName string, dr resolvers.D if a.Subject == nil && a.RelationType == nil && a.Object == nil { a = args{ - Subject: &dsc.ObjectIdentifier{ + Subject: &dsc2.ObjectIdentifier{ Type: proto.String(""), Key: proto.String(""), }, - RelationType: &dsc.RelationTypeIdentifier{ + RelationType: &dsc2.RelationTypeIdentifier{ Name: proto.String(""), }, - Object: &dsc.ObjectIdentifier{ + Object: &dsc2.ObjectIdentifier{ Type: proto.String(""), Key: proto.String(""), }, @@ -73,7 +73,7 @@ func RegisterCheckRelation(logger *zerolog.Logger, fnName string, dr resolvers.D a.RelationType.ObjectType = a.Object.Type } - resp, err := client.CheckRelation(bctx.Context, &dsr.CheckRelationRequest{ + resp, err := client.CheckRelation(bctx.Context, &dsr2.CheckRelationRequest{ Subject: a.Subject, Relation: a.RelationType, Object: a.Object, @@ -112,9 +112,9 @@ func RegisterCheckPermission(logger *zerolog.Logger, fnName string, dr resolvers func(bctx rego.BuiltinContext, op1 *ast.Term) (*ast.Term, error) { type args struct { - Subject *dsc.ObjectIdentifier `json:"subject"` - Permission *dsc.PermissionIdentifier `json:"permission"` - Object *dsc.ObjectIdentifier `json:"object"` + Subject *dsc2.ObjectIdentifier `json:"subject"` + Permission *dsc2.PermissionIdentifier `json:"permission"` + Object *dsc2.ObjectIdentifier `json:"object"` } var a args @@ -125,14 +125,14 @@ func RegisterCheckPermission(logger *zerolog.Logger, fnName string, dr resolvers if a.Subject == nil && a.Permission == nil && a.Object == nil { a = args{ - Subject: &dsc.ObjectIdentifier{ + Subject: &dsc2.ObjectIdentifier{ Type: proto.String(""), Key: proto.String(""), }, - Permission: &dsc.PermissionIdentifier{ + Permission: &dsc2.PermissionIdentifier{ Name: proto.String(""), }, - Object: &dsc.ObjectIdentifier{ + Object: &dsc2.ObjectIdentifier{ Type: proto.String(""), Key: proto.String(""), }, @@ -145,7 +145,7 @@ func RegisterCheckPermission(logger *zerolog.Logger, fnName string, dr resolvers return nil, errors.Wrapf(err, "get directory client") } - resp, err := client.CheckPermission(bctx.Context, &dsr.CheckPermissionRequest{ + resp, err := client.CheckPermission(bctx.Context, &dsr2.CheckPermissionRequest{ Subject: a.Subject, Permission: a.Permission, diff --git a/builtins/edge/ds/graph.go b/builtins/edge/ds/graph.go index d1aba82f..35eb62fb 100644 --- a/builtins/edge/ds/graph.go +++ b/builtins/edge/ds/graph.go @@ -3,8 +3,8 @@ package ds import ( "bytes" - dsc "github.com/aserto-dev/go-directory/aserto/directory/common/v2" - dsr "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" + dsc2 "github.com/aserto-dev/go-directory/aserto/directory/common/v2" + dsr2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" "github.com/aserto-dev/topaz/resolvers" "github.com/open-policy-agent/opa/ast" "github.com/open-policy-agent/opa/rego" @@ -42,10 +42,10 @@ func RegisterGraph(logger *zerolog.Logger, fnName string, dr resolvers.Directory func(bctx rego.BuiltinContext, op1 *ast.Term) (*ast.Term, error) { type args struct { - Anchor *dsc.ObjectIdentifier `json:"anchor"` - Subject *dsc.ObjectIdentifier `json:"subject"` - Relation *dsc.RelationTypeIdentifier `json:"relation"` - Object *dsc.ObjectIdentifier `json:"object"` + Anchor *dsc2.ObjectIdentifier `json:"anchor"` + Subject *dsc2.ObjectIdentifier `json:"subject"` + Relation *dsc2.RelationTypeIdentifier `json:"relation"` + Object *dsc2.ObjectIdentifier `json:"object"` } var a args @@ -55,18 +55,18 @@ func RegisterGraph(logger *zerolog.Logger, fnName string, dr resolvers.Directory if a.Anchor == nil && a.Subject == nil && a.Relation == nil && a.Object == nil { a = args{ - Anchor: &dsc.ObjectIdentifier{ + Anchor: &dsc2.ObjectIdentifier{ Type: proto.String(""), Key: proto.String(""), }, - Subject: &dsc.ObjectIdentifier{ + Subject: &dsc2.ObjectIdentifier{ Type: proto.String(""), Key: proto.String(""), }, - Relation: &dsc.RelationTypeIdentifier{ + Relation: &dsc2.RelationTypeIdentifier{ Name: proto.String(""), }, - Object: &dsc.ObjectIdentifier{ + Object: &dsc2.ObjectIdentifier{ Type: proto.String(""), Key: proto.String(""), }, @@ -79,7 +79,7 @@ func RegisterGraph(logger *zerolog.Logger, fnName string, dr resolvers.Directory return nil, errors.Wrapf(err, "get directory client") } - resp, err := client.GetGraph(bctx.Context, &dsr.GetGraphRequest{ + resp, err := client.GetGraph(bctx.Context, &dsr2.GetGraphRequest{ Anchor: a.Anchor, Subject: a.Subject, Relation: a.Relation, diff --git a/builtins/edge/ds/object.go b/builtins/edge/ds/object.go index 6c310ea9..4a7bbd4a 100644 --- a/builtins/edge/ds/object.go +++ b/builtins/edge/ds/object.go @@ -3,8 +3,8 @@ package ds import ( "bytes" - dsc "github.com/aserto-dev/go-directory/aserto/directory/common/v2" - dsr "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" + dsc2 "github.com/aserto-dev/go-directory/aserto/directory/common/v2" + dsr2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" "github.com/aserto-dev/topaz/resolvers" "google.golang.org/protobuf/proto" @@ -29,14 +29,14 @@ func RegisterObject(logger *zerolog.Logger, fnName string, dr resolvers.Director Memoize: true, }, func(bctx rego.BuiltinContext, op1 *ast.Term) (*ast.Term, error) { - var a *dsc.ObjectIdentifier + var a *dsc2.ObjectIdentifier if err := ast.As(op1.Value, &a); err != nil { return nil, err } if a.Type == nil && a.Key == nil { - a = &dsc.ObjectIdentifier{ + a = &dsc2.ObjectIdentifier{ Type: proto.String(""), Key: proto.String(""), } @@ -48,7 +48,7 @@ func RegisterObject(logger *zerolog.Logger, fnName string, dr resolvers.Director return nil, errors.Wrapf(err, "get directory client") } - resp, err := client.GetObject(bctx.Context, &dsr.GetObjectRequest{ + resp, err := client.GetObject(bctx.Context, &dsr2.GetObjectRequest{ Param: a, }) if err != nil { diff --git a/builtins/edge/ds/relation.go b/builtins/edge/ds/relation.go index 9f654a05..e8a84ad0 100644 --- a/builtins/edge/ds/relation.go +++ b/builtins/edge/ds/relation.go @@ -3,8 +3,8 @@ package ds import ( "bytes" - dsc "github.com/aserto-dev/go-directory/aserto/directory/common/v2" - "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" + dsc2 "github.com/aserto-dev/go-directory/aserto/directory/common/v2" + dsr2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" "github.com/aserto-dev/topaz/resolvers" "github.com/pkg/errors" "google.golang.org/protobuf/proto" @@ -33,7 +33,7 @@ import ( // "with_objects": false // }) type extendedRelation struct { - *dsc.RelationIdentifier + *dsc2.RelationIdentifier WithObjects bool `json:"with_objects"` } @@ -52,15 +52,15 @@ func RegisterRelation(logger *zerolog.Logger, fnName string, dr resolvers.Direct if a == nil || a.RelationIdentifier == nil { a = &extendedRelation{ - RelationIdentifier: &dsc.RelationIdentifier{ - Subject: &dsc.ObjectIdentifier{ + RelationIdentifier: &dsc2.RelationIdentifier{ + Subject: &dsc2.ObjectIdentifier{ Type: proto.String(""), Key: proto.String(""), }, - Relation: &dsc.RelationTypeIdentifier{ + Relation: &dsc2.RelationTypeIdentifier{ Name: proto.String(""), }, - Object: &dsc.ObjectIdentifier{ + Object: &dsc2.ObjectIdentifier{ Type: proto.String(""), Key: proto.String(""), }, @@ -75,7 +75,7 @@ func RegisterRelation(logger *zerolog.Logger, fnName string, dr resolvers.Direct return nil, errors.Wrapf(err, "get directory client") } - resp, err := client.GetRelation(bctx.Context, &reader.GetRelationRequest{Param: a.RelationIdentifier, WithObjects: &a.WithObjects}) + resp, err := client.GetRelation(bctx.Context, &dsr2.GetRelationRequest{Param: a.RelationIdentifier, WithObjects: &a.WithObjects}) if err != nil { traceError(&bctx, fnName, err) return nil, err @@ -119,22 +119,22 @@ func RegisterRelations(logger *zerolog.Logger, fnName string, dr resolvers.Direc Memoize: true, }, func(bctx rego.BuiltinContext, op1 *ast.Term) (*ast.Term, error) { - var a *dsc.RelationIdentifier + var a *dsc2.RelationIdentifier if err := ast.As(op1.Value, &a); err != nil { return nil, err } if a == nil || a.Object == nil || a.Relation == nil || a.Subject == nil { - a = &dsc.RelationIdentifier{ - Subject: &dsc.ObjectIdentifier{ + a = &dsc2.RelationIdentifier{ + Subject: &dsc2.ObjectIdentifier{ Type: proto.String(""), Key: proto.String(""), }, - Relation: &dsc.RelationTypeIdentifier{ + Relation: &dsc2.RelationTypeIdentifier{ Name: proto.String(""), }, - Object: &dsc.ObjectIdentifier{ + Object: &dsc2.ObjectIdentifier{ Type: proto.String(""), Key: proto.String(""), }, @@ -147,12 +147,12 @@ func RegisterRelations(logger *zerolog.Logger, fnName string, dr resolvers.Direc return nil, errors.Wrapf(err, "get directory client") } - page := &dsc.PaginationRequest{Size: 1, Token: ""} + page := &dsc2.PaginationRequest{Size: 1, Token: ""} - resp := &reader.GetRelationsResponse{} + resp := &dsr2.GetRelationsResponse{} for { - r, err := client.GetRelations(bctx.Context, &reader.GetRelationsRequest{Param: a, Page: page}) + r, err := client.GetRelations(bctx.Context, &dsr2.GetRelationsRequest{Param: a, Page: page}) if err != nil { traceError(&bctx, fnName, err) return nil, err diff --git a/builtins/edge/ds/user.go b/builtins/edge/ds/user.go index 207654bf..5c0edb6c 100644 --- a/builtins/edge/ds/user.go +++ b/builtins/edge/ds/user.go @@ -3,8 +3,8 @@ package ds import ( "bytes" - dsc "github.com/aserto-dev/go-directory/aserto/directory/common/v2" - dsr "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" + dsc2 "github.com/aserto-dev/go-directory/aserto/directory/common/v2" + dsr2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" "github.com/aserto-dev/topaz/resolvers" "github.com/pkg/errors" "github.com/rs/zerolog" @@ -46,8 +46,8 @@ func RegisterUser(logger *zerolog.Logger, fnName string, dr resolvers.DirectoryR return nil, errors.Wrapf(err, "get directory client") } - resp, err := client.GetObject(bctx.Context, &dsr.GetObjectRequest{ - Param: &dsc.ObjectIdentifier{ + resp, err := client.GetObject(bctx.Context, &dsr2.GetObjectRequest{ + Param: &dsc2.ObjectIdentifier{ Type: proto.String("user"), Key: &a.Key, }, diff --git a/directory/identity.go b/directory/identity.go index b6d5e960..c224d73c 100644 --- a/directory/identity.go +++ b/directory/identity.go @@ -7,24 +7,24 @@ import ( cerr "github.com/aserto-dev/errors" "github.com/aserto-dev/go-authorizer/pkg/aerr" - v2 "github.com/aserto-dev/go-directory/aserto/directory/common/v2" - ds2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" + dsc2 "github.com/aserto-dev/go-directory/aserto/directory/common/v2" + dsr2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" "github.com/aserto-dev/go-directory/pkg/derr" ) -func GetIdentityV2(client ds2.ReaderClient, ctx context.Context, identity string) (*v2.Object, error) { +func GetIdentityV2(client dsr2.ReaderClient, ctx context.Context, identity string) (*dsc2.Object, error) { identityString := "identity" - obj := v2.ObjectIdentifier{Type: &identityString, Key: &identity} + obj := dsc2.ObjectIdentifier{Type: &identityString, Key: &identity} relationString := "identifier" subjectType := "user" withObjects := true - relResp, err := client.GetRelation(ctx, &ds2.GetRelationRequest{ - Param: &v2.RelationIdentifier{ + relResp, err := client.GetRelation(ctx, &dsr2.GetRelationRequest{ + Param: &dsc2.RelationIdentifier{ Object: &obj, - Relation: &v2.RelationTypeIdentifier{Name: &relationString, ObjectType: &identityString}, - Subject: &v2.ObjectIdentifier{Type: &subjectType}, + Relation: &dsc2.RelationTypeIdentifier{Name: &relationString, ObjectType: &identityString}, + Subject: &dsc2.ObjectIdentifier{Type: &subjectType}, }, WithObjects: &withObjects, }) diff --git a/go.mod b/go.mod index 137139d7..79df4b7b 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/aserto-dev/go-authorizer v0.20.2 github.com/aserto-dev/go-directory v0.21.7 github.com/aserto-dev/go-directory-cli v0.20.13 - github.com/aserto-dev/go-edge-ds v0.21.11 + github.com/aserto-dev/go-edge-ds v0.21.12 github.com/aserto-dev/go-grpc v0.8.57 github.com/aserto-dev/header v0.0.5 github.com/aserto-dev/logger v0.0.4 diff --git a/go.sum b/go.sum index f085db23..d7babc01 100644 --- a/go.sum +++ b/go.sum @@ -75,8 +75,8 @@ github.com/aserto-dev/go-directory v0.21.7 h1:eJXBz5zpOSmI99T+W0V4JufYeq87TbmiUt github.com/aserto-dev/go-directory v0.21.7/go.mod h1:xzUJUiyOcVj9B8Nd/nNYsIB0JSQps3IMuiPKejZkCnc= github.com/aserto-dev/go-directory-cli v0.20.13 h1:TepHQflnC8/czC7vhGe2wkP/EKgyJ/Q+S3fT6jrcVz8= github.com/aserto-dev/go-directory-cli v0.20.13/go.mod h1:wZUFVIF2gYZ7GfelEwy4ND5RX38kYqjVKEMvfo8A+xo= -github.com/aserto-dev/go-edge-ds v0.21.11 h1:L8ZD+cK42+GKtV/7tZBK9RIWDzrQgf+iRF21tAmbegg= -github.com/aserto-dev/go-edge-ds v0.21.11/go.mod h1:lkrCafoscLP4IBcNEd76IDfkkjpTa/GBdhcfuzw9b8I= +github.com/aserto-dev/go-edge-ds v0.21.12 h1:WyQmrHmbYs4PPwlmfwAnYEitClTSn36Sm832f1bF5as= +github.com/aserto-dev/go-edge-ds v0.21.12/go.mod h1:lkrCafoscLP4IBcNEd76IDfkkjpTa/GBdhcfuzw9b8I= github.com/aserto-dev/go-grpc v0.8.57 h1:CjQVxZ2HkBvJrfCtaDeq2kZSn2yLmRel5kHCVzqRMLs= github.com/aserto-dev/go-grpc v0.8.57/go.mod h1:2FcclMDheTsEvYCY72o+EwTaoO0ti3/it4G6xIlzNIM= github.com/aserto-dev/go-http-metrics v0.10.1-20221024-1 h1:nONd24V5nyJ0IIw8QE+OKv30YuHOTNbJ4FsvczLaM8o= diff --git a/pkg/app/directory/simple_resolver.go b/pkg/app/directory/simple_resolver.go index 8f3c31a1..e262624f 100644 --- a/pkg/app/directory/simple_resolver.go +++ b/pkg/app/directory/simple_resolver.go @@ -4,7 +4,7 @@ import ( "context" grpcc "github.com/aserto-dev/go-aserto/client" - ds2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" + dsr2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" "github.com/aserto-dev/topaz/resolvers" "github.com/rs/zerolog" @@ -44,7 +44,7 @@ func connect(logger *zerolog.Logger, cfg *grpcc.Config) (*grpcc.Connection, erro } // GetDS - returns a directory reader service client. -func (r *Resolver) GetDS(ctx context.Context) (ds2.ReaderClient, error) { +func (r *Resolver) GetDS(ctx context.Context) (dsr2.ReaderClient, error) { if r.dirConn == nil { dirConn, err := connect(r.logger, r.cfg) if err != nil { @@ -52,5 +52,5 @@ func (r *Resolver) GetDS(ctx context.Context) (ds2.ReaderClient, error) { } r.dirConn = dirConn } - return ds2.NewReaderClient(r.dirConn.Conn), nil + return dsr2.NewReaderClient(r.dirConn.Conn), nil } diff --git a/pkg/app/edgedir.go b/pkg/app/edgedir.go index 06bad54d..dec54fbe 100644 --- a/pkg/app/edgedir.go +++ b/pkg/app/edgedir.go @@ -3,10 +3,10 @@ package app import ( "context" - "github.com/aserto-dev/go-directory/aserto/directory/exporter/v2" - "github.com/aserto-dev/go-directory/aserto/directory/importer/v2" - "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" - "github.com/aserto-dev/go-directory/aserto/directory/writer/v2" + dse2 "github.com/aserto-dev/go-directory/aserto/directory/exporter/v2" + dsi2 "github.com/aserto-dev/go-directory/aserto/directory/importer/v2" + dsr2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" + dsw2 "github.com/aserto-dev/go-directory/aserto/directory/writer/v2" "github.com/aserto-dev/go-edge-ds/pkg/directory" builder "github.com/aserto-dev/service-host" "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" @@ -37,16 +37,16 @@ func (e *EdgeDir) AvailableServices() []string { func (e *EdgeDir) GetGRPCRegistrations(services ...string) builder.GRPCRegistrations { return func(server *grpc.Server) { if contains(services, "reader") { - reader.RegisterReaderServer(server, e.dir.Reader2()) + dsr2.RegisterReaderServer(server, e.dir.Reader2()) } if contains(services, "writer") { - writer.RegisterWriterServer(server, e.dir.Writer2()) + dsw2.RegisterWriterServer(server, e.dir.Writer2()) } if contains(services, "importer") { - importer.RegisterImporterServer(server, e.dir.Importer2()) + dsi2.RegisterImporterServer(server, e.dir.Importer2()) } if contains(services, "exporter") { - exporter.RegisterExporterServer(server, e.dir.Exporter2()) + dse2.RegisterExporterServer(server, e.dir.Exporter2()) } } } diff --git a/pkg/app/impl/jwt.go b/pkg/app/impl/jwt.go index 400f89e2..4a636f19 100644 --- a/pkg/app/impl/jwt.go +++ b/pkg/app/impl/jwt.go @@ -11,8 +11,8 @@ import ( "github.com/aserto-dev/go-authorizer/aserto/authorizer/v2/api" "github.com/aserto-dev/go-authorizer/pkg/aerr" - v2 "github.com/aserto-dev/go-directory/aserto/directory/common/v2" - ds2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" + dsc2 "github.com/aserto-dev/go-directory/aserto/directory/common/v2" + dsr2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" "github.com/lestrrat-go/jwx/jwk" "github.com/lestrrat-go/jwx/jwt" "github.com/pkg/errors" @@ -32,7 +32,7 @@ var ( // getUserFromJWT. func (s *AuthorizerServer) getUserFromJWT(ctx context.Context, bearerJWT string) (proto.Message, error) { - resp := v2.Object{} + resp := dsc2.Object{} ident, err := s.getIdentityFromJWT(ctx, bearerJWT) if err != nil { @@ -193,7 +193,7 @@ func (s *AuthorizerServer) getObject(ctx context.Context, objType, key string) ( return nil, err } - objResp, err := client.GetObject(ctx, &ds2.GetObjectRequest{Param: &v2.ObjectIdentifier{Type: &objType, Key: &key}}) + objResp, err := client.GetObject(ctx, &dsr2.GetObjectRequest{Param: &dsc2.ObjectIdentifier{Type: &objType, Key: &key}}) if err != nil { return nil, err } diff --git a/plugins/edge/sync.go b/plugins/edge/sync.go index 670c2a7a..b3693c50 100644 --- a/plugins/edge/sync.go +++ b/plugins/edge/sync.go @@ -6,10 +6,10 @@ import ( "sync/atomic" "time" - dse "github.com/aserto-dev/go-directory/aserto/directory/exporter/v2" - dsi "github.com/aserto-dev/go-directory/aserto/directory/importer/v2" - dsr "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" - dsw "github.com/aserto-dev/go-directory/aserto/directory/writer/v2" + dse2 "github.com/aserto-dev/go-directory/aserto/directory/exporter/v2" + dsi2 "github.com/aserto-dev/go-directory/aserto/directory/importer/v2" + dsr2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" + dsw2 "github.com/aserto-dev/go-directory/aserto/directory/writer/v2" "golang.org/x/sync/errgroup" dsClient "github.com/aserto-dev/go-aserto/client" @@ -28,10 +28,10 @@ const ( type directoryClient struct { conn grpc.ClientConnInterface - Reader dsr.ReaderClient - Writer dsw.WriterClient - Importer dsi.ImporterClient - Exporter dse.ExporterClient + Reader dsr2.ReaderClient + Writer dsw2.WriterClient + Importer dsi2.ImporterClient + Exporter dse2.ExporterClient } type Sync struct { @@ -39,7 +39,7 @@ type Sync struct { cfg *Config topazConfig *topaz.Config log *zerolog.Logger - exportChan chan *dse.ExportResponse + exportChan chan *dse2.ExportResponse errChan chan error } @@ -66,7 +66,7 @@ func NewSyncMgr(c *Config, topazConfig *topaz.Config, logger *zerolog.Logger) *S cfg: c, topazConfig: topazConfig, log: logger, - exportChan: make(chan *dse.ExportResponse, channelSize), + exportChan: make(chan *dse2.ExportResponse, channelSize), errChan: make(chan error, 1), } } @@ -116,8 +116,8 @@ func (s *Sync) producer() error { counts := Counter{} s.log.Info().Time("producer-start", time.Now().UTC()).Msg(syncRun) - stream, err := pluginDirClient.Exporter.Export(s.ctx, &dse.ExportRequest{ - Options: uint32(dse.Option_OPTION_ALL), + stream, err := pluginDirClient.Exporter.Export(s.ctx, &dse2.ExportRequest{ + Options: uint32(dse2.Option_OPTION_ALL), StartFrom: ×tamppb.Timestamp{}, }) if err != nil { @@ -136,15 +136,15 @@ func (s *Sync) producer() error { atomic.AddInt32(&counts.Received, 1) switch msg.Msg.(type) { - case *dse.ExportResponse_ObjectType: + case *dse2.ExportResponse_ObjectType: atomic.AddInt32(&counts.ObjectTypes, 1) - case *dse.ExportResponse_RelationType: + case *dse2.ExportResponse_RelationType: atomic.AddInt32(&counts.RelationTypes, 1) - case *dse.ExportResponse_Permission: + case *dse2.ExportResponse_Permission: atomic.AddInt32(&counts.Permissions, 1) - case *dse.ExportResponse_Object: + case *dse2.ExportResponse_Object: atomic.AddInt32(&counts.Objects, 1) - case *dse.ExportResponse_Relation: + case *dse2.ExportResponse_Relation: atomic.AddInt32(&counts.Relations, 1) default: s.log.Debug().Msg("unknown message type") @@ -186,8 +186,8 @@ func (s *Sync) subscriber() error { atomic.AddInt32(&counts.Received, 1) switch m := msg.Msg.(type) { - case *dse.ExportResponse_ObjectType: - _, err := topazDirclient.Writer.SetObjectType(s.ctx, &dsw.SetObjectTypeRequest{ObjectType: m.ObjectType}) + case *dse2.ExportResponse_ObjectType: + _, err := topazDirclient.Writer.SetObjectType(s.ctx, &dsw2.SetObjectTypeRequest{ObjectType: m.ObjectType}) if err != nil { s.log.Error().Err(err).Msgf("failed to set object type %v", m.ObjectType) s.errChan <- err @@ -195,8 +195,8 @@ func (s *Sync) subscriber() error { } atomic.AddInt32(&counts.ObjectTypes, 1) - case *dse.ExportResponse_RelationType: - _, err := topazDirclient.Writer.SetRelationType(s.ctx, &dsw.SetRelationTypeRequest{RelationType: m.RelationType}) + case *dse2.ExportResponse_RelationType: + _, err := topazDirclient.Writer.SetRelationType(s.ctx, &dsw2.SetRelationTypeRequest{RelationType: m.RelationType}) if err != nil { s.log.Error().Err(err).Msgf("failed to set relation type %v", m.RelationType) s.errChan <- err @@ -204,8 +204,8 @@ func (s *Sync) subscriber() error { } atomic.AddInt32(&counts.RelationTypes, 1) - case *dse.ExportResponse_Permission: - _, err := topazDirclient.Writer.SetPermission(s.ctx, &dsw.SetPermissionRequest{Permission: m.Permission}) + case *dse2.ExportResponse_Permission: + _, err := topazDirclient.Writer.SetPermission(s.ctx, &dsw2.SetPermissionRequest{Permission: m.Permission}) if err != nil { s.log.Error().Err(err).Msgf("failed to set permission %v", m.Permission) s.errChan <- err @@ -213,8 +213,8 @@ func (s *Sync) subscriber() error { } atomic.AddInt32(&counts.Permissions, 1) - case *dse.ExportResponse_Object: - _, err := topazDirclient.Writer.SetObject(s.ctx, &dsw.SetObjectRequest{Object: m.Object}) + case *dse2.ExportResponse_Object: + _, err := topazDirclient.Writer.SetObject(s.ctx, &dsw2.SetObjectRequest{Object: m.Object}) if err != nil { s.log.Error().Err(err).Msgf("failed to set object %v", m.Object) s.errChan <- err @@ -222,8 +222,8 @@ func (s *Sync) subscriber() error { } atomic.AddInt32(&counts.Objects, 1) - case *dse.ExportResponse_Relation: - _, err := topazDirclient.Writer.SetRelation(s.ctx, &dsw.SetRelationRequest{Relation: m.Relation}) + case *dse2.ExportResponse_Relation: + _, err := topazDirclient.Writer.SetRelation(s.ctx, &dsw2.SetRelationRequest{Relation: m.Relation}) if err != nil { s.log.Error().Err(err).Msgf("failed to set relation %v", m.Relation) s.errChan <- err @@ -295,10 +295,10 @@ func (s *Sync) getTopazDirectoryClient() (*directoryClient, error) { return &directoryClient{ conn: conn.Conn, - Reader: dsr.NewReaderClient(conn.Conn), - Writer: dsw.NewWriterClient(conn.Conn), - Importer: dsi.NewImporterClient(conn.Conn), - Exporter: dse.NewExporterClient(conn.Conn), + Reader: dsr2.NewReaderClient(conn.Conn), + Writer: dsw2.NewWriterClient(conn.Conn), + Importer: dsi2.NewImporterClient(conn.Conn), + Exporter: dse2.NewExporterClient(conn.Conn), }, nil } @@ -332,9 +332,9 @@ func (s *Sync) getPluginDirectoryClient() (*directoryClient, error) { return &directoryClient{ conn: conn.Conn, - Reader: dsr.NewReaderClient(conn.Conn), - Writer: dsw.NewWriterClient(conn.Conn), - Importer: dsi.NewImporterClient(conn.Conn), - Exporter: dse.NewExporterClient(conn.Conn), + Reader: dsr2.NewReaderClient(conn.Conn), + Writer: dsw2.NewWriterClient(conn.Conn), + Importer: dsi2.NewImporterClient(conn.Conn), + Exporter: dse2.NewExporterClient(conn.Conn), }, nil } diff --git a/resolvers/directory_resolver.go b/resolvers/directory_resolver.go index 177a00d6..1567b615 100644 --- a/resolvers/directory_resolver.go +++ b/resolvers/directory_resolver.go @@ -3,9 +3,9 @@ package resolvers import ( "context" - ds2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" + dsr2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" ) type DirectoryResolver interface { - GetDS(ctx context.Context) (ds2.ReaderClient, error) + GetDS(ctx context.Context) (dsr2.ReaderClient, error) } From aff49e4c5cd496fecce2aa65ad943ed5a4300e14 Mon Sep 17 00:00:00 2001 From: Gert Drapers Date: Tue, 26 Sep 2023 22:10:59 -0700 Subject: [PATCH 16/25] upd deps --- go.mod | 8 +- go.sum | 597 ++++++++++++++++++++++++++++++++++++++++++++++- magefiles/go.mod | 2 +- magefiles/go.sum | 15 +- 4 files changed, 601 insertions(+), 21 deletions(-) diff --git a/go.mod b/go.mod index 79df4b7b..64f1942e 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/aserto-dev/go-authorizer v0.20.2 github.com/aserto-dev/go-directory v0.21.7 github.com/aserto-dev/go-directory-cli v0.20.13 - github.com/aserto-dev/go-edge-ds v0.21.12 + github.com/aserto-dev/go-edge-ds v0.21.13 github.com/aserto-dev/go-grpc v0.8.57 github.com/aserto-dev/header v0.0.5 github.com/aserto-dev/logger v0.0.4 @@ -38,19 +38,19 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 github.com/lestrrat-go/jwx v1.2.26 github.com/magefile/mage v1.15.0 - github.com/mennanov/fmutils v0.2.0 + github.com/mennanov/fmutils v0.2.1 github.com/mitchellh/mapstructure v1.5.0 github.com/onsi/ginkgo v1.16.5 github.com/onsi/gomega v1.27.10 github.com/open-policy-agent/opa v0.56.0 github.com/pkg/errors v0.9.1 - github.com/rs/zerolog v1.30.0 + github.com/rs/zerolog v1.31.0 github.com/spf13/cobra v1.7.0 github.com/spf13/viper v1.16.0 github.com/stretchr/testify v1.8.4 go.opencensus.io v0.24.0 golang.org/x/sync v0.3.0 - google.golang.org/grpc v1.58.1 + google.golang.org/grpc v1.58.2 google.golang.org/protobuf v1.31.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/controller-runtime v0.15.0 diff --git a/go.sum b/go.sum index d7babc01..75300fb4 100644 --- a/go.sum +++ b/go.sum @@ -17,24 +17,368 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= +cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= +cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= +cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= +cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= +cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= +cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= +cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= +cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= +cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= +cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= +cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= +cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= +cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= +cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= +cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= +cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= +cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= +cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= +cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= +cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= +cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= +cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= +cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= +cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= +cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= +cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= +cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= +cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= +cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= +cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= +cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= +cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= +cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= +cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= +cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= +cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= +cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= +cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= +cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= +cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= +cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= +cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= +cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= +cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= +cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= +cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= +cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= +cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= +cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= +cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= +cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= +cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= +cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= +cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= +cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= +cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= +cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= +cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= +cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= +cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= +cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= +cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= +cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= +cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= +cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= +cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= +cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= +cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= +cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= +cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= +cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= +cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= +cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= +cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= +cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= +cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= +cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= +cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= +cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= +cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= +cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= +cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= +cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= +cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= +cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= +cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= +cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= +cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= +cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= +cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= +cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= +cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= +cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= +cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= +cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= +cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= +cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= +cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= +cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= +cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= +cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= +cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= +cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= +cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= +cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= +cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= +cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= +cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= +cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= +cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= +cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= +cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= +cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= +cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= +cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= +cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= +cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= +cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= +cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= +cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= +cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= +cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= +cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= +cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= +cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= +cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= +cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= +cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= +cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= +cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= +cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= +cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= +cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= +cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= +cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= +cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= +cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= +cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= +cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= +cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= +cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= +cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= +cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= +cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= +cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= @@ -44,6 +388,7 @@ github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3Q github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/hcsshim v0.10.0-rc.8 h1:YSZVvlIIDD1UxQpJp0h+dnpLUw+TrY0cx8obKsp3bek= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= @@ -75,8 +420,8 @@ github.com/aserto-dev/go-directory v0.21.7 h1:eJXBz5zpOSmI99T+W0V4JufYeq87TbmiUt github.com/aserto-dev/go-directory v0.21.7/go.mod h1:xzUJUiyOcVj9B8Nd/nNYsIB0JSQps3IMuiPKejZkCnc= github.com/aserto-dev/go-directory-cli v0.20.13 h1:TepHQflnC8/czC7vhGe2wkP/EKgyJ/Q+S3fT6jrcVz8= github.com/aserto-dev/go-directory-cli v0.20.13/go.mod h1:wZUFVIF2gYZ7GfelEwy4ND5RX38kYqjVKEMvfo8A+xo= -github.com/aserto-dev/go-edge-ds v0.21.12 h1:WyQmrHmbYs4PPwlmfwAnYEitClTSn36Sm832f1bF5as= -github.com/aserto-dev/go-edge-ds v0.21.12/go.mod h1:lkrCafoscLP4IBcNEd76IDfkkjpTa/GBdhcfuzw9b8I= +github.com/aserto-dev/go-edge-ds v0.21.13 h1:gozjFxh4X2PB5D+39ZVQ0YcISorIgrWYZC3kfhRueWA= +github.com/aserto-dev/go-edge-ds v0.21.13/go.mod h1:hApQOnZ/zf3xuPeUVXNdonKMF+ZGGVBipIWn8KrrjnU= github.com/aserto-dev/go-grpc v0.8.57 h1:CjQVxZ2HkBvJrfCtaDeq2kZSn2yLmRel5kHCVzqRMLs= github.com/aserto-dev/go-grpc v0.8.57/go.mod h1:2FcclMDheTsEvYCY72o+EwTaoO0ti3/it4G6xIlzNIM= github.com/aserto-dev/go-http-metrics v0.10.1-20221024-1 h1:nONd24V5nyJ0IIw8QE+OKv30YuHOTNbJ4FsvczLaM8o= @@ -104,7 +449,9 @@ github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HV github.com/bytecodealliance/wasmtime-go/v3 v3.0.2/go.mod h1:RnUjnIXxEJcL6BgCvNyzCCRzZcxCgsZCi+RNlvYor5Q= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -116,6 +463,8 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= @@ -142,6 +491,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= @@ -193,6 +544,8 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -208,9 +561,11 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -227,11 +582,14 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -242,18 +600,36 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8= github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= @@ -323,10 +699,8 @@ github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= @@ -335,8 +709,8 @@ github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZ github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mennanov/fmutils v0.2.0 h1:Hw/iuQPdKtiB2B9YYh+NX8iv7U7eQu1rICPjr8NvxSo= -github.com/mennanov/fmutils v0.2.0/go.mod h1:DE+qeI9Xy5s1GA4trgq8H26jr5DgJ4a9+0D1DPVCqyk= +github.com/mennanov/fmutils v0.2.1 h1:AUxeJv4o92vKbZaM4RBLZ/i8WzPF/UISTNeXB3gEIl4= +github.com/mennanov/fmutils v0.2.1/go.mod h1:ph1jsu8gV1gUgMURCmfIVbXKG3O2/O5o/UbPbbqu8zs= github.com/miekg/dns v1.1.43 h1:JKfpVSCB84vrAmHzyrsxB5NAr5kLoMXZArPSw7Qlgyg= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= @@ -410,14 +784,15 @@ github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDN github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= github.com/rs/cors v1.9.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.30.0 h1:SymVODrcRsaRaSInD9yQtKbtWqwsfoPcRff/oRXLj4c= -github.com/rs/zerolog v1.30.0/go.mod h1:/tk+P47gFdPXq4QYjvCmT5/Gsug2nagsFWBWhAiSi1w= +github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A= +github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM= github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= @@ -460,6 +835,7 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= @@ -469,6 +845,7 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 h1:pginetY7+onl4qN1vl0xW/V/v6OBZ0vVdH+esuJgvmM= @@ -525,6 +902,7 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -535,6 +913,7 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= @@ -572,9 +951,24 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= @@ -588,6 +982,22 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -598,7 +1008,10 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= @@ -640,16 +1053,41 @@ golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -669,8 +1107,11 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= @@ -678,6 +1119,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -732,6 +1175,11 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= @@ -740,6 +1188,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -759,6 +1211,38 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -803,7 +1287,80 @@ google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20230202175211-008b39050e57/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb h1:lK0oleSc7IQsUxO3U5TjL9DWlsxpEBemh+zpB7IqhWI= @@ -828,10 +1385,27 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.58.1 h1:OL+Vz23DTtrrldqHK49FUOPHyY75rvFqJfXC84NYW58= -google.golang.org/grpc v1.58.1/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= +google.golang.org/grpc v1.58.2 h1:SXUpjxeVF3FKrTYQI4f4KvbGD5u2xccdYdurwowix5I= +google.golang.org/grpc v1.58.2/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -845,6 +1419,7 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/magefiles/go.mod b/magefiles/go.mod index 9c983c40..cad6fdbb 100644 --- a/magefiles/go.mod +++ b/magefiles/go.mod @@ -26,7 +26,7 @@ require ( github.com/pelletier/go-toml/v2 v2.0.9 // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect - github.com/rs/zerolog v1.30.0 // indirect + github.com/rs/zerolog v1.31.0 // indirect github.com/spf13/afero v1.9.5 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect diff --git a/magefiles/go.sum b/magefiles/go.sum index dac5a2cb..40d1b26e 100644 --- a/magefiles/go.sum +++ b/magefiles/go.sum @@ -41,6 +41,7 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/aserto-dev/clui v0.8.3 h1:foEJuVpMFVP4La3SxUcinxRLOZx/TyS2BRuahbywYFg= +github.com/aserto-dev/clui v0.8.3/go.mod h1:KsL/g2x5LAbkEE4ofW/ZoA4FDOIdAyLes/5ullvzUt8= github.com/aserto-dev/mage-loot v0.8.15 h1:tSYfLLkRqJ37YW/mQxnIeqlVv5TJw7o8NaKfXios0Wc= github.com/aserto-dev/mage-loot v0.8.15/go.mod h1:Oi7gxbSzxC4qlCMUaiNHWLE1DjmcMTk96fzFHNN/bsc= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -150,20 +151,20 @@ github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pelletier/go-toml/v2 v2.0.9 h1:uH2qQXheeefCCkuBBSLi7jCiSmj3VRh2+Goq2N7Xxu0= +github.com/pelletier/go-toml/v2 v2.0.9/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= @@ -175,7 +176,10 @@ github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rs/zerolog v1.30.0 h1:SymVODrcRsaRaSInD9yQtKbtWqwsfoPcRff/oRXLj4c= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A= +github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= @@ -341,14 +345,14 @@ golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -358,6 +362,7 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 1f02e2f0145490ea2ee33675da6671375e1f5fe7 Mon Sep 17 00:00:00 2001 From: Gert Drapers Date: Tue, 26 Sep 2023 22:21:36 -0700 Subject: [PATCH 17/25] mage run --- magefiles/magefile.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/magefiles/magefile.go b/magefiles/magefile.go index c9e8285d..e66287c0 100644 --- a/magefiles/magefile.go +++ b/magefiles/magefile.go @@ -6,6 +6,7 @@ import ( "fmt" "os" "os/exec" + "path" "runtime" "github.com/aserto-dev/mage-loot/common" @@ -126,10 +127,21 @@ func Release() error { return common.Release("--rm-dist") } -func Run() error { +func RunTest() error { return sh.RunV("./dist/topazd_"+runtime.GOOS+"_"+runtime.GOARCH+"/topazd", "--config-file", "./pkg/testing/assets/config-local.yaml", "run") } +func Run() error { + home, err := os.UserHomeDir() + if err != nil { + return err + } + + cfg := path.Join(home, ".config/topaz/cfg/config.yaml") + os.Setenv("TOPAZ_DIR", path.Join(home, ".config/topaz")) + return sh.RunV("./dist/topazd_"+runtime.GOOS+"_"+runtime.GOARCH+"/topazd", "--config-file", cfg, "run") +} + func writeVersion() error { version, err := exec.Command("git", "describe", "--tags").Output() if err != nil { From 0a5fefb56d1a5ad8b08939049c4dc156f48fbe58 Mon Sep 17 00:00:00 2001 From: Gert Drapers Date: Thu, 28 Sep 2023 12:15:51 -0700 Subject: [PATCH 18/25] set exitcode when test failed or errored (#140) --- pkg/cli/cmd/test.go | 75 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 3 deletions(-) diff --git a/pkg/cli/cmd/test.go b/pkg/cli/cmd/test.go index b3ff894d..aedbcf9e 100644 --- a/pkg/cli/cmd/test.go +++ b/pkg/cli/cmd/test.go @@ -2,9 +2,11 @@ package cmd import ( "encoding/json" + "errors" "fmt" "os" "strings" + "sync/atomic" "time" az2 "github.com/aserto-dev/go-authorizer/aserto/authorizer/v2" @@ -26,6 +28,7 @@ const ( expected string = "expected" passed string = "PASS" failed string = "FAIL" + errored string = "ERR " ) type TestCmd struct { @@ -36,6 +39,8 @@ type TestCmd struct { type TestExecCmd struct { File string `arg:"" default:"assertions.json" help:"filepath to assertions file"` NoColor bool `flag:"" default:"false" help:"disable colorized output"` + Summary bool `flag:"" default:"false" help:"display test summary"` + results *testResults clients.Config } @@ -43,6 +48,37 @@ type TestTemplateCmd struct { Pretty bool `arg:"" default:"false" help:"pretty print JSON"` } +type testResults struct { + total int32 + passed int32 + failed int32 + errored int32 +} + +func (t *testResults) IncrTotal() { + atomic.AddInt32(&t.total, 1) +} + +func (t *testResults) IncrPassed() { + atomic.AddInt32(&t.passed, 1) +} + +func (t *testResults) IncrFailed() { + atomic.AddInt32(&t.failed, 1) +} + +func (t *testResults) IncrErrored() { + atomic.AddInt32(&t.errored, 1) +} + +func (t *testResults) Passed(passed bool) { + if passed { + t.IncrPassed() + return + } + t.IncrFailed() +} + func (cmd *TestExecCmd) Run(c *cc.CommonCtx) error { r, err := os.Open(cmd.File) if err != nil { @@ -79,6 +115,13 @@ func (cmd *TestExecCmd) Run(c *cc.CommonCtx) error { color.NoColor = true } + cmd.results = &testResults{ + total: int32(len(assertions.Assertions)), + passed: 0, + failed: 0, + errored: 0, + } + for i := 0; i < len(assertions.Assertions); i++ { var msg structpb.Struct err = protojson.UnmarshalOptions{DiscardUnknown: true}.Unmarshal(assertions.Assertions[i], &msg) @@ -107,12 +150,27 @@ func (cmd *TestExecCmd) Run(c *cc.CommonCtx) error { } } + if cmd.Summary { + fmt.Print("\nTest Execution Summary:\n") + fmt.Printf("%s\n", strings.Repeat("-", 23)) + fmt.Printf("total: %d\n", cmd.results.total) + fmt.Printf("passed: %d\n", cmd.results.passed) + fmt.Printf("failed: %d\n", cmd.results.failed) + fmt.Printf("errored: %d\n", cmd.results.errored) + fmt.Println() + } + + if cmd.results.errored > 0 || cmd.results.failed > 0 { + return errors.New("one or more test errored or failed") + } + return nil } -func (*TestExecCmd) execCheckRelation(c *cc.CommonCtx, dsc *client.Client, field *structpb.Value, i int, expected bool) error { +func (cmd *TestExecCmd) execCheckRelation(c *cc.CommonCtx, dsc *client.Client, field *structpb.Value, i int, expected bool) error { var req dsr2.CheckRelationRequest if err := unmarshalReq(field, &req); err != nil { + cmd.results.IncrErrored() return err } @@ -123,6 +181,7 @@ func (*TestExecCmd) execCheckRelation(c *cc.CommonCtx, dsc *client.Client, field start := time.Now() resp, err := dsc.Reader.CheckRelation(c.Context, &req) if err != nil { + cmd.results.IncrErrored() return err } duration := time.Since(start) @@ -137,18 +196,22 @@ func (*TestExecCmd) execCheckRelation(c *cc.CommonCtx, dsc *client.Client, field duration, ) + cmd.results.Passed(outcome == expected) + return nil } -func (*TestExecCmd) execCheckPermission(c *cc.CommonCtx, dsc *client.Client, field *structpb.Value, i int, expected bool) error { +func (cmd *TestExecCmd) execCheckPermission(c *cc.CommonCtx, dsc *client.Client, field *structpb.Value, i int, expected bool) error { var req dsr2.CheckPermissionRequest if err := unmarshalReq(field, &req); err != nil { + cmd.results.IncrErrored() return err } start := time.Now() resp, err := dsc.Reader.CheckPermission(c.Context, &req) if err != nil { + cmd.results.IncrErrored() return err } duration := time.Since(start) @@ -163,18 +226,22 @@ func (*TestExecCmd) execCheckPermission(c *cc.CommonCtx, dsc *client.Client, fie duration, ) + cmd.results.Passed(outcome == expected) + return nil } -func (*TestExecCmd) execCheckDecision(c *cc.CommonCtx, azc az2.AuthorizerClient, field *structpb.Value, i int, expected bool) error { +func (cmd *TestExecCmd) execCheckDecision(c *cc.CommonCtx, azc az2.AuthorizerClient, field *structpb.Value, i int, expected bool) error { var req az2.IsRequest if err := unmarshalReq(field, &req); err != nil { + cmd.results.IncrErrored() return err } start := time.Now() resp, err := azc.Is(c.Context, &req) if err != nil { + cmd.results.IncrErrored() return err } duration := time.Since(start) @@ -189,6 +256,8 @@ func (*TestExecCmd) execCheckDecision(c *cc.CommonCtx, azc az2.AuthorizerClient, duration, ) + cmd.results.Passed(expected == decision.GetIs()) + return nil } From 5e6b4b2b716f5a92eede3729320f0fefff480e09 Mon Sep 17 00:00:00 2001 From: Gert Drapers Date: Thu, 28 Sep 2023 15:50:11 -0700 Subject: [PATCH 19/25] add IDENTITY_TYPE_MANUAL support (#138) * add IDENTITY_TYPE_MANUAL support * go-authorizer@v0.20.3 --- go.mod | 6 +++--- go.sum | 12 ++++++------ pkg/app/impl/jwt.go | 8 ++++++++ 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 64f1942e..fb09216d 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/aserto-dev/clui v0.8.3 github.com/aserto-dev/errors v0.0.6 github.com/aserto-dev/go-aserto v0.20.3 - github.com/aserto-dev/go-authorizer v0.20.2 + github.com/aserto-dev/go-authorizer v0.20.3 github.com/aserto-dev/go-directory v0.21.7 github.com/aserto-dev/go-directory-cli v0.20.13 github.com/aserto-dev/go-edge-ds v0.21.13 @@ -150,9 +150,9 @@ require ( golang.org/x/text v0.13.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.13.0 // indirect - google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 // indirect + google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230920183334-c177e329c48b // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 75300fb4..e8867ebe 100644 --- a/go.sum +++ b/go.sum @@ -412,8 +412,8 @@ github.com/aserto-dev/errors v0.0.6 h1:iH5fkJwBGFPbcdS4B8mwvNdwODlhDEXXPduZtjLh6 github.com/aserto-dev/errors v0.0.6/go.mod h1:kenI1gamsemaR2wS+M2un0kXIJ9exTrmeRT/fCFwlWc= github.com/aserto-dev/go-aserto v0.20.3 h1:yUhMIENFIdKA6TxE36E+99N3baEIuzfj7Y+onsOuLyg= github.com/aserto-dev/go-aserto v0.20.3/go.mod h1:6e5FdSQNvVvaRVIVrAqlQk9uh5k3jtIcDIXciQtN+GQ= -github.com/aserto-dev/go-authorizer v0.20.2 h1:jDjPeaD3lyJmgWFDL6+B8ebG9nrRsqFyMP16HVdNhj4= -github.com/aserto-dev/go-authorizer v0.20.2/go.mod h1:RTpBixDT2WIPOkXcewCXG3NxOWDt22yiXMb+qvdxucM= +github.com/aserto-dev/go-authorizer v0.20.3 h1:Jm3CzUKo4WZKt6XV/N1WLwXxCBCHvsLwpQ82Xh7X6FY= +github.com/aserto-dev/go-authorizer v0.20.3/go.mod h1:cwuPKELMmzTwLMYYoIKFwtf9psNYsDXefOGywtTm094= github.com/aserto-dev/go-decision-logs v0.0.4 h1:beu/mhqZ92ovhSIPOv2f4q0Ci7HWNLla/j/x+ZD5eHw= github.com/aserto-dev/go-decision-logs v0.0.4/go.mod h1:W50DNu4HPCk+iyI39cP3+KBytdrQYVieSPXh9StuRzA= github.com/aserto-dev/go-directory v0.21.7 h1:eJXBz5zpOSmI99T+W0V4JufYeq87TbmiUtnHEYYi144= @@ -1361,12 +1361,12 @@ google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZV google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= google.golang.org/genproto v0.0.0-20230202175211-008b39050e57/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= -google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= +google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13 h1:vlzZttNJGVqTsRFU9AmdnrcO1Znh8Ew9kCD//yjigk0= +google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:CCviP9RmpZ1mxVr8MUjCnSiY09IbAXZxhLE6EhHIdPU= google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb h1:lK0oleSc7IQsUxO3U5TjL9DWlsxpEBemh+zpB7IqhWI= google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb h1:Isk1sSH7bovx8Rti2wZK0UZF6oraBDK74uoyLEEVFN0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230920183334-c177e329c48b h1:tdhlmiMZNpc5p2W5qqKgRrOubaMZ3c85uG/GJtGgL98= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230920183334-c177e329c48b/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/pkg/app/impl/jwt.go b/pkg/app/impl/jwt.go index 4a636f19..d46948ed 100644 --- a/pkg/app/impl/jwt.go +++ b/pkg/app/impl/jwt.go @@ -13,6 +13,7 @@ import ( "github.com/aserto-dev/go-authorizer/pkg/aerr" dsc2 "github.com/aserto-dev/go-directory/aserto/directory/common/v2" dsr2 "github.com/aserto-dev/go-directory/aserto/directory/reader/v2" + "github.com/aserto-dev/go-edge-ds/pkg/pb" "github.com/lestrrat-go/jwx/jwk" "github.com/lestrrat-go/jwx/jwt" "github.com/pkg/errors" @@ -165,6 +166,13 @@ func (s *AuthorizerServer) getUserFromIdentityContext(ctx context.Context, ident } return user, nil + case api.IdentityType_IDENTITY_TYPE_MANUAL: + if identityContext.Identity == "" { + return nil, fmt.Errorf("identity value not set (type: %s)", identityContext.Type.String()) + } + + // the resulting user object will be an empty object. + return pb.NewStruct(), nil default: return nil, fmt.Errorf("invalid identity type %s", identityContext.Type.String()) } From d2348109362eff7b9463fc77bff08bcde586edb3 Mon Sep 17 00:00:00 2001 From: Glenn Block Date: Wed, 11 Oct 2023 13:36:59 -0700 Subject: [PATCH 20/25] Adding sidecar config --- assets/sidecar-deployment/configmap.yaml | 17 ++ assets/sidecar-deployment/deployment.yaml | 70 +++++++ assets/sidecar-deployment/sidecar_config.zip | Bin 0 -> 2702 bytes .../sidecar-deployment/topaz-configmap.yaml | 190 ++++++++++++++++++ 4 files changed, 277 insertions(+) create mode 100644 assets/sidecar-deployment/configmap.yaml create mode 100644 assets/sidecar-deployment/deployment.yaml create mode 100644 assets/sidecar-deployment/sidecar_config.zip create mode 100644 assets/sidecar-deployment/topaz-configmap.yaml diff --git a/assets/sidecar-deployment/configmap.yaml b/assets/sidecar-deployment/configmap.yaml new file mode 100644 index 00000000..c83dd14b --- /dev/null +++ b/assets/sidecar-deployment/configmap.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: todo +data: + .env: | + JWKS_URI=https://citadel.demo.aserto.com/dex/keys + ISSUER=https://citadel.demo.aserto.com/dex + AUDIENCE=citadel-app + + ASERTO_POLICY_ROOT="todoApp" + + # This configuration targets a Topaz instance running locally. + ASERTO_AUTHORIZER_SERVICE_URL=localhost:8282 + ASERTO_AUTHORIZER_CERT_PATH='/root/.config/topaz/certs/grpc-ca.crt' + ASERTO_DIRECTORY_SERVICE_URL=localhost:9292 + ASERTO_DIRECTORY_GRPC_CERT_PATH='/root/.config/topaz/certs/grpc-ca.crt' diff --git a/assets/sidecar-deployment/deployment.yaml b/assets/sidecar-deployment/deployment.yaml new file mode 100644 index 00000000..702727a7 --- /dev/null +++ b/assets/sidecar-deployment/deployment.yaml @@ -0,0 +1,70 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: todo-deployment + labels: + app.kubernetes.io/name: ToDo +spec: + replicas: 1 + selector: + matchLabels: + app: todo + template: + metadata: + labels: + app: todo + spec: + # using an init container to download the topaz edge directory db file that contains our required user informations + initContainers: + - name: get-eds-citadel + image: busybox:1.28 + command: ["/bin/sh","-c","cd /db/;wget https://github.com/aserto-dev/topaz/raw/main/pkg/testing/assets/eds-citadel.db;"] + volumeMounts: + - name: topaz-db + mountPath: "/db/" + containers: + - name: topaz + image: ghcr.io/aserto-dev/topaz:latest + command: ["/app/topazd"] + args: ["run","-c","/config/config.yaml"] + # only exposing the ports used by the todo backend app + ports: + - containerPort: 8282 + - containerPort: 9292 + volumeMounts: + - name: topaz-config + mountPath: "/config/config.yaml" + subPath: "config.yaml" + - name: shared-certs + mountPath: "/root/.config/" + - name: topaz-db + mountPath: "/db/" + - name: todo + image: todo-go-v2:latest + # as we upload a local built docker image to minikube we want to ensure it will not try to pull from an upstream registry + imagePullPolicy: Never + ports: + - containerPort: 3001 + volumeMounts: + - name: config + mountPath: "/app/.env" + subPath: ".env" + - name: shared-certs + mountPath: "/root/.config/" + volumes: + - name: config + configMap: + name: "todo" + items: + - key: ".env" + path: ".env" + - name: topaz-config + configMap: + name: "topaz-config" + # shared volume between topaz and backend application to access the certs + # recommended to use a cert-manager to generate and share the certificates between required parties + - name: shared-certs + emptyDir: {} + # shared volume between topaz and init container to grab the prepared edge directory db file + - name: topaz-db + emptyDir: {} diff --git a/assets/sidecar-deployment/sidecar_config.zip b/assets/sidecar-deployment/sidecar_config.zip new file mode 100644 index 0000000000000000000000000000000000000000..ef8eba61fe091c945bd60da072052de902721007 GIT binary patch literal 2702 zcmbW3c{J4j8ppqe?7OiJX%ZE(Wf^4oS*yVeF~1qf7HQNV#u`aTjghg1EG=Y`bqEPr zvX}K{4~dBRX)IaBdd)ev`|JG9@7#0meV+3<&*$^cb3UKvInV3!M#7m{zySM!qZ9Og z2mWQpK>)xD904wSdtJeL;9Pu^f?aUe?QD4fwlsfH_w<9si2gxb029j^6963K0Dvq~ zBce$K+)CS4a9nD*ukoD)9)RvVdI6t1rV@mCRQ%v>5pL9|d9zLTt{HEln0MF4EvNbo zy_YSIAPULcQ$Ezis6yk0^KS{W37#d>4+cN>^)i!QO+#UJ3bczW)n}rX`s#u2kEK^$ z9>c!!w;JPz%7rL-9bBtL|ZL-TZOSG8VEo9n*rKcg(PBHDAi?duuKY#+g}2%(p2 zDlo)q6c|&{`S9d~?XmZStN2l^!H^%urUu? zEx#{0w0UbmM8m9{BS-(VS17&bj4X$eT3L0XF4vVt+Kv=vD%>p`goLxPV}E=gC?C|1 zQE=qnwxW+60Qe4C;pXmh-8&fP?uGxadQpVZ^BYs)9^X~)S+`H8)Ew&^CR!>Rm%vMy zk2MMQfb$cRr7DK@9g&H47)lcN8Y!xEh2fV0T1-WF;>HLT zXj?GSwE@rMT>1=rCq*-1{|umhB{%HH?X;_P-fF&gLG+5UXYpH}(tk7!C7Wxt^~sw* zZn}%eR{z@gM*p{HsImb}T{kPdDE&#dh0!?|pUjO0s1r=` zi@5ZQFBuK;eoPQi`>^5WHuFVnqT1@XhUQ-LL$Fs>)fjcKW^sHyZls4i8K|n-6X5f7 z#f=)Oog$4y(D@F*)KK*hH;(v-&vM*{=N_-LqLdECwOAx<$V<5veTA>r# z7fr*kp3;&oE&a$7d*ymDo6T<#57$a9r?{lr>oR1ey}dMPvyB(I?`^nR&ideJeq-V2 zAU=AF-DButd^{Rav!IuHqxu4p@Hhsuann=z$=uZ2>(l{-RUKkD6WOi6Ma?*sWDOHc zpVD^Gc*JQO$}b+ zasH4SK;fhdbZ*)Xw4+waRUJMl8q_}xLn=j2hEI&ozZb3aNn3l?vCoBXOqCvv%}8%= z63?t>jA3FJQ9+&=02sse=NQUIo&Prxi^Tx|d@zQ1Zy%SCQ-8xn!%129$%Dm+f8pXH z#?pIQlfQ26ckWC$q)@i4TjW8p-o_~0nq6HxaTxi`&}QAUPkK_obR;oFvGy$Q7>a{G zEt58N^Rjc3CtX)U!9S&8dHK63>S%vJtaulDkt8A!dq@6w`oO}y z&zvkLOMUw*NZ4s*^fV`K=6CgkzyaO!9&}Y`d%UG{#r+-cmD;e0;uEh-**@H9AZm1m zf#w@T-dKZp!z|#4UM&7Gk6J{YZq`y=+Lvf#R94mwiClGzviMw* z6e)8dQOArX;#jG=H)D5h%Hi-FS~mchrh{?ybXrQb0WNX8q^~Nt-^zn{Dc``HV)F<~ zc*k)>OQSxMUASMTuwTnw$EKDooymM!Q6&VEMZ<&x^?>_6Nahf)xHR?C* zNb#7Qa_t)V2)E*aQPwN7Y1x70*$AE8{Nn_hEfdLOW&B@HO~n_OJz2bAf0g>Vmp5K* zCD2`~8_N^z=P%giAvy_`<2y~+&7;&cZb4m56v_EjU#XmRwUF#)6j2_3{tB*nA!MRL z09`UFnw{H*Z3Izkj*w11WJXERS$1X$)-(6$ImpqNTcXIw*g)5c4Yf#x9|#`t3nJ!K zQtrF3{y4bvHS=;DmkaDtfv8@WIZ7rjDS>yAbndCyv+*mExT^H%92lXq?!F762VqRn zkBk?Kdq4c>LD7C&8m6@&`IWQh{7Ub;E8(L~#qtBDdW4T{+;U&YuCqi)l^z{hZno<^P%Ge?akaLJ@fAskLler<* z=^||D>hL)}OVhQu-hMr9%q~$xT(flY3R=s~Ikk)lLrDY=7$Jl>=H>L;sAu1(W?dB)B)+S< zR+KU$i2K9f6}6i>`Z;3RM8I=V_z&uLClQlAaksfHE>`>ezWvim2C{XfhApG;>iX-m z_AD_9MQw|-(hQVT%W>7tAE1N*3?!Th1ZMtIUj6#pGvw7z%Z*^{{st=lL2Ugs_pb Date: Wed, 11 Oct 2023 13:49:27 -0700 Subject: [PATCH 21/25] remove zip --- assets/sidecar-deployment/sidecar_config.zip | Bin 2702 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 assets/sidecar-deployment/sidecar_config.zip diff --git a/assets/sidecar-deployment/sidecar_config.zip b/assets/sidecar-deployment/sidecar_config.zip deleted file mode 100644 index ef8eba61fe091c945bd60da072052de902721007..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2702 zcmbW3c{J4j8ppqe?7OiJX%ZE(Wf^4oS*yVeF~1qf7HQNV#u`aTjghg1EG=Y`bqEPr zvX}K{4~dBRX)IaBdd)ev`|JG9@7#0meV+3<&*$^cb3UKvInV3!M#7m{zySM!qZ9Og z2mWQpK>)xD904wSdtJeL;9Pu^f?aUe?QD4fwlsfH_w<9si2gxb029j^6963K0Dvq~ zBce$K+)CS4a9nD*ukoD)9)RvVdI6t1rV@mCRQ%v>5pL9|d9zLTt{HEln0MF4EvNbo zy_YSIAPULcQ$Ezis6yk0^KS{W37#d>4+cN>^)i!QO+#UJ3bczW)n}rX`s#u2kEK^$ z9>c!!w;JPz%7rL-9bBtL|ZL-TZOSG8VEo9n*rKcg(PBHDAi?duuKY#+g}2%(p2 zDlo)q6c|&{`S9d~?XmZStN2l^!H^%urUu? zEx#{0w0UbmM8m9{BS-(VS17&bj4X$eT3L0XF4vVt+Kv=vD%>p`goLxPV}E=gC?C|1 zQE=qnwxW+60Qe4C;pXmh-8&fP?uGxadQpVZ^BYs)9^X~)S+`H8)Ew&^CR!>Rm%vMy zk2MMQfb$cRr7DK@9g&H47)lcN8Y!xEh2fV0T1-WF;>HLT zXj?GSwE@rMT>1=rCq*-1{|umhB{%HH?X;_P-fF&gLG+5UXYpH}(tk7!C7Wxt^~sw* zZn}%eR{z@gM*p{HsImb}T{kPdDE&#dh0!?|pUjO0s1r=` zi@5ZQFBuK;eoPQi`>^5WHuFVnqT1@XhUQ-LL$Fs>)fjcKW^sHyZls4i8K|n-6X5f7 z#f=)Oog$4y(D@F*)KK*hH;(v-&vM*{=N_-LqLdECwOAx<$V<5veTA>r# z7fr*kp3;&oE&a$7d*ymDo6T<#57$a9r?{lr>oR1ey}dMPvyB(I?`^nR&ideJeq-V2 zAU=AF-DButd^{Rav!IuHqxu4p@Hhsuann=z$=uZ2>(l{-RUKkD6WOi6Ma?*sWDOHc zpVD^Gc*JQO$}b+ zasH4SK;fhdbZ*)Xw4+waRUJMl8q_}xLn=j2hEI&ozZb3aNn3l?vCoBXOqCvv%}8%= z63?t>jA3FJQ9+&=02sse=NQUIo&Prxi^Tx|d@zQ1Zy%SCQ-8xn!%129$%Dm+f8pXH z#?pIQlfQ26ckWC$q)@i4TjW8p-o_~0nq6HxaTxi`&}QAUPkK_obR;oFvGy$Q7>a{G zEt58N^Rjc3CtX)U!9S&8dHK63>S%vJtaulDkt8A!dq@6w`oO}y z&zvkLOMUw*NZ4s*^fV`K=6CgkzyaO!9&}Y`d%UG{#r+-cmD;e0;uEh-**@H9AZm1m zf#w@T-dKZp!z|#4UM&7Gk6J{YZq`y=+Lvf#R94mwiClGzviMw* z6e)8dQOArX;#jG=H)D5h%Hi-FS~mchrh{?ybXrQb0WNX8q^~Nt-^zn{Dc``HV)F<~ zc*k)>OQSxMUASMTuwTnw$EKDooymM!Q6&VEMZ<&x^?>_6Nahf)xHR?C* zNb#7Qa_t)V2)E*aQPwN7Y1x70*$AE8{Nn_hEfdLOW&B@HO~n_OJz2bAf0g>Vmp5K* zCD2`~8_N^z=P%giAvy_`<2y~+&7;&cZb4m56v_EjU#XmRwUF#)6j2_3{tB*nA!MRL z09`UFnw{H*Z3Izkj*w11WJXERS$1X$)-(6$ImpqNTcXIw*g)5c4Yf#x9|#`t3nJ!K zQtrF3{y4bvHS=;DmkaDtfv8@WIZ7rjDS>yAbndCyv+*mExT^H%92lXq?!F762VqRn zkBk?Kdq4c>LD7C&8m6@&`IWQh{7Ub;E8(L~#qtBDdW4T{+;U&YuCqi)l^z{hZno<^P%Ge?akaLJ@fAskLler<* z=^||D>hL)}OVhQu-hMr9%q~$xT(flY3R=s~Ikk)lLrDY=7$Jl>=H>L;sAu1(W?dB)B)+S< zR+KU$i2K9f6}6i>`Z;3RM8I=V_z&uLClQlAaksfHE>`>ezWvim2C{XfhApG;>iX-m z_AD_9MQw|-(hQVT%W>7tAE1N*3?!Th1ZMtIUj6#pGvw7z%Z*^{{st=lL2Ugs_pb Date: Sun, 22 Oct 2023 15:38:22 -0700 Subject: [PATCH 22/25] added role properties and manager relationship (#151) --- assets/citadel-objects.json | 15 ++++++++---- assets/citadel-relations.json | 44 +++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/assets/citadel-objects.json b/assets/citadel-objects.json index ca2d5567..8b951cda 100644 --- a/assets/citadel-objects.json +++ b/assets/citadel-objects.json @@ -121,7 +121,8 @@ "properties": { "email": "rick@the-citadel.com", "picture": "https://github.com/aserto-demo/contoso-ad-sample/raw/main/UserImages/Rick%20Sanchez.jpg", - "status": "USER_STATUS_ACTIVE" + "status": "USER_STATUS_ACTIVE", + "roles": ["admin", "evil_genius"] } }, { @@ -131,7 +132,8 @@ "properties": { "email": "morty@the-citadel.com", "picture": "https://github.com/aserto-demo/contoso-ad-sample/raw/main/UserImages/Morty%20Smith.jpg", - "status": "USER_STATUS_ACTIVE" + "status": "USER_STATUS_ACTIVE", + "roles": ["editor"] } }, { @@ -141,7 +143,8 @@ "properties": { "email": "summer@the-smiths.com", "picture": "https://github.com/aserto-demo/contoso-ad-sample/raw/main/UserImages/Summer%20Smith.jpg", - "status": "USER_STATUS_ACTIVE" + "status": "USER_STATUS_ACTIVE", + "roles": ["editor"] } }, { @@ -151,7 +154,8 @@ "properties": { "email": "beth@the-smiths.com", "picture": "https://github.com/aserto-demo/contoso-ad-sample/raw/main/UserImages/Beth%20Smith.jpg", - "status": "USER_STATUS_ACTIVE" + "status": "USER_STATUS_ACTIVE", + "roles": ["viewer"] } }, { @@ -161,7 +165,8 @@ "properties": { "email": "jerry@the-smiths.com", "picture": "https://github.com/aserto-demo/contoso-ad-sample/raw/main/UserImages/Jerry%20Smith.jpg", - "status": "USER_STATUS_ACTIVE" + "status": "USER_STATUS_ACTIVE", + "roles": ["viewer"] } } ] diff --git a/assets/citadel-relations.json b/assets/citadel-relations.json index cc6c209d..c25fc1f2 100644 --- a/assets/citadel-relations.json +++ b/assets/citadel-relations.json @@ -165,6 +165,50 @@ "key": "editor" } }, + { + "subject": { + "type": "user", + "key": "summer@the-smiths.com" + }, + "relation": "manager", + "object": { + "type": "user", + "key": "rick@the-citadel.com" + } + }, + { + "subject": { + "type": "user", + "key": "morty@the-citadel.com" + }, + "relation": "manager", + "object": { + "type": "user", + "key": "rick@the-citadel.com" + } + }, + { + "subject": { + "type": "user", + "key": "beth@the-smiths.com" + }, + "relation": "manager", + "object": { + "type": "user", + "key": "rick@the-citadel.com" + } + }, + { + "subject": { + "type": "user", + "key": "jerry@the-smiths.com" + }, + "relation": "manager", + "object": { + "type": "user", + "key": "beth@the-smiths.com" + } + }, { "subject": { "type": "user", From fe623be6a87cd5c6eddc6da733c3f82ba7e0bc36 Mon Sep 17 00:00:00 2001 From: Andrew Poland Date: Fri, 27 Oct 2023 12:22:44 -0400 Subject: [PATCH 23/25] archive deployment examples with release --- .github/workflows/ci.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 75c5defe..0883c6c4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -227,6 +227,19 @@ jobs: version: v1.20.0 args: release --clean + - name: Archive Deployment Examples + run: | + cd assets/sidecar-deployment && zip topaz_deployment_examples.zip *.yaml + + - name: Upload example deployment files + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: assets/sidecar-deployment + asset_name: topaz_deployment_examples.zip + tag: ${{ github.ref }} + overwrite: false + msi: needs: release runs-on: windows-latest From fb196f2b3af1eab3f58fde42760da8e56378a807 Mon Sep 17 00:00:00 2001 From: Andrew Poland Date: Fri, 27 Oct 2023 12:23:14 -0400 Subject: [PATCH 24/25] archive deployment examples with release --- .github/workflows/ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 0883c6c4..93d00511 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -227,11 +227,11 @@ jobs: version: v1.20.0 args: release --clean - - name: Archive Deployment Examples + - name: Archive deployment examples run: | cd assets/sidecar-deployment && zip topaz_deployment_examples.zip *.yaml - - name: Upload example deployment files + - name: Upload deployment examples uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} From d12b889814a645fbb2dc5deb08d9f12cfa1764ef Mon Sep 17 00:00:00 2001 From: Andrew Poland <3091714+apoland@users.noreply.github.com> Date: Wed, 1 Nov 2023 12:52:23 -0400 Subject: [PATCH 25/25] publish manifest for todo --- assets/manifest-todo.yaml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 assets/manifest-todo.yaml diff --git a/assets/manifest-todo.yaml b/assets/manifest-todo.yaml new file mode 100644 index 00000000..936d2664 --- /dev/null +++ b/assets/manifest-todo.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=https://www.topaz.sh/schema/manifest.json +--- +### filename: manifest-v2.yaml ### +### description: migrated v2 seed model as v3 manifest ### + +### model +model: + version: 3 + +### object type definitions +types: + ### display_name: User ### + user: + relations: + ### display_name: user:manager ### + manager: user + + ### display_name: Group ### + group: + relations: + ### display_name: group:member ### + member: user | group#member + + ### display_name: Identity ### + identity: + relations: + ### display_name: identity:identifier ### + identifier: user