From 348abb164adc09248d9e9eaa1a166499ebdaf071 Mon Sep 17 00:00:00 2001 From: Lisbet Alvarez <107949262+lisbet-alvarez@users.noreply.github.com> Date: Tue, 28 Jan 2025 17:02:49 -0800 Subject: [PATCH 01/70] bump ui commit ae1e6d2 (#5490) --- internal/ui/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/ui/VERSION b/internal/ui/VERSION index a5f0270698..1ecaa21395 100644 --- a/internal/ui/VERSION +++ b/internal/ui/VERSION @@ -1,4 +1,4 @@ -639aa47e196b4d63c7be44ade5342fc479fe0376 +ae1e6d27489f3259e6622b9fdb5781a365eb5473 # This file determines the version of the UI to embed in the boundary binary. # Update this file by running 'make update-ui-version' from the root of this repo. # Set UI_COMMITISH when running the above target to update to a specific version. From 628f3fb0c7c1126a9886775b2b76144391d5fb15 Mon Sep 17 00:00:00 2001 From: Judith Malnick Date: Wed, 29 Jan 2025 07:48:46 -0800 Subject: [PATCH 02/70] Remove web team from CODEOWNERS for content directories (#5476) * remove web team from contenet directories * fix the name of the education team * re-remove old section for education and web --- CODEOWNERS | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 2520668fd3..c307950dda 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -2,6 +2,15 @@ # the repo, unless a later match takes precedence. * @hashicorp/boundary -# web presence and education +# engineering and web presence get notified of, and can approve changes to, web tooling, but not content. -/website/ @hashicorp/boundary-education-approvers @hashicorp/web-presence @hashicorp/boundary \ No newline at end of file +/website/ @hashicorp/web-presence @hashicorp/boundary +/website/data/ +/website/public/ +/website/content/ + +# education and engineering get notified of, and can approve changes to web content. + +/website/data/ @hashicorp/boundary-education-approvers @hashicorp/boundary +/website/public/ @hashicorp/boundary-education-approvers @hashicorp/boundary +/website/content/ @hashicorp/boundary-education-approvers @hashicorp/boundary From 47e314ebc2a2f5c8f096cf2a6b69d5ff9fab02aa Mon Sep 17 00:00:00 2001 From: Louis Ruch Date: Wed, 29 Jan 2025 11:33:01 -0800 Subject: [PATCH 03/70] fix(scheduler): ignore 404 when updating job run (#5495) --- internal/scheduler/job/repository_run.go | 2 +- internal/scheduler/scheduler.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/scheduler/job/repository_run.go b/internal/scheduler/job/repository_run.go index b5c0eec419..a3c0803e2c 100644 --- a/internal/scheduler/job/repository_run.go +++ b/internal/scheduler/job/repository_run.go @@ -93,7 +93,7 @@ func (r *Repository) UpdateProgress(ctx context.Context, runId string, completed // Failed to update run, either it does not exist or was in an invalid state if err = r.LookupById(ctx, run); err != nil { if errors.IsNotFoundError(err) { - return errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("job run %q does not exist", runId))) + return errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("job run %q does not exist", runId)), errors.WithoutEvent()) } return errors.Wrap(ctx, err, op) } diff --git a/internal/scheduler/scheduler.go b/internal/scheduler/scheduler.go index 66592fe7b8..5969598a5f 100644 --- a/internal/scheduler/scheduler.go +++ b/internal/scheduler/scheduler.go @@ -332,8 +332,8 @@ func (s *Scheduler) updateRunningJobProgress(ctx context.Context, j *runningJob) } status := j.status() _, err = repo.UpdateProgress(ctx, j.runId, status.Completed, status.Total, status.Retries) - if errors.Match(errors.T(errors.InvalidJobRunState), err) { - // Job has been persisted with a final run status, cancel job context to trigger early exit. + if errors.Match(errors.T(errors.InvalidJobRunState), err) || errors.IsNotFoundError(err) { + // Job has been persisted with a final run status or deleted, cancel job context to trigger early exit. j.cancelCtx() return nil } From 81f1151ba2277b9a03faf23ec1e7d0edb7016be3 Mon Sep 17 00:00:00 2001 From: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> Date: Thu, 30 Jan 2025 12:06:54 -0500 Subject: [PATCH 04/70] docs: Update release notes (#5480) * docs: Update release notes * docs: Add new features * docs: Fix date * docs: Update worker filter feature description --- .../content/docs/release-notes/v0_19_0.mdx | 203 ++++++++++++++++++ website/data/docs-nav-data.json | 4 + 2 files changed, 207 insertions(+) create mode 100644 website/content/docs/release-notes/v0_19_0.mdx diff --git a/website/content/docs/release-notes/v0_19_0.mdx b/website/content/docs/release-notes/v0_19_0.mdx new file mode 100644 index 0000000000..9a7b43781c --- /dev/null +++ b/website/content/docs/release-notes/v0_19_0.mdx @@ -0,0 +1,203 @@ +--- +layout: docs +page_title: v0.19.0 release notes +description: >- + Learn more about the new features included in the Boundary 0.19.0 release. Understand any deprecations, changes, and known issues. +--- + +# Boundary 0.19.0 release notes + +**GA date:** January 30, 2025 + +@include 'release-notes/intro.mdx' + +## Important changes + + + + + + + + + + + + + + + + + + + + + + + + + + +
ChangeDescription
+ Role creation + + In a future version Boundary will no longer automatically create roles when new scopes are created. This was implemented prior to multi-scope grants to ensure administrators and users had default permissions in new scopes. Since Boundary 0.15, initial roles created for new clusters provide these permissions by default to all scopes using multi-scope grants. +
+ Docker image no longer contains curl + + As of version 0.17.1 and later, the curl binary is no longer included in the published Docker container image for Boundary. The image now includes wget, which you can alternatively use to check the health endpoint for a worker. If your workflow depends on having curl in the image, you can dynamically install it using apk. +

+ Learn more:  Known issues and breaking changes +
+ Go version 1.23 TLS handshake behavior changes + + Boundary version 0.18.x uses Go version 1.23, which introduced a new TLS handshake behavior. Some VPN providers struggle with the TLS handshake being sent over 2 frames instead of 1, which can lead to Boundary version 0.18.x and later controllers, workers, or clients being unable to establish connections. As a workaround, you can revert back to the previous TLS handshake behavior. +

+ Learn more:  Known issues and breaking changes +
+ +## New features + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureUpdateDescription
+ Dynamic host catalogs for GCP + + GA + + Boundary now supports dynamic host catalogs for GCP. +

+ When you configure dynamic host catalogs, Boundary securely queries infrastructure providers at runtime to discover and configure new services. You can define rules for whether you want Boundary to automatically add any discovered hosts as members of the host set. +

+ Learn more: Host discovery and GCP dynamic hosts. +
+ Worker filter generator + + GA + + A new filter generator was added to the Admin Console UI, allowing you to more easily create worker filters for targets, credential stores, and storage buckets. +

+ Learn more: Worker tags. +
+ Vault brokered credentials format change + + GA + + Previously, when you brokered credentials from a Vault credential store, the credentials displayed in raw JSON and could contain special characters. It was difficult to consume the credentials in this format. Credentials are now displayed in a format that is easier to cut and paste. +

+ Learn more: Create a Vault credential store. +
+ +## Known issues and breaking changes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VersionIssueDescription
+ 0.13.0+ + + Rotation of AWS access and secret keys during a session results in stale recordings + + In Boundary version 0.13.0+, when you rotate a storage bucket's secrets, any new sessions use the new credentials. However, previously established sessions continue to use the old credentials. +

+ As a best practice, administrators should rotate credentials in a phased manner, ensuring that all previously established sessions are completed before revoking the stale credentials. + Otherwise, you may end up with recordings that aren't stored in the remote storage bucket, and are unable to be played back. +
+ 0.13.0+ + + Unsupported recovery workflow during worker failure + + If a worker fails during a recording, there is no way to recover the recording. This could happen due to a network connectivity issue or because a worker is scaled down, for example. +

+ Learn more:  + Unsupported recovery workflow +
+ 0.17.1+ + + Docker image no longer contains curl + + As of version 0.17.1 and later, the curl binary is no longer included in the published Docker container image for Boundary. +

+ The image now includes wget. You can use wget to check the health endpoint for workers. +

+ Learn more:  Check the health endpoint using wget +

+ If your workflow depends on having curl in the image, you can dynamically install it using apk. Refer to the following commands for examples of using apk to install curl: +

+ <CONTAINER-ID> apk add curl +

+ or +

+ kubectl exec -ti <NAME> -- apk add curl +
+ 0.18.x+ + + Boundary version 0.18.x and later CLI is unable to establish connections using the boundary connect command + + Boundary version 0.18.x uses Go version 1.23, which introduced a new TLS handshake behavior. Some VPN providers struggle with the TLS handshake being sent over 2 frames instead of 1, which can lead to Boundary version 0.18.x and later controllers, workers, or clients being unable to establish connections. As a workaround, you can revert back to the previous TLS handshake behavior. +

+ To revert back to the previous TLS handshake behavior, add the tlskyber=0 parameters to the GODEBUG environment variable before the boundary connect command. For example: +

+ GODEBUG=tlskyber=0 boundary connect ssh -target-id <ID> +

+ Learn more: Go issue #70047 and Go 1.23 Release Notes +

+
\ No newline at end of file diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json index 3034749aec..1fd3d8050e 100644 --- a/website/data/docs-nav-data.json +++ b/website/data/docs-nav-data.json @@ -1817,6 +1817,10 @@ "title": "Overview", "path": "release-notes" }, + { + "title": "v0.19.0", + "path": "release-notes/v0_19_0" + }, { "title": "v0.18.0", "path": "release-notes/v0_18_0" From f61354d11d467ca4c52a4d68e5d4dd4ed4caa92c Mon Sep 17 00:00:00 2001 From: Robin Beck Date: Thu, 30 Jan 2025 10:40:15 -0700 Subject: [PATCH 05/70] Docs: update worker filter UI (#5489) * replaces screenshots and paths * updates worker filter UI descriptions and screenshots --- .../docs/concepts/filtering/worker-tags.mdx | 17 ++++++++--------- .../static-cred-vault.mdx | 2 +- .../create-storage-bucket.mdx | 8 ++++---- .../enable-session-recording.mdx | 3 ++- .../public/img/enable-session-recording.png | Bin 288178 -> 0 bytes .../img/session-rec-worker-filter-dark.png | Bin 38216 -> 0 bytes .../img/session-rec-worker-filter-light.png | Bin 38432 -> 0 bytes .../public/img/target-worker-filter-dark.png | Bin 131672 -> 0 bytes .../public/img/target-worker-filter-light.png | Bin 131895 -> 0 bytes .../img/ui/enable-session-recording_dark.png | Bin 0 -> 130980 bytes .../img/ui/enable-session-recording_light.png | Bin 0 -> 130457 bytes .../img/ui/session-rec-worker-filter_dark.png | Bin 0 -> 211751 bytes .../img/ui/session-rec-worker-filter_light.png | Bin 0 -> 213695 bytes .../ui/target-ingress-worker-filter_dark.png | Bin 0 -> 147055 bytes .../ui/target-ingress-worker-filter_light.png | Bin 0 -> 126504 bytes .../public/img/ui/vault-worker-filter_dark.png | Bin 0 -> 78196 bytes .../img/ui/vault-worker-filter_light.png | Bin 0 -> 77471 bytes .../public/img/vault-worker-filter-dark.png | Bin 36445 -> 0 bytes .../public/img/vault-worker-filter-light.png | Bin 34349 -> 0 bytes 19 files changed, 15 insertions(+), 15 deletions(-) delete mode 100644 website/public/img/enable-session-recording.png delete mode 100644 website/public/img/session-rec-worker-filter-dark.png delete mode 100644 website/public/img/session-rec-worker-filter-light.png delete mode 100644 website/public/img/target-worker-filter-dark.png delete mode 100644 website/public/img/target-worker-filter-light.png create mode 100644 website/public/img/ui/enable-session-recording_dark.png create mode 100644 website/public/img/ui/enable-session-recording_light.png create mode 100644 website/public/img/ui/session-rec-worker-filter_dark.png create mode 100644 website/public/img/ui/session-rec-worker-filter_light.png create mode 100644 website/public/img/ui/target-ingress-worker-filter_dark.png create mode 100644 website/public/img/ui/target-ingress-worker-filter_light.png create mode 100644 website/public/img/ui/vault-worker-filter_dark.png create mode 100644 website/public/img/ui/vault-worker-filter_light.png delete mode 100644 website/public/img/vault-worker-filter-dark.png delete mode 100644 website/public/img/vault-worker-filter-light.png diff --git a/website/content/docs/concepts/filtering/worker-tags.mdx b/website/content/docs/concepts/filtering/worker-tags.mdx index da3a94a96e..38edd9be3f 100644 --- a/website/content/docs/concepts/filtering/worker-tags.mdx +++ b/website/content/docs/concepts/filtering/worker-tags.mdx @@ -107,7 +107,7 @@ array with the tags intended for the particular key is required: ``` - + You can tag workers with a set of key/value API tags in the Boundary Admin UI. The keys and values can be any lower-cased printable value. Each key can have more than one value: @@ -410,8 +410,8 @@ This is the worker a client connects to when initiating a connection to a target Example of a filter configured on a target in the Admin UI: -![](/img/target-worker-filter-light.png#light-theme-only) -![](/img/target-worker-filter-dark.png#dark-theme-only) +![Example of a target ingress worker filter](/img/ui/target-ingress-worker-filter_light.png#light-theme-only) +![Example of a target ingress worker filter](/img/ui/target-ingress-worker-filter_dark.png#dark-theme-only) @@ -441,8 +441,6 @@ resource "boundary_target" "aws-webservers-prod" { ### Example worker filter for Vault credential store - - Tags are used to control which [workers] can manage Vault requests by specifying a `worker_filter`attribute when configuring [credential stores]. @@ -464,8 +462,8 @@ Vault requests to Boundary controllers. Example of a worker filter configured on a Vault credential store in the Admin UI: -![](/img/vault-worker-filter-light.png#light-theme-only) -![](/img/vault-worker-filter-dark.png#dark-theme-only) +![Example of a credential store worker filter](/img/ui/vault-worker-filter_light.png#light-theme-only) +![Example of a credential store worker filter](/img/ui/vault-worker-filter_dark.png#dark-theme-only) @@ -495,6 +493,7 @@ resource "boundary_credential_store_vault" "vault_cred_store" { ### Example worker filter for storage buckets + Storage buckets are used for session recording, which requires HCP Boundary or Boundary Enterprise Session recording functions are performed by Boundary workers. Workers also store recordings on Boundary storage buckets. When you create Boundary storage buckets, you can use tags to select the workers you prefer to use for session recording responsibilities. @@ -504,8 +503,8 @@ Session recording functions are performed by Boundary workers. Workers also stor Example of a worker filter configured on a storage bucket in the Admin UI: -![](/img/session-rec-worker-filter-light.png#light-theme-only) -![](/img/session-rec-worker-filter-dark.png#dark-theme-only) +![Example of a storage bucket worker filter](/img/ui/session-rec-worker-filter_light.png#light-theme-only) +![Example of a storage bucket worker filter](/img/ui/session-rec-worker-filter_dark.png#dark-theme-only) diff --git a/website/content/docs/configuration/credential-management/static-cred-vault.mdx b/website/content/docs/configuration/credential-management/static-cred-vault.mdx index 6cb82cff08..4035731a5a 100644 --- a/website/content/docs/configuration/credential-management/static-cred-vault.mdx +++ b/website/content/docs/configuration/credential-management/static-cred-vault.mdx @@ -32,7 +32,7 @@ Complete the following steps to create a Vault credential store: 1. Provide a name for your credential store and select type **Vault**. 1. Complete the fields related to your Vault instance: - **Address** - The address of your Vault instance. - - **Worker Filter** (optional) - If your Vault instance does not have a publicly accessible address and instead is proxied through a Boundary worker, enter the worker filter. This should be a boolean expression. Refer to the examples in the [Worker tags](/boundary/docs/concepts/filtering/worker-tags) documentation. + - **Worker Filter** (optional) - If your Vault instance does not have a publicly accessible address and instead is proxied through a Boundary worker, enter the worker filter. This should be a boolean expression. To generate a worker filter in the correct format, toggle the **Show filter generator** switch. Refer to the examples in the [Worker tags](/boundary/docs/concepts/filtering/worker-tags) documentation. - **Token** - Token provided by Vault that provides access to the static credentials within your Vault instance. - **Namespace** (optional) - Vault namespace. Requires Vault Enterprise. - **TLS Server Name** (optional) - Name to use as the SNI host if you connect to Vault via TLS. diff --git a/website/content/docs/configuration/session-recording/create-storage-bucket.mdx b/website/content/docs/configuration/session-recording/create-storage-bucket.mdx index 7fa84683c8..36962c2570 100644 --- a/website/content/docs/configuration/session-recording/create-storage-bucket.mdx +++ b/website/content/docs/configuration/session-recording/create-storage-bucket.mdx @@ -61,7 +61,7 @@ Complete the following steps to create a storage bucket in Boundary. - **Access key ID**: (Required) The access key ID that AWS generates for the IAM user to use with the storage bucket. - **Secret access key**: (Required) The secret access key that AWS generates for the IAM user to use with this storage bucket. - - **Worker filter**: (Required) A filter expression that indicates which Boundary workers have access to the storage. The filter must match an existing worker in order to create a Boundary storage bucket. Refer to [filter examples](/boundary/docs/concepts/filtering/worker-tags#example-worker-filter-for-storage-buckets) to learn about worker tags and filters. + - **Worker filter**: (Required) A filter expression that indicates which Boundary workers have access to the storage. The filter must match an existing worker to create a Boundary storage bucket. This should be a boolean expression. To generate a worker filter in the correct format, toggle the **Show filter generator** switch. Refer to [filter examples](/boundary/docs/concepts/filtering/worker-tags#example-worker-filter-for-storage-buckets) to learn about worker tags and filters. - **Disable credential rotation**: (Optional) Prevents the AWS plugin from automatically rotating credentials. Although credentials are stored encrypted in Boundary, by default the [AWS plugin](https://github.com/hashicorp/boundary-plugin-aws) attempts to rotate the credentials you provide. The given credentials are used to create a new credential, and then the original credential is revoked. @@ -79,7 +79,7 @@ Complete the following steps to create a storage bucket in Boundary. For more information, refer to the AWS documentation for [Logging IAM and AWS STS API calls with AWS CloudTrail](https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html). - **Role tags**: An object with key-value pair attributes that is passed when you assume an IAM role. For more information, refer to the AWS documentation for [Passing session tags in AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html). - - **Worker filter**: (Required) A filter expression that indicates which Boundary workers have access to the storage. The filter must match an existing worker in order to create a Boundary storage bucket. Refer to [filter examples](/boundary/docs/concepts/filtering/worker-tags#example-worker-filter-for-storage-buckets) to learn about worker tags and filters. + - **Worker filter**: (Required) A filter expression that indicates which Boundary workers have access to the storage. The filter must match an existing worker to create a Boundary storage bucket. This should be a boolean expression. To generate a worker filter in the correct format, toggle the **Show filter generator** switch. Refer to [filter examples](/boundary/docs/concepts/filtering/worker-tags#example-worker-filter-for-storage-buckets) to learn about worker tags and filters. - **Disable credential rotation**: (Required) Prevents the AWS plugin from automatically rotating credentials. This option is required if you use dynamic credentials. @@ -275,7 +275,7 @@ Complete the following steps to create a storage bucket in Boundary. - **Region**: (Optional) The region to configure the storage bucket for. - **Access key ID** (Required): The MinIO service account's access key to use with this storage bucket. - **Secret access key** (Required): The MinIO service account's secret key to use with this storage bucket. - - **Worker filter**: (Required) A filter expression that indicates which Boundary workers have access to the storage. The filter must match an existing worker in order to create a Boundary storage bucket. Refer to [filter examples](/boundary/docs/concepts/filtering/worker-tags#example-worker-filter-for-storage-buckets) to learn about worker tags and filters. + - **Worker filter**: (Required) A filter expression that indicates which Boundary workers have access to the storage. The filter must match an existing worker to create a Boundary storage bucket. This should be a boolean expression. To generate a worker filter in the correct format, toggle the **Show filter generator** switch. Refer to [filter examples](/boundary/docs/concepts/filtering/worker-tags#example-worker-filter-for-storage-buckets) to learn about worker tags and filters. - **Disable credential rotation**: (Optional) Controls whether the plugin will rotate the incoming credentials and manage a new MinIO service account. If this attribute is set to false, or not provided, the plugin will rotate the incoming credentials, using them to create a new MinIO service account, then delete the incoming credentials. 1. Click **Save**. @@ -384,7 +384,7 @@ Complete the following steps to create a storage bucket in Boundary using an S3- - **Region**: (Optional) The region to configure the storage bucket for. - **Access key ID** (Required): The storage provider's service account's access key to use with this storage bucket. - **Secret access key** (Required): The storage provider's service account's secret key to use with this storage bucket. - - **Worker filter**: (Required) A filter expression that indicates which Boundary workers have access to the storage. The filter must match an existing worker in order to create a Boundary storage bucket. Refer to [filter examples](/boundary/docs/concepts/filtering/worker-tags#example-worker-filter-for-storage-buckets) to learn about worker tags and filters. + - **Worker filter**: (Required) A filter expression that indicates which Boundary workers have access to the storage. The filter must match an existing worker to create a Boundary storage bucket. This should be a boolean expression. To generate a worker filter in the correct format, toggle the **Show filter generator** switch. Refer to [filter examples](/boundary/docs/concepts/filtering/worker-tags#example-worker-filter-for-storage-buckets) to learn about worker tags and filters. - **Disable credential rotation**: (Optional) Controls whether the plugin will rotate the incoming credentials and manage a new storage service account. If this attribute is set to false, or not provided, the plugin will rotate the incoming credentials, using them to create a new storage service account, then delete the incoming credentials. Note that credential rotation is not supported for Hitachi Content Platform, and it may not function for other S3-compatible providers. diff --git a/website/content/docs/configuration/session-recording/enable-session-recording.mdx b/website/content/docs/configuration/session-recording/enable-session-recording.mdx index 56e310a71b..b29dd49a45 100644 --- a/website/content/docs/configuration/session-recording/enable-session-recording.mdx +++ b/website/content/docs/configuration/session-recording/enable-session-recording.mdx @@ -47,7 +47,8 @@ The following setting is required for session recording: 1. Click **Save**. 1. Click **Enable recording**. - ![Enable session recording](/img/enable-session-recording.png) + ![Example of enabling session recording](/img/ui/enable-session-recording_light.png#light-theme-only) + ![Example of enabling session recording](/img/ui/enable-session-recording_dark.png#dark-theme-only) 1. Enable the **Record sessions for this target** option. 1. Select the storage bucket where you want to store recordings from this target. diff --git a/website/public/img/enable-session-recording.png b/website/public/img/enable-session-recording.png deleted file mode 100644 index 37f3f2ad9305f32b15d8a788c98e18a322aea5ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288178 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̜Dp5$I1Q7wfZAk@^@4;TV% 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

f7JXAA!@3FH|I6Pd6=pxzRk-Ed7{I`A*Tm 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 %(}3@huB1$=wJfv^!hKlNO`FETC6dKKteV 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 S%z63{_|s6+xq(r+ANF7C$g~dt diff --git a/website/public/img/session-rec-worker-filter-dark.png b/website/public/img/session-rec-worker-filter-dark.png deleted file mode 100644 index d916c18f1d9c6af5d33a7d51ce717c732bdeaeaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38216 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

4}= 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 RqC4Q9oRpGep~PFC{|^${vT6VT diff --git a/website/public/img/session-rec-worker-filter-light.png b/website/public/img/session-rec-worker-filter-light.png deleted file mode 100644 index 4b9dd48d98fcf010de5ae5b00d33a5c4e0dad93b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38432 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 I%p~Oh0ym}v7XSbN diff --git a/website/public/img/target-worker-filter-dark.png b/website/public/img/target-worker-filter-dark.png deleted file mode 100644 index af13d5b4bc892d5dad06a66f00bf2839515bc406..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131672 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%0Dm9;JH@8eOm<6>%X+Ipa|=py`qx^ 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

GW@{K;R7NE8U2FPnLeO1lS2 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 G$*ATApF%m=}4(D`PF(awOx>`5$Y9o%Z&3 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ⓈK8Ss@PLiI2Qn=8&#h320m||eFsJ0# zRtwG2z-rD|AeYH$ql-2A(&a%lda^iJHj7Wm86d~hyr~L;sWnV@D?GaMhoKtxXbl4L z@06jE6amXD56(8=OA*@heY(FQ@&EPFkK?}RHbJ@q`u_rm1YG(Y*K$7n(WA%bk|Ki2 p{};{t|4aXmdi%dwH+{c*{H4SRx00Yx;t}vCDJmyYDx~NCKL89wz4ZV9 diff --git a/website/public/img/ui/enable-session-recording_dark.png b/website/public/img/ui/enable-session-recording_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..5a27b749477a5dd82f0497515a390ef8bcf75f7e GIT binary patch literal 130980 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

cdGg`n`4 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

Z|ip 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

O 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 literal 0 HcmV?d00001 diff --git a/website/public/img/ui/session-rec-worker-filter_dark.png b/website/public/img/ui/session-rec-worker-filter_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..58bccbded519960f274e035be0d5d34892afadb3 GIT binary patch literal 211751 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 literal 0 HcmV?d00001 diff --git a/website/public/img/ui/session-rec-worker-filter_light.png b/website/public/img/ui/session-rec-worker-filter_light.png new file mode 100644 index 0000000000000000000000000000000000000000..ed95d86cfdd8c328d3fe5649da85501f38dba0d1 GIT binary patch literal 213695 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%0AJEMNBPrF@i+R6`i-#{$>*vu5i&U6J$m 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

$uXnog%c{ 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ⓈZ1U(2r-F7Ga>`hmdcY>O5k0^sRrxQ(0~ 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 literal 0 HcmV?d00001 diff --git a/website/public/img/ui/vault-worker-filter_dark.png b/website/public/img/ui/vault-worker-filter_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..f910cb8dbcdd6ec8a7468b78e85571c6ef072138 GIT binary patch literal 78196 zcmeFZg;$)*(l?5G!T`bD9Rh^l4hilKgG+FCx8Uwh2oAyB-6gnta2VX}PR@DH`S#v7 z?;mjQ`qpZgo|$KQp6ZgW`c>70%FBL!gM^0!0RizwLR?f40s=+{0s=}M0S^3%))?6W z_yN*E@v|^Q`8dG=_=%{ox`c_03uL4pMu(sgH}DV@1Ji#TuP?nKI2TIHK&iV zjnmH-0*|+gY)$8ThKpBP6pJ1&N!rc#rP?jtB1C-ddAhI9x7qJwArNE!G+Idj{GP6% z=#*jJlrnMZid13D_fr%JQ|H7|xj3;D{&c7=Tj^;NH|sB-sR$o{A1xPea@nKBePRAM z{G~VAw#0U(we2Y7a%s@dFNjf%9)^P70sSLl-~90t;v2?L?=3^|cKAZE4|EYbp1n~t znw)z^>QY3YC=<=11g#CHV z4JnvbrdB~m4b{fLc@SE+RQ^eN+Z-_u*`EoX7bAH(YL>UHfF>PC$NJDk2*3Pi5fPL} zylXx4$3KiCm6AUVzn1tT>o+1X&X6~QRGDp_xHcjF$Z3C}PUb-Dm1K_XewYA^^gl{t zj9?6+D_>)IDH@45sGcY5M1F?yyTd%0db@2hxmsYV+@Azu!vaPp`z%*9*{?9FrOihz z7a8v%cR!9zO{d}3aesrq!AZS~2PR`InA~T8J8EYQ7tw?CADiMAL+M*56Y$E8F~B}9 zr{w(;`^C(@(_=8ozpaJ*Y$*`i1)622JP=z>6n}c)$la!h=p}ew z5+F~}-sgs2fA+2+>Tbp`2*01?3f62%BhGE(fVz424vL=~EF5;Ut*$uuR5To*AI%_` zM1sR_9K;Ydz)PoV3>HNSi44x-r|0=>`&&@vywjpudz6zbUgQ3lER4lg?iBvucnWQ} z<0+qfJK;|$+PO#FM}##6yM)}&(WLVgz*rx!ovG8!#-{lDjUi+}z+jfK{KySQGx&*a zk$E8L%96x%caFPLA>wIvA%X06aTPk6!p(A)ZmXzSCCOf_(BfBXH7WYi>a#BK=5_2M z6&R@<%2eri&TfHiIvok`Hn!W=jBtAQ{?0)%jUgz4fJcMs`GXu@DJtsp5$V~lAq=;> zvv0g^PrnkGQf{?Lg&1bDB1jckq_IRyVTvpiix&E%|ofcGjW$IB;?q|`He<)z)x~~E2uNSZ+w_6r$p|h559V$Q{R5)LM)pgyG3YIs$adC^U>aK z3)z83S9)(EGuA}L+{5_G`8IXT?b@rL_hPexY$ghCrBgO!4~1IRll{rCu|z6&q+0oe z>_5~?_^WS~iO?xkhW}8H=0NjXVg5tCOvin<oKG*`VUmum9BP_t#{%3 z{_rBqH`%3OmELx>t}MI2IaEP;A{upy4-bt^o&s)3qrg^G_v=U5xO{Q5quf1?fcy#H zZ;BP01FRNZbhN6~wM?Z-9ih@0AJqybG^mJ`ALJk25Yeu>zp1QqaE>8U!AoWL3UdVg zoYJTo;WfRD9MhzFzlxOt%eXziUF0HQf5jl%tfA#D{3Rh{?H0;R7eQx%n4>QJnlC9Jy+}`=oT6L!k zd=Dt~b#~4GcFhlFv$cN5i*2jmn{DOb+hc<7hx(h+A_T!i3~sqv%n>L35OS8`D{~or z82sgS5hV|!E-xjBt7GodsE$ig#L#awVvWs)oqD!;=!1+dY>-vr2>8 z8AK})M-l(+JJtTB_j*+AwOX61R~uFsE`7a@lKzjN$CHKp!ckzgtot<~8Ln~&x?Ehv z52dxne~H!mX9-uoKIAgZn2h`JRCvBZbduqu!NMchor!@lO=PTn2k$H@H6~y}b0mLK zm&kxbxZL4Tn}?716HF+DQ<@_>&y7~K?b<~1+d!<^63?dq_AgrDHHtGBV*TnI_TG< ziRb{b{AO#P8dCWjN<>5PR2o7H0s(oiUQ3GRTO*cF;`cJJsn&D3nOF<_Hq*-Jl(J;d z?SzyKHtTVA-`nG*HL4|)RHF7a_rF0`n?2(dtCnV2E;g#(9HVH6v-rw^Tz>Y6g z)+0MD|6=l4HDgR?lUQQ&SHj3A(ypyOns5N|S&r5Zn)m0nV#29a)d<60o1|ZT{b4z$ zR(U!QXM`GqEme^%@&=-bhp8-+ z%3flLYBHxyUm_8ZXK-lyv+>E{j%HmD63S*Di^@ag*W>jDsgGsA;_xJfjPF5s2%PuG zSZGCEnLPDzY=yG>?c=zDjl0>ZSH1b0DGr2zENd7=UE3$NnC$e9csq>K{&MI5Buu(n2>c#}uE5G0O{!5Q zYIgs4+L7n6=j?ySV4=pSl*Cf1d*}^1&NkYq7OQrdcuQMm&?%Uw@!qANTn!XJ7pLf^ z-6-kda+*LJ-+!DSZOK;r-{+aGMXX}Kgb!4ecoX3kNyuC%-LP&MZmbc=@W%#9t@ zxB9%e(R4h!kIa3J&80li&V377H^cx~Ci=T>-1&A`Pxc{b&FO1(xR&XP7ev*q{DR$C zH5UrpUU5T4*d5I)Rbx&U>GC86HtPu_8;_{Og`k}XMD0Uci`^r?OERO|XGCu|ic!p$ zEPX(_^Y^EWl%P*y{17a=Zb3iKRyxIZJ#en+YNxr_GYU3qL~r9~|8{JUC<7{+F;np` z3XD4rFiv5SvEx4-4qVNcO&?j7X%O)}d?u!r$`URw!HER`V_pYtqwnX&|^?~yT+8WMw`>jPvnD2m-F z<2`&}c<*XVWhbe03)&j$Q9q(`KJ=X*N$S~@g+^SXwI|dP=b`t<*ha9V+Q*x&`fIA8 zbZ1jY#19bd`Yz?sRzPss zBS-fl*%{r{FoXJv%W9HzHq3~Cb%jPQ7UznH{sppM!^ehfLT!##2U|z4?P4y@O~@eZ z4b7b65~?vTNcsEWxz_vhL+2jU?x1$*5h}^-;^b%^aFJzc=N^}71CEckOl7C6s+bYE+*N@5*$ zx!7o5mDFw`LEubeljApAZmp`9?S87WCjN;HB~$lhTA@FRfDE8xz1CRXLa)-C!T*&9 zUG!Uwk03_#S|oE7@eB%b|OELUdmsHqw3!3j58SVZXz5dA)t{-8W}qgOZDl} zD(3~}$z&@GV2F7Hb`R=SRyrOoNqsCn!`@MLji8wj!;;RlD`zad}-dT45yhA)6e%`81qRN|HbGiRscrE;&5u4972$o*`+o z&@J1Q)^8^jT{ojW0b(1&@I%>5z>6i=yPi0+=KItXMxHxTHZaI`Uu5%uc-Uf(;a0Ha z?K-2=2j^DcJnD9H!*lNFwF7r)IorQFp;`Ah_5DVOa5=r)W*0JJthI<4Z&_QV;Zrd_i{I?6W?9g4-%v9kOyvV@YS@gmSHQ%SXD#1dvh_%HodU+IrYyJuoY=VQK0F z_fY+^Y#?gBD(QTIqy3c=H3Oa>+7s>$%}rRH;j^eiaA_? zdYc1EGn&y)+0&RV9YuWblQWcGbp?@{}# zHJpxAjo0XbG=D9iPW(;YePPykA&+D~McFZoB~9T_&T)at3|3a(%#k5DY|`ng0Uy64 zmYaWF^$bM)%DTgbSS~h#lx)jQ)JRT>6;VN9%&s3!X~5TiSGLDlU!Vs3rS)j?s75T)d45iJWcA#cVZaN{RJQU27wV|HVUp#&we13>RIH*wZ%Faj zt#)4sqHKrdKcE)?HzG|bmX~4FH>S$=s{VGAOqWvu7tGx5@X$r5E|{UjoGn_WUbpjL zb>^%!)T2M*2!Ym6o6iR~G|hL@mUd@>KuFKK=Uu zdx{hcL112Z!9_F(U3~kX(wRey#9Sd9WA(?Y*I*zkkeOA#i6Jx76_uhH_$ZnqAu(gb0mwX zfAeAf3vt|$Lv}394iZB;jQ){w{bY!s~D@Br@x(|;NB*NJBgL=ZM{#=Eznf273`0H%d| zH`YbypX>hS*hT=Dmb;BSTk${g5B$|Z$v;`5Tao|7AxL5h!OcE+>L8InVsQwBzxOH1 z?HBOB^77Zo9SI~7Ge0LS0s0>qxK9FRpyMd{ssEqI>VyX~@VrZ6Gv=>b@!z>HJb3MI zhD2`Ie%j* zM!LCXes_J$bjceIo~2OC8?3mjZcQQvY}9PR$M=%{M#p_o(L(k`3^(O}6H1~E6NW{< zTf18SLo0Ll(ZeLO`3;43qiwa>wtKX7-|)b2uS)yp%&%RNLOVooXhF?dOq#Wgo=1jziAOfavo@@g#=SH`>WOArl3A6l$2wQ^JV{t45QBa_!{ zDrxUPXtO(r(qVU$)ohAFF5Oj`SvU|Oj^FDc`S9i8sKULR$8kR=JNo))Uh4a&$g3yo zwbuLmhtYrA6Tr7pwCvwlTn81zB&;x$DD(if=+|n{-j|!m)acH+&)MEif51m2Itu<@FAi>4G+dju-4GWYTK=Ul%&e z53hET^8@e>^d%T}<^>wwcx=gOs@9BcvDPhI zI-5nQa^pgEIFmj(!L1`gt=YjSh0GW!l$g1FxxL0@gbI^R)n1cXVk)m%fBRD^w^N!< z0;5K=w09P})_YX(Sn|(vmuS?o1cfJFq!F7FJ{gL!C>FhQ7MGu?7iVfC$%WmR? z8*E&rAl~ay>!h!dcq6-vTKU`9x-jldyJP90sRPa@%Ol5J4ktRUFFqN(eRJ@lJ#3~E z#Ydxw&L=#B#nXkxyAw56Z2EM@Lvbqgma7HXxV#*$n;NV`z@}ns#nUW)d@hIG1U`?O zFZ5z;NpnB6Ec{^oBP57R?lU=Tvbf$%c|;L#<(bcx2$^q781n{DC+IbM-rH+5I~Jd) z)R@Su60AEQqEq}Fz@$@-X?43iH1w<|h0-{kh(D@&``ercn*6rUm&X@t;v@+e?}Z^@ zun2m>pif7VD}K7PTP=UgrtpRBhbQ(VVKW^?xVWn>4cY+f2jkvEHnP2zuDPu^;^#Vx z*#v62tk#RlGvb$-;%S&AxmMS6qh;o0%$5$L`EsD&oRccfJJ4O752*FN+H#R~D26{% z6QB}%yjV@wMcRBt{QjrLtqt!)tiCBFSS2}b6Z?a7dnU5D=-n=VCE-c#5C15mt`xUe zsEh@12nU87HhvS0CVEaR$54#irro5q+oF*C#rsY%89}kb?Q%EXW!;NI+{$0+K3q1F z!aRW{j@A(F8JDrVT}j~O&XAGHeM&cZJo8%Hu>IWs{ma>=i18{GiNEPsnu-Yx8v2~I zMq-~-5bCg$rZFxYa<<*}z%mnLc&E(p7Scqt8z$4!*2`+*GB=W6Kn^cHkMnWNm&shS zBOvV`AO|8W~<=Al`J#lj=JWIN0GGe)$tQp?Y zpBBob4{z9X%-}iPdkej_>P^mwg0fGk7Tt`=e@}KNEykL}GDZJ!$gmZ;5hwfLb4dyuxS7G)A1= zuBO{OP*+jCDPLcLi7m@fN>wXjEf=dta=HSn{L_DY+aWQZ`2xiPS>ZE7_P&UgW<@HA zE+07PPLGYY{Ry_}*nv{Cvk&ps(6!!bS$3VRkxZpRLBxT}<;7q6;rw$tCgkvY-O~B8 z#M1flBi$Fn{#utk!E9tKrUa?viox8zaLPjT18FF>(aAVUshy{waCfFSI&4%5QUPpC3F{6I})4-r`EVG-+z!Igxa?s^6sYsq!cvAg~zE!o?fNa-ZPg?uIvKq6I z1&vg|_kpOUwrC28xPA8`3$Ly>2#DphcTd0$J0;x;@M%y#GFz&q>wXKOl*{Iyoj6aV zPp%U*&^E3tB4Yi;^UN3eSf*Z;`{Tzpq&6+}(|aMR5>q&ksQ8Rvv6FPkuah zOOn~r`AQ9W3UPq0HQd(MgYp&3OBzXKsQ85{!{x8YRR>a(IBseF7nZ!?vGQG}&0R(J)`=c#G@Ud=1bPEt3ZRr>40*%}p>`DAdCF(CAir^WmE!8zacCZc5q zeBv5+I!KM=MD&!4Wc}6$K^ju9$DANdVG{t;&FyC(7Jd*!D~eV6(||#b3U zDiLo&_bFCfev-=t}F-On+-KKTxBXpQe!4_ppL$yyvXlIz~jFy&Y~!|fFe>cdB3 z4okIWPTJv}|_2P^f4~AW`+o?VwsGEy2!BNND&kX#EM_ z%GoA|BS353)iCcQXY@KmrR#J(G0UIC@q+b)%nF(4VKJ3<)NBmf#>NwrP1$l?m?zQ`@ z%8Ya|l`#U|PbpXXYckP8bKiQpz?`4SHK`LR-zyZ_%#uPRdb~Z22PbjoK~UIC+A$R# zH$R18T({JW7%C+bXv(GUlJ~g|*L{4kf-iQ)$bFt(f~B)q#cusz*#e<^9fmS!zmMv^ z*X6fBJG0D%VsJO1SBtnGRw31zV_=nQvK>w1)4GkeM|eAy?n9Ny<3rmQhN*H+i9TGI z?HNW^h@v21QU=jbG@Mvk)CaVuE$-J4W_+uZFUj~Lp){~1uuo?oN_WuL4>~`^93FD- z<@phuqy`^n`~o=e=nO;;x2J{C(2pqGhBs~lQBVzuB`S1Ml#~z~jcw?SF&DpvN>|jE zj$XQ8poHUJpXHL>F5ttDw#_GxIHSv#y2G}I;tL-hzY7ICJUl|%F~_vyb1OTaF8yHO zQIrC^Y56kgA1`i}ZAu{)@lUY2#b);2WmGQI7uY;pDcCs{3=311?Mx)=dOx0USe#1@ zs8@c^avMwG7kNtuiF6Neai{S!zuKRS;|FSDrW*%7JU!>FdfJ}kNh*8qWx8sLw!0nG zmuYnf)qKD{nEYP&i#bM@pGH?!t7b+;SO%P#kf~bb*(Iw+=Y~TiG8&mkq;Kd%>SfWl z41o-=&x0A>qSU;mKrR*lz@A-vfW2Pyr3^>Y zkxXKs1yGobrR8_b+sb&Z0Z`4u(KBP;Pk==p&1k3h?gC-xXroIleY0M>`6D zY|`obLiL#M!eEK~j)r8G|3N<8*H9mf*4vm>Y@tRF3&_sD?j-A8Ra_U?&6W_G`}IGe zuhdCl7b}o=-V%o6ACW;?MG^6pys}v>!Cw<%y)B+D3Yt1Q<+VOM%vwcc9A|<+CJrG} z=iQ#4wrM~3js<;UG*cAY+)SRGR%b5J;%v3E(gc>m2?4co>fzkJ$tMCPXmHtp0+fvJ z5!x1M=bKW+ond!B)fQ($cGO|kUv4DBSd9EiyCB>v_SgG8Vnzc#?tUny5qg7Q6KGI2Kigf=)ytfwFJC`R`U z%VC4fVOQEKN_XV-_MBR=NS;)q$v%Jl@qRCrTL)UUKsJ*O(66_+F(|KA|CGw(615Qo zV-d_qcN45ZpjFc5*r=}Ix}uQ%{gpNux_8$%ze~Fg;dm;)rkzSumO`6Y6*9{cjxe>0 z`@77Ms-$vL?xX+Dkf62qb&V0_+ARPJvc&3EzdBg{Y#|9QWxZ8h@5Ms}jEJ@vd*~8{ z@6GMRFvLH!i*ub>gy1K?5B%&>u4)u0(@qY1M_cyT=T9&vhQN=a4-&b~WVM(ZDaYTq zygKN(sHhh9!;ESPgl#B>pFHY`=8t2Qgc0+Pftl>32=T5AkxXXF%!2nE*N0T>&;eos z9>VHt{U|Y4ya2q|UUjOYV|#c^qKUJnvn-pB6*B4dnw2$SYP5;h6PU9VHI6D{i7eC|W0W z(uYJkl_~4YI|AucRxy4>hc9Ksz-!|Ze1l^4uCzhV-LiYm{u=m61jKAL-j+4IU{He3 zzan(G-(bvi=yoL-sXRvP+=4~)hl)D4M(>43V6OD8+D*4_HI;wu8t?&~69ePN>AN6a z&p8f2VC|Q0!QB*inNL^_mQY7Yxj8!^=Kj!0*OTCLF*IO*I791z_v_YjI3Mm+0c_)o z2CR|=qFn;u?xO3_3Ol>;Tyc!cMe!V1LKp!+>2Bfm=ItPI;wOKP@oEeBm&>S|0|Muv z!93^f&fKTYE^NpEeSOHIHw;jd(P%(htCV?S&dPO^9?&XwqhXYT!0YUqwe4H#ThOyU z22ftPLkQZdBNCsZem1Z&PIFa&Qwui-%GqTIoL?kUYepu z@x8eU7n|F#38tCP&oF1XRn|i8H13KI+(Tl1Lf0)AeO$WOKGJE+2qOW@>5tJfOF;(p zN_j+H7bpfn01R%&DEVd$zw1vDTpsJz`X?dZpY4+S)tU&6&F~C5)3kOrPmK!YB?~+0 zRU)FS2M^cS>u&(TV1Gz1Dx0$yYlZsPR(1n>=I7`SHfes|lB_V7a}tKLYm$_65K;skBjy zR;i%&QM*SHHr&F(pJyzOm>PMjEoUW7HjBHs@9P`sMaiguPKngFFz+ZJ6PtL^jJIkk~{4T zVJ(KRSQ2Smg-@oO_s|ZmPnwok!nASJ$x_(N+{Lu+v3A#on1nu^41!fSA_NiPhsn<$ z%%+x>HVIm*i^ZV48J(on1M?Ka+m7a;%EU=Nbt1u(OGFJ}Hxer{5!xPg;rs{(Ho}rr zTG|*JZ!wUjoUqhQCsvVE&kf~^Mz`KWIis-L(CTQUCuq)QX*_< z*i1FXW_dJ5|5CDM0HMQBz~Je!5zLjiHF6qowh}qJ!$vl z*Gw~MVb9o#1Xx(@0g~O#%fLnk@naHWZhb=r_X(Ov(vkoQryo zy@nH9Cr1?j8@B5}L%7ozT>mt7{x1{{8dBZnODPs6IixBPfWSYla-qxTEsqN*7hCSk z>os>e`6I_0Q!i3$NPj~zI0+9-DR60F7Ew6a_=7_-{H3#8eXR2_d=i5zZY=B$Kpzb2 z5G-@@1kVabXYpMdpnGzAPf9RTWz32ZX=}fy25478h-vjYS89&s5P72oFLGmDsly1b z+=E)aO$loFk}&GFOQ$Zm%nQRk2#vD6(K7SFE-40}x%M1s?Jc027X zLg8*W0IVGxhlmswZ6@DNWJp{6Vt-{Y9!H3RjePe*l3^sf!?*R-TLTEEMtqdCV2kZr zN}wGTQ;Czs;nQxU#DtQS*NO89qD2uIT@j7Ste%Nzb zI0DXoY56N%+LQ=Hm2Vy1acR#I=Q#iLzk?iMu?QW2UI9(l zvjw+K@0#V4_7Z<}G(S(J+8y>~;S8<*WB{#$S`D;vSW_vc%T#H9br8l?=CCmbt0o?T zkH8AlIbq#1LprR{e+Uvo-o-Hpm%vwv$R-mD+n+e{gNEE9%~C-y;G4ar%%VgPwPo*i z9`~cH<@!;-^NAOy5xrXz<2H0c#q`=H;oh2%%_QQ98KEi)s->Wm)l*HdldVc;ZH7}j zGW!0vM|wsD&SJP>%(%&bOSb`}5F=4xbnW5vE@Up)KZ^Z34L;-bl5#oTg}g1}l861~ zl!(Qop4031@F37%WzdJ!h@Pt30<1%{=7$L$)u?tSQ0HizM=V=)szb(jVT%N2gHM4U zKY-Hm%BClkK!!tN9&h2wX(?59?_=#PhFRtCI@B5A=hh`VcxHyd-3i^C(wqG?V0lr{ z$tL;do$fvpV(dTYRKopG68HZ8^PBvU>S0s|s3Q zT-17J)q%wp^T!El6xTz1 z0l=I|yT_eHz&ha{fUznGNXn$mN9b%cbrR_ePN8rbJae+mQ|Dj6aU(`ifxEhO80*@kO`Q2o=KD42t{v-s-}3@RlNW%j zKkG+^C;-NQhOn>dHrZwgfypx{OV`v2+7M?UCF9!o;(eiQJ_NMI3X;;>BN$$}xpVgi z+z(!QD|w>d4b(pV`@i+GE8V+ID>Kab*2<|a(J%J&q?(Bv|H1L<0GgKmaM~|b1>@nTp z=5x03tzL4W<MqIbfCip-7if*O=7c!Pzso1=;)gP1wFaKS_c5YB>tLtzFWoE6{Xr z9BX3yFqQYol$bf*b`_ju8FAdv+(>y*6;3MswGeH{XNn9Q;1=RTWpZ&KS)R3l1ZZh2j92^KgfnX|rkW>LDF03*lJP^D5k zMX_gs^srLC?Edy;lG_1>T>JR?1;%rh~cY-~yhWX%X^ z`;m8PBQzUq(5)}Jk`R5cSzFOih`B7MnU4o!J{HI!BplvjZ*+nlEr{rt_b8zN%jLip zI+w)sj0&p8{LQ{Acf`A%nsfKiGxOi(Ul1zmccz(^c8>ga+X6LAWgn}vHR3^_?uH9U zooFiAZt=Cv$*8>;y(WIqh;<|Mk`X&a<=WTI^T*MDDlY*iltO*y4O^8&83Cp4_n~fN<4MmSLkixVE zFi7KgRE9%6rhbM;i9<=PmP)d0%GZqKz5ulZ87<8aQ-WJX^uHjvmHw5M|IXVbJCC}N zp^i<&i2+9Q8l6DGqaDmLz3w1nYF+0;8ePXjGJFo}q(ZrD^LlX17{~2|FB#i?D*58+ z=A?6~!-!O!`RpD88Z zP0xM69?wir8BU|}dGV}gCHkFf_&Je7l~nupPZ~+~lBm^1bB3X~LS-Zpw&prZ)mtiQi&P z8of8VV!1aGU(G}|n<`$}tqR@PXe_Pn(6dA|67M?yh~@94%D<7Qe+?+|jcZ?;C@f}M zp6X_NQV3=S1CsVe7|ZW-z(7cM26(=!iC6`>@1|y=jyH9#3*6`QZzEr7{`NY#3(`~u%l+Y)(Xp9oz3TAR~7|&b_)(1ei&JH-50CmYdUJ%S1zyJvapdU<)!+^mGaWzL^{bW z(NLpTzX0d^xp)zHRH?DUSxal#)7HzVR^5Wyh+`2~7>8yT;&3N=biH_Yj`^g>?6DPUj)zU-;yI1VfnP zcgbXD5JYpxI#g+Lav%=#ndNjr8w0Rf5PX<2vH4_C`aGQnW68A>^2$G46H|cmMUHNX zYwK6>?4?N~aebF{ebS*@eaa|l)AbLSbP36)?SwSMDiw_2gnpc8D25qwdgnte`|iIQ zZSOcCk5Sa}zOZnWZrQB1y7dfvJ`(5&*nrxE^&gqFYRlBD6a2z5_a2fA1tvx3#UY-6 z_AiUb~K zUq?p5VuR+kEzIU$9Nfwn9_@Dq={jBxdF7i*g|OTkDyt1F^TV+jwMoLU#$8lqlZd$_ z-(gJr61-u@Vo1I=Y!4*S{HpT5C(_5X+J-j4- z^5P^mYo4sGgYSo8*$P)zpTQQY+VTMXV5X{#d2>;aomOjsh_(Fhp9IIh#?SIF(v z^z80q(rL^ogVseDFq_JoH1x%ZqcDpjL1qSb#Z|3NoEv_IZp$8wC6@w=dcJqSCv=wF zX914jw?qkY0%m0crre=ejA_3VE<*xO*Dwa6Q^~TuU6dN@#Q-u>G0u!msU^v*zEP}&}Sk)ZMd)w5H|S)z&>&#V-oR%bbdN;t6xFP$t`ZI$%i(h0HrSd*cbR zcq%w;9@z}esalQjn8qiIgXs{aD1Rgv+z?uEa6?sd4wH5q$)GyM@Hy-C4`W`czc|F; zI@nf&^DP^i@$3!~!vXJ8o1R@)Fi9DJyJ{&l32;Rk6PNv6%uK10)Bv*(+=^wrO6Uk2bJ>MFNB3w3Jp8GM(ZeG>N-J5qVAU(C+T*08SRBuMhs98TZFHr)*2k}Ec z-cCbdthiChWKn?+`VTVsN!2$)$sNAC5MAF@j_MV2^hkkgZCcn(_V+>QRNA?8swKH) z0jv_reUM%@uRGYOPurp`=L_7ZzaV&J@OX*ozls@Bo2bW^D%B zAr?g8(Shs_iHPgb$ra7sX4UzYO&6LA_b2nZ`5qHGQ}wIJq-0i0j^@%kdE(zZ?T_Xd zTh4Q#VQTx1q6NI?pLd4R=T%M5a=_(-5qNAmhciD+c?KZ08%w;^Wx|qaXk`S<$mFtk ztLRaWd+~lY8Wm4fn_SbSyFx1zTc6-Lk0E2z(%mNt8ll6mR(3d^=MGI_eYnJ8LTijp zO<)3otD#z=KA1lV6yNAmc6pLFrLVi5Z;w=CmQr3{rf_@-XfK&BqIEi)O~xZuiG@cc zB3U*I%goIiccDu7GEYwJk8+6D)xSi0;gotft>H7*{5K^!6M)hmpB;QH2q6dSmaQ0s zkkPvLqZKfsb74Rm#v`Z?P8)dUzrU5j?S-p%U#0iLt5M~d%JfNIoxHg-4eDH<HPg@SlObSi*dr8@* z6Ku(~9xfTW>a1f5UP6w32p>H60gNz_xO|EY0T3U~2a27&IC=a!w-^pOn>@O z=9vti>ogq(``=NCGYVLg^q~lU^xdBhnBuOmP!8kE%BVSauKu?_EF;|oJmR~ z0l)IY^+|v^s|cd@(K|zRWFZ2{_>Vs_1YBg3Qw5?fksGRxx$F+JIyWL1`y&fd$aQa1wKdlJQ?~*Gs?7hEZLAp{>T^lZ`Qg_bLA?a z2li#@?`s*0HI}pb`nBR3mx8WB-As~E-Qn9$-K)bCm7iDe#BG80+02VRTK_ti{k`v1HJ{lMAD4x&xHjbBX@KxO~NBt;u+d{1(O~kKs@^-s_Y1|G# zt0=m|bg8V>xS|SaMG7Y<+Q~_vBwXhZZP@I59cD#cASYmLpl12-X%`mWud5uKT5R^7 z1#&wc=XvzbO<1T_B&2iLn3v-Bnx231Hy-wbe!RA5w8va(d5u{^BA8=ty8IPOxa@;? z#i~}JJvZ9PrPF$6zuoVo^?Zl8wH#GZV&cZ5Ja>rkmm~W@K_wKT_^ij2TINS z{%cswI#cD0vU+_6{ zTQ4|!1A$pDK(BeB9Cw)&n_gScfpyy#0h&Gm><8|bm12?h&e##$db3jptudB`cUez% z-xrj$KJpUd!q41Hf#PPv2JO7j*5S1RwuxR89ggVq@y$XgLG`|GZ5fgFO7Jsnv?DUC zWC*{AVEy%{jqYF}LFT`(r+bCKuQrms|Dq?r<#rLs^hs~FPfAVl5{nTQQn@PVs`-tU zCGt}w{v2|d(F$eb)&IlZTL#s&tZSoz;2~IWcY<4R4Fo3;+$Rpf-JK8!?rs4B3GVI? zfXc43Yl|`(LF}@`@D~|@jlJhJjYj5gPr|YC=2*- zu#;q8hjn6Bb>9E3G(M%Cn@O@0dhbGI zWTaBUsO2-0f3wu!mDslMl6!lxS;%q_Ee@O2c;G<32D%^0SyV(s8^^Nt`3PBPh}GEk zZ|u2*0%D>LXoN=Etk(73*#07()7&?~iZPT@ibP|155Da?ydNEPO^4EI>Y*1JU4|!x z465~Zt@pG)8W~UeER)h|RK#IBqh;nQZWI9Pjhs#il-;$qd%aESN)^Y*jOH`W$vRU@ zeSx=w$;rBVf*W+nxXisF-une1-=$PEk-W}jo1vlE8w+r!C&x=>S^iWXw)r6ZTE_7k=_E_Hbg+PM~)}Cz~g9cl>0g(X`27@K1&EhvP`1Ipj)HlJepWeu9 zGU;xMJ=}kg*jVWd>KmnM7^rOC5z z@NxE@7j%m?ZIfGVgWJeqMPAf6qFASVsR=4kFR#Fk*UR_cuO)g>^s&siN{Y*7F$(O* zr9$Fp&(F&RUNI=1Z1iS*O!IqsEtOcZP$kUf;^*bFRVX)T?!K2Nq;}|XI3NAv`A#2l zbuO1bRjGROP=wIz+uIcn9=qG5LMF%iW4zq&_}o+FC(WU|RvLDS@zEYYLm|!yd*IB+ zc7FAzWO2C_=Kb+%t3!7*U@h>|*xp@p=V zZR}jHepM<2og%Q}L^8KXfN8c%L@C3Ys-X-b|SjYp!d}|sep2_1g!m!6;y>`NR*~R;2 zaLlB}-Ihk=gz{5~8O#W*|8tD*c+~%a%1QlxKB{N8(zSpq7>qP&6%w=G;;Uy;qyY%( zI)P}EQvjB1N~^I~u+u+^;I&mV_*=!Z0E4?mTbneXD+7O`%`nT*gP@01=Me4Foa1(0sNm}66u9RHa~lKXt*vRC zDF4#5{m-5id?MfJ7+OR$ps}_RE$OPmq34r($c!V|6%nps#lmH}7UCaYP zt&JWEu6CUL1OMvA{V`5pU*rJO5roPNi_}ucsM9e&c(eRm)VJMJ4|2=%`*Q0pnZNtb zTl(K<^D;Y(o{Ar=cZE?ekni>swXGtYt{irRsu}#NWkIJ>q{qe4pHTWP?=`(+Mx%XW zApf6Z^gq2izbV-#9nT=>_~6`nUw$rhq*GXI!kL9F^_h3{@P(+gzem-#>f1zyl0R_X#sans@9r2?Go+!onoec z*1!8^q928HJ%iph=|MxAf<1=VhVjSF$EUityFGwTfzj!&Vz$%G8O0K9jRmm@x_INA z^_vxMt_(WdczN z$br8Qz@HOkI^oVOjk#Uv(HC9g_@!5{l;>@6~i#<7DyJdxA(N;vQk$ErrhYi+x?N(z7z)=Nfht8{ zw!r{)B_HXnbOc8_ zLaX&rsQT9X6D2A(2WWs;q;^mBBlvBcd_3&)037w9_2Eo;`(I3?tq=E&*6#b)PPBR7 ziM0=VqH{E>>Rpdx(zxvu6M-a7%z1B~%5*q=Y;&VeEk-i>{c*Pb(LcE-1Smp7&>?jB z(@eIk71VV&?W3?j##o(B(_JR1(ctQLd%bIeA>jV%5gs1MY<>45jL62q`@RDH=0H;ymSbqxyAadqxq5m~K+H?`udoonSkx3YqQ1Hm;RZHBq zIRS*5Ct~QyEF^a?<((q9n`>_pAPBvP4vE{c*F;1&AuuD7RNI&dz~S0xZ@=D;(ywrs zvUbaZ-Y4dB*7kl_Lv6Iq5b!W@A?A?Abi2KZ)>&MWh;&Mew_WL&*%0k{-2j?hj6Pj` zDs1w>eBTIY6)D}W*Mo}(Vn5V7Z1$5G8!I)tbC`{nwVZ9AR=={E6w&(WI-241*Btok z;5JA&b#gEriMiSw?mPb7q0kLS;ln(h1itd)b+=Xc#Kf5;rqMrD7G6}0VlXl&ge(~@t z)n5ZTq*#J4X+YmbnT)}?zewYBeRPAqf&cX_u-CDAwoxCga<4cAcw4bGd91th-{~yH zPk)ifWX#vYkg)|mC!x^2+#*kJ^k!5mg^c}x4ac91SIiBOF)}tP+fO7qxkHWJ0Ls;B zf}F-!eNp(nEKv!gzHvOcLQXSnUHbwKhoIp`ZbsC>L5*U}^o^mPm90e+7llG!ZQZBzsZ4WmNb#&hCd-|1SA=d+Uj8s)zZL~#5h z`Wg);cAOM*E4(Bl6sbZjj-L`!P?NQ6nM&g(^I8Qu?v1~-UT9!^dVS8;#k;s=Iw%x9 zVKF6hDEO2T=o?3iwjV4v1U#IhY2-6|5_Q~r0uYtHn8zb2mROqUM5H^mZjXsBLyZ=D zkW>>KX`9XEeFQo+bvJvMY5iBv*Ut9B=PnM==$}ohi(JpWQ?rpzuhjo(dEBlY%MSNzrS+RP4_>OkIG ztqor`=p;_7JPZl@e3J90oEF=sgTmW$hgu8HYk7U85*w z5Of>uPVQ?ivl4X{=2)lWvu(|-%;p#^-G5+vf5gJL_~sK@yYlH4Q38|F#57?S4n@P~ zfq0HE37n%fX^0(%2&oRtRCNOm*)XNcMqb9(!{C@N$W=RMctX!05oQxR)zVJd^mgOU zLzf2&we&x*$0xa2H-~kjQ0Y`BNHCH+dTnw4X576mFLj2j*cl*!`o%{pZgn z870fIX*G-DYJB~!5sw3buL`Lpx@0P6Iwq5%vUdt6)pwiQeV4`P+3MZCqD<3iSZEig z6>yEd?H?5OkLHGMl-O6Fbz_cuT;zH%K(fC)8X9mG>3$7TDRd^{DVW!cB;mu)?mQDS z0c`VFgAj@FmkP!wkuOBg?gjRnBu5Ocmq0P5>M=_>eO_TSNDcc8`{Zg7NP1rWKEa7f zX7@(A;1De!!^Y<@pG=6SPw3yDyP!TNb9(D?cYS(Uwsu*yR=Ij5up04^tIzA0?>oU| zm!M>u7EB2pbMRWXJl$^WrBQoF?xSu`DuX}Sa=J_d3A@Ll5qUmFF;A8(cZoi$SZi6u z4-I1l7%;H*)?%Ak+CC<%j% zM_>s-gUo-Lsf@b3MYah?`@0U$PSeo(%ZBk16(!B;>j5UgP&`yYn2799+RmE~;2kh@ ziZ&uM`O7o?USJ#%`_(_g?k{yYoVzPnZeG-F{(1|G)U!+`s@qHvM0}Ka z3|iSQ6?h_wzq}t=-AN3;S1kM4Sku&ovf3?ADjJBQ_JAiztX?hLe^S^*0&Wmcuu{6RaT=MFt?g=)Dft%KcEm@;0kT+KXx; zUr9ct_Wkzx$``3r)jl6R8~?>Rz_4liY_m~ZyLhtY{@Avybw{ama^V`KP5!XUCj#aRN3WtY6%r`-D($xJ7TpU z5sWWJvQ+1$bci38{=p6zYQtuNlN-?rRnUbmdkaJOCp|WEdor@Fxx>To&1i+OR(10k zL>C{sTLh>aVW5wd-vNGj$S(F{-|+O;5Tc01LrI9(;ClX8?tn+v#DN+7`5+)vNG{TA z$VL$J+|F8;+-*V~B%SY0x?4?ELAKt`SDs(Dc<<2KTpnvIeTS}>N^1bF}d!n*YHs$C;2#0B_R!%WAs%K1F>Xqm3j>?WholH+co|hyP zzQWbh3*X*l-6}RXBASgVUSEGVR_dvh>;Dt0HTSmif@>FNsV#=&rWFDMX@+wE0{AaknLd zVL!qu6!cb#Uc(P0>Q6cW1v{9KaYs-e@G8Hhvk8RhAonX!5sCp_DHTqeSxOR>LiD@< z9MjWc7d<}D9u0+WgU>=QZwq3#Ee0^Cq>C6t4}%a#x+dn^`!3G56MeQFRWg6K$dG;! z(rq~^3OEzEKG?H2qFm;IQZFDCl&LLAuR79qCa<_S3bM!YSI1yCLEd+t-y5TzTosNS z;fz7D0VW)(K=apXuir;=h)wr74C!Lqc~b=;oJvNmr}o2j-=x(X6%zwpXY&?DcE30l zU!LfVYM=iJ-}%EfpJKBnR=!eW;CRWLy2j>o(75Z!=p8z2B2HM-s`*(qAMvAKQClk6 zyJGj}8a0l=43H{e>1H*}L&;y(l%Gx(i#_CLKHrz~cpbzHB-g&P-|#Nq_l$k;B0t4p zQaDZy=?CcN`gAYO$mZ^Z&C6#v%&`FGG`Dz>bffiR9tIADm>eF3BvDjCUNR^mol^TM zvDF^^)c9mP(@_X81`@BI<7+fV7tgtvab-iiuKQkZM0(uD%_eyNL<=q=AET&#KciWl znH725;xz@?|C&mxWa4Ex&v8@;|D(*R+q&NNcSDh~Nr|mIl5`&+cQB||DG%v1(KTKW zMwK?4|9s$iBB70wcGO{)TC;DZ!(}=Crk2m)zM_q&$T_{ChK(?ckVCcM{7N&0^Fj9F zK#1XmPg-`rU1Z%46D$}M4fdnW;RCa>fEC=D~O&NyD&$^fC#>f^55v#NWaLkD_{FUFz%#sVDangUy?MpI zul(>^&|@X!KBF&#;%oo)%Wv<>V~QZP3d2-C?z$3n&Y08lq8mL}&u6P2v^lL8^Jc<9 z!+Es{YYMa8^D^jA|CE2F(W1YG=$g;=S5dvWMAVn-7XCX=w>6Jxq|svyR^zUa#Ggza zNe{HMu%-^+ecS*xE zEw$~>hADo{d|Bqt$zxoS0%Z(?R*Q7~&6~t7y6KY2S8jdC!KL?yWv(j>zs+`FsG|04 zRR_%$H~Q6#e+1J z!Wv5*HtFU0uBGUD@4}60q-$0vQtbV4$5*hkZ#zWPV~v2-Zf)^0I?Pz$Wm3xRQ(1s3 zC*m}yilaSk0d<6`wRS7@gbG>@RllkfPj&htSehwILgb@l?lv)xU)&EbYP3n%dD`8s z92^kOFN9!fey(f8tX=h~s^i0ac>wY?x)v6)>ad=jWG)5pFeS>^D`1>>crsa3vR5uG zXj%K*ET%e1kJsCE8Y8&gUj6uR5pe92um8)`49alPzw5-JoZSBR3DsSjKm5g`<;WK) zpZ=#}3Q*$jgBm9FX#%~T5v>xw!!AELmOo_B7xBFGu+4h8z zx9XkMk%uVH(Xclo+x~2|5{+6X>f8+b*FwQXG}Cx3q~nHsMV|bXT^;W|XGK&+My&_3 z&LEU%AVkh5nQqO8U(!&_8!z42?;(>fg<8i}|GGF?q}`$o%Fcq_gPF!s>{z(xTQqq4)aQN|SQ%s8i0OJnlr*BXMBvsh^(ev2W`^Z}P!T|+918p~0+kI!3_ zGPu_6@pEogX39Um>sR%WOe9jgGNg}JPK zWj2ObS7WvG`hKdsnfvxA!onZf1g{eQzC5gflELkc+_I5n8sn^DV~V@$U~Wa z=l0FzRdB3v?e&Az?q6GiMB$!~ zGr!iXwx(cJM$o^h@!1kR+Tk$wnAfKEYZG1`->%$oF}9LXBN6oc;yo5u!(f=_lKDDe zW3Kj4vKj8}xiCXdq5p$RjrE-V3?w&Y7ssJTRC9gPh8ZqTF16UcVqmJ*RkzvQY6g`Z z7z@Q?v|=k!5bej`Noxm@?IC{XoNwGb@gZo^{7HiF{ffBN-T2`_ubKS;=xILU*yyjx z0UQ}BSok+myfRx^kY-rhOCtiVBDEFqcz#UCa+ZIzVS#E1DPN7vSkO~4z3mefO-a8a z=*|!CKia>Y_<78v&zBWPPZJ}ys!uG`rca;1JZ2N$cz&gXKVFy<7{ScYdaEfyr}pxz zcU0r;*Lw2}q?wXM7z)VbwC`(C$4mk)OH$h@NQ-5Dlh36b916ZUI@P<2>uQS=iCsYE z#OhC!W{V$#wV_^F_@H1T^3mR{v)QnlQzimuEHF7kQC|Z5MSN$F_I;w<5H>`gS%9`K@WI%^`8R5Vh*wH1sceHHNW8s`sd;EKMtfMKJ+jgQyLMivM{^ zpCBMhf2aLPcj#K+>sPc|WdS7w{jNRjbMqL|FrA`=mTN!GPlnrb`slw!$g1$L@K>(3 z-WFWD&e~`E++36P^=mU6wk>IN-u^=JMpp40*y>AWwmhv0LMPs`DmFV!z~FNxq*W#@ z-DoGAT8haHDLpX}NsVADE1qNE>*%QTUdDG>2O1+*!|!qazfZRgF|U2s{5IkFbx1io z+6wv~c-32Qa6tK(ORu^e)IzVuw95t>p))G=(kf2R6QTtgUAEs|Ef&qyi5;N@HVJPT zo~+Y;QQl@tu;^((VL$9C&n|K)p><^nK*f;@{ua-WbF??#qT{iBTZr+zgRmZc%YP?Q zVo7J7VAQndb8G)EKEn%kC0E43Od++4!#R2`oB5xG0L*CM8 zPH_6Yh%T>nJWwTXBGSKzHgYB`m<*?py?7wD(QrQF1&x%is!sjh$(2Us1BQ9Y*C?;k z7?YT5#kM*hgpLvdUb@`h@_1RfZQwgiJi(D%hNtoMQ*W|x%{QiR_*~+$Qws>{^^R9R zA?FVgXYUoxPqMrE7hJ1^kFvH_7uc7Ny)hyDzdDP-z2fKVi^%T(U_AE5Rc<2=d`nV4OYDTVa4$elCBF3>faaqey}3N)$= zSiM!-<=0YgwJv7zhp*?BW(X#vD!}KUO8Fj2vQ(*ae$k((L!2iOhEE?m9(fKB96dpv0SB0~&8xQNOwh z3v(lMP$w`zzL97@hxg!HZ1K_pOlrir4xUfMj1BI)FJ6;~hHbI#{UU02s&W}-0?8-t z$G&OwLH(Tw^VjY3=x`U;0ZtKRVEH+iuxb=^_{C7+a%c_yY~NMJduti0H*JH!g}+V9 zhxzCifzXwGzJAm`BJ($#B}9O-K;m>O&2!z~Sp}vJRo)wEDjR<;p8|< zryE0Y`NV-m@a{llPm9H-qy&XbU6P!bH!KuK3mDnSvX|uHFl+x5?bWTbg>c%;lgdxH z{Lr2%LGspNSz24B!^F6hb@dig?9im6p;7A+;Kg=5B=h{vng3hyy!k`heguAytsz$GN>=OM6xRG2`ky=t>X^)nublX}JsX%;^px&5UaxQ%?kTq9W-wh9KlXpe9qNo&9Z$>=eglQaNd%gSmX48O<0}d?s>I zHR-$oP{bl&`}6bk;=;*Zx>yYq@0}ASFDgD7zUt_o&?Hl9;j7suL zD1L2~yKkm++!^JbP*!qi^F6wX6cW|L`@#=!wKPg%N6d3^bJd~fwmRF9xg4fgPUXcT zzk@hX#Hne#j2A*&Njw^wEAvi2h~3Y8zq5i1@%$KiTQvL>=KVZ@^_IbXv)JGRLIlDY)Y83&2ziREIpucutZJt?d zp4+ytCNG8L5Lb6wfyYJ!x^K|&1ySR9ce#LiUoB$Y;Mvw3W7#859OFn78cSJG2Y1nW z?KKQZtXH#mxaL8Pr;;0$YuvYqW};(i)C5)?^I#&1kW^ISx_3Vi=qJy=%SW|UAjso? zpA;D=Q;S6Osn}cofY%f(z6#-=CjTnq?^;f&aLdg*&>L{gttimMd9pD?=4NjadrWuv zls`O*=7)eN6JC;=9>>P2_uFyvn$+`2C6*@V^8y{tT;;S13b+-cs6Npsrnl1RKJZ!U z2th2Jkh#f`FJ=yAxiQcbrf(a@X{oG>-t)eK+W;d8KM0Vh8C7Eq&h9NDH~__}yH27i zC7OG&V^mII%Xs_z#oX>ZWu}vj&tg!sH;Hp(u7-_Q zaf;KCY&b67qYzSVz>OLp`!eZxAVq%@ysvf6_)t?$7 zijg^=$=K*i*NP}O%K!N6*X}!ls?c``Nj&0ncRz)1=Z#WI-5V)YtW!yX)P*vyQW!(H;Lk7SpK zDXiV;sf zon0QA_+9s}9&bm4JzyLTbHUzoA1jPT{eSmSUe3D1tQXql9IBKlzbK!{-N79mcb)eA7{`CyZjL(a-sDoiz~9ope{K z(^%jz(3bO5pS}l=&2UotE@wLK*fONf3%M~onxEz5*>$MCSoGNop%VQg-o6BZMmf2# zBlLC4*C#&&@8Bez;$x}BLgF;XMKBByxDd>2hn@Fl^J8}m9Fh5(USGA_j-}S@MFH(q zV{K~Tc{n~tJfoJ&&Im6HhFq42*!U;LnSE-?u86NHL0 zDV;z45ogAJ{(*6bEHL&5hab$KpuXO$)8ms|SSLe=<|Vt~wK8MXt$n?SNrJ8PiMTFK=l;!*X$;_X1EpeJK}89|a0 zv!ZWz9X2Cfca`AN1Ex*$#eQ+83!J_{@kH5ZuhJJ=B^U#on%cvk3PQ3#H23B?Jn!gR zo=WJYd_=k|M)C4?FZkb@KyXkxOncyRv3HiN)aOwgf<)E-wKd1*Vkf5+{-Up;7UeQi z!(5poO)2au;Kn}IWN;y%cKTrWrflkQOM_BHZR`-8=9-bmem{+W?1S)_Z+>o z#wNiO6kVqP3}VBe0L(+JK~)QEXu{U*n+WZkx0crLMC``g`in>+AQ&$qRxB}jta#} zW$`(U&Uv>x$=q)$^XcVib6hiib)6=A(NGp#NNw&38(WRybD0oyWop?p@QEfhc%J&Xs&0C6JpE&^lPWei8CGt_L{oO>4N{&%BLH zFmRzsjc;~$P6Ygbt(EA~g{DH1>&?ORVgVn^ke#mJK8p8iflh2@eXn?&Pl~XUZAh}OI~7#dujcfXTJmk&r-zNxS{6mqXy5z^#vi4T~KzJ8o~=iD9W zi`s7q9!g+7VOE&!qHxTgD|(T%_lWn^4k{L#UOtg|EpH-6C{z-=Nsc=5rFU#0PF&G2 z3?VSuAR?WcBIg00S)ieD-gHkVR$Z-D?(K#On)s4SiFRu-Mw|2aC5NlmOl8FW9G%}$ zb&zr>((Shi{jk?L$z+&vPKH($TDSL}%JR$GSNZ+^fD} zNpdr(%lkEyk$d3caPEb_XkI*ViM%Vow$y-fMAYpf;O!q!q1qhP_E3D}+b#fei6c>> zux`=WO&N3XZE0TokwfP9QMgRq4#WF~3SHfO&>K*PuabmMFy-uRADl_1PAQb1ByPP_ z$T83QUfBI~ID$r=co*%7$4$o=^a|%B#li4f$bCau<~ZMh$2yY-Pq|dh}+p^ zK0Yl1D*qzKa0H&smfZltad{0ctD$=+>ySM1IUE+nVBO^t(}jrrCbdh6BsEtoUYL~u z`aoNX0LtX`uNN2ROiz^(DY{qxJ%o^}qZJODOh|0rp-G5g+vO@~Fqp*GevKe3Z0;jk z`E*DbgWz$YbG&z>SL!wARA+tE>?dhH4BXJkK$~bXr;6vAsLhE`F1_=se8zO)=pe6a zMf=!LrAK@!k(KH)H#xmLL8-Tot(+@Kjof_OjoXMrqKCAY{b3LR=>`X zofB|{3yZ=6;kF>9g3307>*7xaVVeyC?nH+4g^ZL8bYkL!z#3$9rGc|2m_6eSpI-b{pi2-e$`bwZ4eJd_UH(R0S00 zHgy%M|3$F#6Bd7hdS{}{$bZ#2_Axv3A@hv`u`SaP;=m%)XNi@rhf=Z{$^ZKuDba)x zlY+e0?);16PN9E;TtdYMCZo>f>=Oa28_}5SVJn(-^QuzP>`Oi!8|Je&BEZO=#-*H=UHI6Qx zn||!J)m0_ORC&y51OSLa7(_wCd zg+ERIrgUtO^QYY#>jbFxh__mC(5Lv}3L=8VgQCy<^>p81|2F@R$f0ykUHuYewwI(4 zVQ@ati@TN|puWM2^ZOlmDFaNHsZ7GQ?9XSNexGf}Iw^Ux0aH2q-dMiGfz;NY@;j!v zk1NgxVbIp51jL$#N(%9?C;)B2)e49M4|%WVD_~(S)xG+Kta`0Wj3}B{ALdl zDi?ekmRfz7fsK0g0;XPKCl(~@1}+l&vPnmF^DQ0%hYg7;OCb-S%>ThBvOzzpCS(?O z#N#m!6LVzE63;U=Nk!Kka4(gsH14PKaJEVGxj2l0J>Beymod$ixMbQP>zs0=Y}DyX zrKx>oH7e;3`^?0JPYpbIVV*;i2zkc=exOt-q?r#S>jpND|< zRWD!%uLDA={c;-=m3^sGZ7+*{N6*hJQ7T~Z-7o-HQtO>TsMdmaHu91q`@ zGyZX^ek8HJrHIUfDYX~?6M*wGUR_!%QZuu`E%FTtb781*|IldLP6(uoHDBan6#%!C z9tgCfF{r%be}sEq%EhA`vb!uo|IW8%{e99km0d|_oeKN-JVWsVAE6&GtQPj)9WA%# zYF3+Luo}E^>A&iN`$USS35;4PfLb37feL6Joa$)fK7KY5+~|vs1$vX7`FaN@qDQ^) zqb)r^fGHkRF@VlT=Br$~_QcXxd6NG7Z=1kDzN7{uD-0*>Z;yR-sUB>_j_TYvU*&cd z8aQ0lHTB#7kIjqlPqJl;j!*$31Rnq7Cg!B6U}qI>jFT4EZVXCUQiX}Rnc}&Yjl4RS zhn6^6ErkR$(U$oC^#WjWu%nV_PG&QS15LqRz-}`-?r?*)!7_9e6)?C$<8jzYO5^ud zzrNgMw5{iwY|=0U8nIgK23K*D;gpg^&F+y@>4aMqAP_MQk*fNpU_7ve-hkq|?6`X^ z)c!QFyc#g0^A)L#7Uz@gSLUVg_)Na=9>kecQcB0Y!)8n>+Jb)`wgX1h^x~_G>UPdRDta8RvGUN=rp;80g1kfeSxC zr`;wC=hMNA`AR6@u51&8V1KeMrBV0u_~`pkI-i9NmTOTGD!)ZoII(~xU^V7-dcFe^ zRi77WBk}>*k5&@ce$%Q~?-v@XwOhS)e1HkLLBYh>aHi01+1mhX@d!eVsWG6y*+ zAuukwz-BgHS5K*&tq@7Pz%XYjmr2ew-YK?1-jxdkYiyr=NP05_QjPgc!79}xK?*!? zW={>l9TCH6rP&K``1uyEIYkZdlw-&s0M;CKR8@P^<)Y6(by9~=GMx{QOZ%%M{r-F6 zLBPB&jR7eRI$!KJ`eOK8tbu8Ei9}=FET{SSOTQjp`Hx6gj<{$r*oIs1JCTp!%9b;V zz(t-0@bt!0)6>$bB%#R=e}mZS21?-9%h4zeWEx*|TfIk1bogkMzeQovDt@mRbcTbl zzsDg*L0)7>$nqyO*aI)I(~|Hrei<1RcfG0J{k*`sJB~vMf&MYRnvlo-O?Ybl3iJh;V?~fFOPY)g&u|6n-arB^ZcVQ7cN+%Q++Wo9XN2%8xm6*3^ z375-aM3d?$JgZ;hp*N28gOOUj3D~jH4(m4kOobG-FeC|S!96FY?ty|5C0|r2oZ50b zBO+!$sA(j|S>-Ux3X3yjcVdVL5uEx+A_MZMgMbeD;H znFUL!v;;8Lb&!a_s-l$#{stoehDteF&aowEBe zIh^*OU?(eDyW~H%s$jF>*|i2sfl1aH3T{|@vL*!MFtP!J-6o48_k8vIl=Xph-Rld2 z&&_J8CF(ihe>94;W_d3I%Q>8fOOZA*tjPO;&z~2{)uVYdwq*lAVjh+Zb^HIxqxfv z$I#0uPkxpzz|n4;V+K)BCbFpvfS-}yWZbummwhD2O2A!6-&>#^kUZ>HyzL6^c zG3@H;2+)zdPz0F-YQ|))AO}aOw9|2SvY7X_ONC5GTNv6V;P}z8M%F-UY#yvyPX2Se zPCJqHDCdIVm|l`Jr;)mwiO>|wmwchCcqImskV%=>J?nf*~!Es`zMcRa)A z%wU{MXQ|h*j6KLMvT<#jZ*r3{8O)#;^S)Q=vgN~w`*L(3Y5)!bYYp5mHtqpzP2kOw zmP3;sv$_2Y#>>4KC6C!x=HopoBVlwdDgfzs{D#i2NlN;9fFtmhX)CdQ>N5%2D_Oix zviU_P7G$q_C($%vB5~(NqN3>G$YuKCXc-$xTaiQ}Wjzv}>zb0@x5aj4Wa%Ek`9Cp1 z=FyHyh39d#jbIt5W}P2ffi)73|4{c!$AQRvTq+1Vxk394USV{E!3KLO_kV3QIaXkQ zYlr(HiLrGcnqSGVJ4HV^k+?O^uEzTN*L!rusew*rXSCIg8GR(IB2%L$EV2 zG6suYO)JH>w(oPhXs+#u?zrd#zu8DpzA?e#o?HsQN`Z1=zC)!Rg4ynR<4e#%)}Z3# zK@`_uOQ3#hF5q$BAy(PfNlUDHv9~~z-sqUP$8*xtDS?`+IYCE!&>0TqN5%_bHZ9i= zz#K(0l*CnCq6EwE=!>u%Iw+jk;dmrS>2N>jm6=b_;c;3f5o64%1_<-GCXfa*iFkzJ z>Rm`cYpfg4mc(?;TC*F^r)CRMUVQ|V1d*cWkH2HB!60W{iFnY$7lTN%e@ASEyCKY zWMU=+F!(S0*NN8A_`Q`VV98!v$Gwa`?^G($=E;5ip`pU+21SQzhgtiICSResz?&dl z@ou^Mn<%4Z-6#6F8q1%-mdAPc9a8)onm%vCPoQ>}N^6U>Dn%mI12%vOTOaT>J=Zd1 zAmFn*iNltLL)oM0@rt69GQeZ|)>@>{ZMhhbT5*vl`NZ?|nkrvCE6w{|Fg{}e@aCHt zMfJF`B?4v!hA?QO{xB8bN{z0(0rrJ<@j1p|AHL(^B_A|vIbWx6eX(EIsa0el0m1kL zkH$XVKL#E7g0fBQ+aM@9id_=@p2AE2KG|^M6Th-mX-kLwL*o(tl(;KLn5 z)te7x3YA7a*a2kF(La%KSHt;E5YUY3|dMEakXm>3Juzo)J|C)f9+sJ(O2>)aQFm|d7pkFMVB( z?3qmFknB&F%V<`a8@iFUy_+E7bBbovs@*;TWav>*2~c0k3slV~>`W9$W-j`et9dk0 zWwh!=pKXsVZ6uu$11f;G1gRSm4Nu*}oM_`x_1T?ypxUzl7*{#rH)WiZ(_)I#z)MrT z6b18ii%Z0D*~xHt8P9($uuWh7mA^VNC$&vzGcUhp5I@T|oZp&7&z;EanD~ukr(@5Z zKd~RLc8!rG;~Mu-lGQLhjU<{+Bs-X9ckR~`D*e?NqJFN+SR|~+N`aGnO;)ETfGmRi zi}iU{N7&Y}!ArY8*Oz4-=oY%BBspQB$QLoKG z;j{n3-~XS|5TKjB9x%6WTDT|Md9KJ1uV%lA3sDjgWB&1M`ZqND zukTmBk1@(^YbAfK>;E}kMh6fe@yN?*`1F> zgn#&2e){!x;PRpqS^xc_|MlV|AYOX)sq1|FA3N2*PTLoT|B*^V z!Tax)$A6!>Ac%16fCqqKK`|hB#@yDrXDjYv+Ai8_n&v-##(cXmoCNDOeZ$@6&nw3EE3Um{2U5 z6`Z9Vx9!o~FK0Hnj!yr=1k;M%{6Bz#{~6DJT|RGH=$2o{20%{FL?IDg9y%D;F7Dns zE%rVBAKz984N4as6871kNdwIsW*A3Sza~rk2YujbKdK|u@xS7Q{}`2jzt=q45z&fR zFoU=wD|r~UR?9Eva%_Fl8qza_U0FP?<`ccHPb;EdoQv@r-jwOJpPlvNB)+HJj3lAb z&t50q+viI4X3~5EY4&CeLLs_Hg;W2>K@|Q>xoo%sEAkB4KLlMT48ib|x($1lB%lp` z6)-5Ub+0#V!X^xxfCK6g5|RPL2c)Fuma8BdZ9&hrHd=8g6VIg`tRHC3JT%M zmD|j<6!#eBlx2S+yCZD2)*?p;fv1Bvj$L0oiEG0v*3kdz*!ZGo+kSf$kH`LftKYiH+CL8~L+N&ci7$Dq zD=pbSX+;G9Sr{WRQlq-97*Ze9;FMdn!s>fI0y+_GDJ_S>H}X2Kxd_SRR2RP5vW{Na zNVJGrNX1gc0ubrOtlw$(fr-On;(UzL7P)ehF+taxar+(L_NeL4rEUO{@G37hL|JJG z=Jz*1BsQ%M86yt5?f<%>-lA>Y9nTt!_v;M=Z03w9e(E)!H(BvyGH{vADyDGQP<2OS zM#W33`+a>20-?245dDm9F4FBc4|D*2k)6ivChdN?U;1?{Z#WLr0UCXsbGc51*rRz? z@H4=rY;Uny;{N>@1b@7=uo(jS1LVxQO>q*DnU5Cb>i|XuY0td%&if67$~?MEy7lCP znpFuPrdVTV9T~6;+Q`Z*H#F<**D^LL9fqOsSl!c*^v`BRy~A)>H!j8BQn_S!qL63< zi%%+t1WOD)Iqhco-le{m3RgZDOrEYmyH^m{7g#$qZVg`1TV`|`4QON#lx8O5nVAHq zq~6(`y!H1FvTh`Sw$+OxAEQ||>)U-pJbeM2axG`O9| zU^3y=;flcWLc*c{071bbtNGr)03oNL-P@>nx{5+38W;odg6p~e&~3aM;dL^+@}k0G ziHugEpeoa`)@}@2@$gc-Mbl;f|4{dqe^Ir2AE+V-NQ0DgHz+6w(%s$NAT5G4NF&`H zDk140XVzNR`d!~_M9a|)w4bs#A$SEM z1d3zX6XHa6O$Xz(e8^OCKQWaCBIAfJa;&jwo7b_<*76oY?GX5N-+R~}8adBp{Cg2^ z3x@Yh|I-aN7G#sheaFVw8^)yOiLWqxdm4EsFN65Jk3>UpueI3C2I&Dl8^=>)Jph`b zS=0=gy!H4CsUbb&vBdnI(B>U{rd4g2$*ff^$nSHvqj>pQb));V zWabZ*vY+SCi66AnB0fi8n^jy&dvJ8(R}8jfa^Dx&W^Td}3`z&R`pk2D)-Tpj=kv8_ zui4E>J>6h2sgvq^h-ZaQsj!4Bxs*34#W_YqViK22>cT*%9D4k~(4cr|4E0DMWJorAq6tolIG+!-!VFTcrTrMFn~LNT_a2`ScYP;LAH zVFms0llpX^?_Dt+G~lJaq#{qjEz@s_2g>FYF}?_Fno2WnP*LxGH(4_4xPRw$+wjA? z4~>XlS-;iYmcfGWblIQhC-(eNI*_BOy3RBdAI!Mz7uFk^DGR2Beo0&$L zm7cKtBo4D7N{~aEkWDuXjhw%i9A3ChsMDoyE-}t6tTZ}C?*|?={o32OmqwH+ytawN z{GY@!J*{ut!-jY zPS3V$6+eVmtI_C{?8au#n@FiRmx#*W#Mxo^7+cuUr=+FFZOFr%>lGtEDKO94Sft;3 zkVnZ6e>(NufKx~sj2M=L=h(72O-S#<^{h?eE)G|r&i#%Yx@5{%=x)~K!x1dt3RxyvkaDvk$*!5?)gN?0s zhUGg8KAK5Fn&BmG>b+aeX$Yq)@2bsu_4T5V)%?y0Tl@h(@JpC+&4)!v+M{vldh)9g zj?70GlRDnG^U)5CR+UjvS>U_&qMllo*Dv^WT?u)NtBKz_Dx3e*qegh<-6VgFL0ov9 z!DaB+i#INRX!KU}_vl9J-6W_j=A*&MAB_H8(F%*;VBQ+HCVzKM`rH*`x~UFuPQp}3 z_B&%f(F z)qWbtXi}HTVl9bh)RPDJDSaHR!UVU@%fV`opqEtCV{cYu9vC<)+@$oEzt<~yXf4*G zD$TYzQ@$=dN*#7M?L_`2-6I^}5OMV72qJW?RyYwa9+4(9MjKI`6wWXVlpum_GzS;J zZ{XnZWzX;mmGHFMAtuXgJo!+19IXh)RpfaJyH{e4qcjT!*&S1FB*_G9Z@!tzvroIkh50fer7UuCx# zi{dYSN$M}om+^^^tLCT+OC2b(E~_mY=Oh#`NK5;{@xgw!(!p+_v!ziinhsKG-Yufi zx{`MLJ9&Ic-}4kPCam;cPDCL}+{M0BiY@#!S@81fiTh&ovI*ldbqO^Sw~}zsm+v$4 z%Z>7gi4Nffo!ZpwO+v}OmL!X3o2(9Z)3}uBeOQ0!G^Og3 z@wq#B-JTJ>6$RC5)QES}`BPN*+C&L|cD5#%W;pT`m%nc{vG-EG5H|cQ>4#57&tbDl z@C94T4M!`*!nuuOH(yw6^}I(87I3vkBO5On#x2jtj6~6Tf$n{EA_buB+;uWu*RRc= z$_+qqp0f;s4(Ax{9dqr$E$6`J~IEJ5U|AO*W9)72i2RCv-hMSG@5i7ApSGGxsCnpkeT+qG3n=6mcGQ=m`e?^CnxLVNhFO^?^!ZZ?4j0o%OQ85{sqKX0c-I z4&7>Zhx<53IzhVfeW&(xgLR$h&seQYeh+ho`}S!qnq|EbVf3e4)E)q3hz3lyhMPg^ zLy5_0CvHbbC@#}?30C)ugP4=uF_kHmCiy3BXEzPh(&>tH^B~T|KUe=jiV1H6=la=q znZgOW7BLEeksYlbn*7iyD)d$au9C+ zLDiNsieEWb0AnadH$UHK7B`r|Ct^Qcu&2`Q@4==J zsy5NWiNc0Q4T-?yYJx{0RSu&YW-Xiij&k%}5Z?FTXn8`er zaXt#8Y;Pkv7tB)7DjC+xnxzp(M`dld`;{P898PyenXI_yB(x*SiHR~yg<8Vy*sB_F zgFg2ImzUku_(QF|v{JPKdy?tQa;rUwoQYmp`nnWTT%2{xvuVEg&mix^x$n;vON&2Y zNe}YOZu($E_TN6~q%prrEmUY)T~o&|BXI2v2*s3;SAa6!-+BnI*Z2QEsP7scQzFeu zG5N9Pk8L+JG*E=V1RdCa8@E?<;CMP<#?|b4x|N&ed=Rub-5jQm(f;j2+?wBZt*tfw zB*5PiT6+|f`*(dtS7aNGaAA-uZ#8Be<>ucGlW+qkTF1<%?&^p${(;X(q^;CTzBW5Z zCo$wV3y0q6>e4bUfAv|+RBo_(bKBg>I~Y>nE_Cawq2u5926pi6$<_UltqvFTNNs!K zyz29dZigg>wW2ZLmD}W8_Cld>URqj)V`~@zs_Pj--mhiFI!)Sa!AMxbbnC(OVFxq> zkWKOz?H`eh2~dw)?{4DelzQPsS{SU4ckUA2=%CY_@s8|}>)OsXO09IukRz3>+2dQs zrvIDQ+{ZeoIPf!%_-!13S7kFxXElt=9p4=VD>T}Am3gH*i{3go))IN)9K8c zA1Y$5F~C=u!3$n;Oy@CdpRFuzeXATdV`LyxV~XpDRXCK^NhMtn%K zbPAwiA!#BCSq8HO`4`7GTjDGbQPq_QEd2#uUNbB`W`qgZ^c~jok@YFg9}spKJx&IU zWJzSbfa2%5dhm=kf|LfXshUKh6vND#2a4G2p3E{8Y+3W?$<@ytEog-yJMJZqaU zS8?9;y#pk(wU#3Y$KbhEjfA9mR*X&s(QWXQ3S<4fzS@tIED7RgPsd{f4g^uMg>9@R zez1LsqmFUfWZ#&l6c1nO+go6)df(}uu-ymK{tfxijHkbpYhsJ}IlSF^y)Q;YSv8O& zQR9nWHp46Ya~#e3@@3{ZR^7K2SbBpk=Anxsne(j<{NzJBiv8UbJi9X$dSMpN^-#s+ z{}-@pvw-&$a}~k|OXVQ~nQPs~4covmf_VmFPy7Ut=YhpmHKAWr4I1%l)gTPAT;rxr z=*QC~W807GESR3fXq{5)KjUniH+}3C#WOZM z>&`xL8tDYw)nwmb)Z$ckl*qbIeQ%DHk-35I!M9DU4MHN|au$BKm$m>jSHpu=b)Fvj zkMjg)sy9tbpS`)d7|}wZiz4HDokpCxV(Xb;HE}9pbDCO{tM4D=my_`EMA{V@m%sK|#q@Wbw%7f`oz$Nu&3Pbwt1if-17bE8N1M&LbXl!KX|}%& zo9C5(Sv{pf6l!xlKB&g-7S^iuEPo~=oS9fB4PVJQmUzlDdwEYvobd4@%53S`q~k#} z>#_=&{zBzWl((1XvE;{BOs$?bJ)OnZnPXL3slgNq{or2Lb4FN1K?t3b z&-K#<27*!@7b)9Yt^^P?9Ld|*$}6_WaH92vIU<% z>sJ2SNIwEznyjT85*mrE-Mw+V!1VH7;#RG;{E$KQ6f{HxjwU9_=Ar-l8UVr(`K8(W z9{t6spQMpShad{Cvl=b0> zOS9%(YLxX(`m@4Ft0u{N9?d<%? zVJmW&JdTt~M0`b~V5vlrd`nAxDVBw0hk%j`dGE)h@Ks@7ua)57H1gtWhl)Y7#0#$X z6h#^(<*sVvBPXM{*08R_Y~^e#u_hMavC=Net_MIB+A&$^P@jE7bEll%fhrMp96G%4=c)z(v_oAXVr z_? zQTmH!xn`D@(hj_6`)`_u2C&pdA7(9x;z1r+kmAz-T-8ElxiBvGTsohZ?9fuL;FBjf zq>Tsa#2EQ~$Da@UKN}yIe~GCL-9i^l1~GWKYib0_gQzu5cKB30kj7@61%cL5oOQ|o z#7-GH=HC)w*t9nN*?;_!kGF=r8=CAtKQr56_!5S$#H~9skgdW&^Zsxo_WPi$o1@E7ld^cF3gu-%c!dWe5?#-Ca~tKa~r*pb96 zIwSX~G?!S6C{cE#(Q9(*9NXO3G4}~V-ou@{8i!43lEnF%j}qN0nLrz;`Ku1( za`VhR{Xcnsy+WHp0RDLzO0o{-v)3Qj>O_MdS0(M>0tUta`=!X>LW{G?WQkTT8RucN zC2DpisG*Y!#F~tKmQc9Cwd&gT;+=aAt6z-L%PY)UlYnTDTMG(lj@7USg_X6CS#cTF zM;o#Zo=#(lNDAhk`AANYHlJWlf|iZMv3v#T{7-hxhr~aI%LWK4y1St;9eUi32y%!f z3M1JfU(zv(jN|}&RlFtp^Dmm!`Oq3?v~I1y#kW>2=VxP5UVqkZL^AcX*f7weVicE+ z3x4JG_$kGm5lr1J-mj8Ce{tF@;%H_jC#CB8 z^@W{#gWZz_0gb8g^A8^0dhG>RBF^$vi$L*u6*+E-7h-eQcxzP(hH0SJFx&Bu+TIB}h1IbJT@= zMW9`4S0v&Tjo3XCgh7%cP9RN#sh3rh^fFrlEeQndXyP9_k$$nW#hKoltB{M%?$3-M z=G62kF@mR{p4*$RYC0pY)WF*w%H(Dl%a@OxaVA0vN)jJkLED~sChP|>2G9AK+Y#ZX z7(_IGXk{lSR_?|iS|Tn{olLe>%>QPBK3`1}G06+#x7v(8_zjieWAhzi{jci~f0&$= z_(zb?Me?d;7ihKS)|C=Txs)_3N8>y(YbJ6JdHK0+e?eQAzj*dp@i9RI5(Rn|Kjdse z1c~HT3*HCv7Ed-2V*}S?O`@RcyPX?#k8aH}4AkTPxcq1?`^7&0>+|Muy#Ru4#i>22 zgxNmo_?ps3izuFSbJwKbiYOf0Gz+R@J)CWnAGOJ_S^m+j!f?R2(+!pd=?Pf zA^-Pz2IT2~{sawafDfoVllv^~-$?XdDY5@Qe{FKp&-)brd%Bjk;g6iISGJuiJN6Zp z+S&{kTXA;&)kpZhKgDMzxD(e8f&LH3_donCdBA(_9ImX!OH1FYOTTm;1~OLQjVQsF zegE*UmvrD6)vcFw)DRln_YfMW&|e@9?u-63XCbNIw$4ikee*ZzJ z5pp_|m3_4mb`~j>AdT`;JLFObVn`_(LVgIqdF!b%D3I~#37!261o9i1lGF*a!&tK; z5MX<0K2iMN(Z=A!w+>3Y@uCk2{NfzVx~W?^E4SPWNhXIBhfuf3-%Xzx9?J%HpF?p;d?mT!I$Y zt`%t}e~|`DTo}GQ6v)eIbS9ZgYw;OX6%*NXs5RKKl2XR<`+$PAe@$+i*{s|Px^~*= z1A>xbfD=Ts_CwG=-P3K?@SbX}73gm&(KwF0@ta#M*6*F;t<;#HUnx3sq{i?-ilQtF zZ}I^}2qu@^LVSl)+Ko~t1zd-DcdbCosEvQl4n+tH2Y%g}*|-?3^J z(59osZcJ{sS2gI!+VzH!HuJT51BqqKAasBHntL`W-&;4>t9>XNN(LPXnxw8E17!peo{D+jF0+3Tb?Zu z1-cL3=PZ5}dSFa%`&0R%ARg!PD70&DhcfxflAIBM3)lp~NI0oXw?=#W(^*L&o55Yj z0|(T6c(Tc%+@y{MWcN+XdW~}((8i2@mAwAsia#v7^2!|;qSPLf)lyU`uiXlPkw?Ow z9|-kKhtib_Re#WDi{H~EFsVH+-kzTllkD&WR)<{q-PA@;t2d|@No-kW^H*qKOJEIX zt72yDYE^!(E6XzO(tnhv9Kby`z}4p^n(jlnJ*u`m7w~{iSFP(NFck}%TNPsY7=rxW zgabyb-59Fg@`7EE0O)wQBG#Ww(M-(aq`7YH%Z21PYBO6a!f7*SgG|VNUC-rJBL4hp zX@_~_ySQ^%h<+3%^?KCMz;Rw^j(mpnclvf(w=GVvx&l* zO6P6P=_dPDY!lDd1NB8`_5ZYH3nhFm3wm)$*9FK

vv5e7WG34t0?C(k>k4_z}0 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 TWugU$(jJHl%LwHQXu1C%Y0z^` literal 0 HcmV?d00001 diff --git a/website/public/img/ui/vault-worker-filter_light.png b/website/public/img/ui/vault-worker-filter_light.png new file mode 100644 index 0000000000000000000000000000000000000000..871076729923719d3bef1e1dbeda4616a0dcd44c GIT binary patch literal 77471 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�X=Aj`DfcTv^c50o%%wHh;` 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%0AXj`%@E+Dbb@E!)r;ExYk(J3az?>ujIYvAj3q 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 Rl8=BtNin&1#Ugs%{~tZ=Dlz~7 diff --git a/website/public/img/vault-worker-filter-light.png b/website/public/img/vault-worker-filter-light.png deleted file mode 100644 index 4cc01f9839842fdf21ac7451e8ee9bd40c0e02cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34349 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 From 62e90ccacd00d86e61a2d43a46eb67e24f7aa173 Mon Sep 17 00:00:00 2001 From: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> Date: Thu, 30 Jan 2025 16:31:59 -0500 Subject: [PATCH 06/70] docs: Update DHC workflows (#5430) * docs: Update DHC workflows * docs: Update field definitions * docs: Add GCP workflows * docs: Add note about required fields * adds jq private key example code * use : operator for label filters * use generic TF variables, CLI attr fixes --------- Co-authored-by: stellarsquall --- .../docs/concepts/host-discovery/aws.mdx | 279 ++++++++-- .../docs/concepts/host-discovery/azure.mdx | 151 +++-- .../docs/concepts/host-discovery/gcp.mdx | 515 +++++++++++++----- .../docs/concepts/host-discovery/index.mdx | 6 +- 4 files changed, 735 insertions(+), 216 deletions(-) diff --git a/website/content/docs/concepts/host-discovery/aws.mdx b/website/content/docs/concepts/host-discovery/aws.mdx index 0a25143c4a..62eb7f8f86 100644 --- a/website/content/docs/concepts/host-discovery/aws.mdx +++ b/website/content/docs/concepts/host-discovery/aws.mdx @@ -13,21 +13,133 @@ a dynamic host catalog to integrate with AWS, you create a host catalog of the ` and set the `plugin-name` value to `aws`. You must also provide the specific fields needed for Boundary to authenticate with AWS. +Complete the following steps to create a dynamic host catalog for AWS: + - - -```shell-session -$ boundary host-catalogs create plugin \ - -scope-id $BOUNDARY_PROJECT_ID \ - -plugin-name aws \ - -attr disable_credential_rotation=true \ - -attr region=us-east-1 \ - -secret access_key_id=env://AWS_ACCESS_KEY_ID \ - -secret secret_access_key=env://AWS_SECRET_ACCESS_KEY -``` + + +1. Log in to Boundary. +1. Select the org, and then select the project you want to create a host catalog for. +1. Select **Host Catalogs**. +1. Select **New Host Catalog**. +1. Complete the following fields: + - **Name**: (Optional) An optional name for identification purposes. + If you enter a name, it must be unique. + - **Description**: (Optional) An optional description of the host catalog for identification purposes. + - **Type**: (Required) Select **Dynamic** to create a dynamic host catalog. + - **Provider**: (Required) Select **AWS** to create a dynamic host catalog for your AWS resources. + - **AWS Region**: (Required) Enter the AWS region of the hosts you want to add to the host catalog. + - **Credential type**: (Required) Select the type of credential you want to use to authenticate to the host catalog. The required fields for configuring the host catalog vary depending on whether you configure static or dynamic credentials: + - **Use an access key (Static Credentials)**: Authenticates to the host catalog using an access key that you generate in AWS. + - **Use Assume Role (Dynamic Credentials)**: Authenticates to the host catalog using credentials that AWS `AssumeRole` generates. + + + + + - **Access Key ID**: (Required) The access key ID for the IAM user to use with this host catalog. + - **Secret Access Key**: (Required) The secret access key for the IAM user to use with this host catalog. + - **Worker Filter**: (Optional) An optional filter to route requests to a designated worker. + + + + + - **Role ARN**: (Required) - The AWS role ARN to use for `AssumeRole` authentication. + If you provide a `role_arn` value, you must also set `disable_credential_rotation` to `true`. + - **Role external ID**: (Optional) - The external ID for the `AssumeRole` provider. + - **Role session name**: (Optional) - The session name for the `AssumeRole` provider. + - **Role tags**: (Optional) - The key-value pair tags for the `AssumeRole` provider. + - **Worker Filter**: (Optional) - An optional filter to route requests to a designated worker. + - **Disable credential rotation**: - When enabled, Boundary does not rotate the credentials with AWS automatically. + Credential rotation is automatically disabled when you use dynamic credentials. + + + + +1. Select **Save**. + + + + +The required fields for creating a dynamic host catalog depend on whether you configure static or dynamic credentials. + + + + +1. Log in to Boundary. +1. Use the following command to create a dynamic host catalog for AWS using static credentials: + + ```shell-session + $ boundary host-catalogs create plugin \ + -scope-id $BOUNDARY_PROJECT_ID \ + -plugin-name aws \ + -attr disable_credential_rotation=true \ + -attr region=us-east-1 \ + -secret access_key_id=env://AWS_ACCESS_KEY_ID \ + -secret secret_access_key=env://AWS_SECRET_ACCESS_KEY + ``` + + The `scope-id` and `plugin-name` fields are required when you create a + dynamic host catalog. + + The fields following the `attr` and `secret` flags are specific to AWS and are required by + Boundary for authentication. + Replace the values in the command with the following required AWS secrets and any attributes you want to associate with the host catalog: + + - `disable_credential_rotation`: When set to `true`, Boundary does not rotate the credentials with AWS automatically. + - `region`: The region to configure the host catalog for. All host sets in this catalog are configured for this region. + - `access_key_id`: The access key ID for the IAM user to use with this host catalog. + - `secret_access_key`: The secret access key for the IAM user to use with this host catalog. + + Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. + + + + + +1. Log in to Boundary. +1. Use the following command to create a dynamic host catalog using dynamic credentials: + + ```shell-session + $ boundary host-catalogs create plugin \ + -scope-id $BOUNDARY_PROJECT_ID \ + -plugin-name aws \ + -attr disable_credential_rotation=true \ + -attr region=us-east-1 \ + -attr role_arn=AWS_ROLE_ARN_VALUE \ + -attr role_external_id=AWS_ROLE_EXTERNAL_ID_VALUE \ + -attr role_session_name=AWS_ROLE_SESSION_NAME_VALUE \ + -attr role_tags=AWS_ROLE_TAGS_VALUE + ``` + + The `scope-id` and `plugin-name` fields are required when you create a dynamic host catalog. + + Replace the values in the command with the following required AWS secrets and any attributes you want to associate with the host catalog: + + - `disable_credential_rotation`: When set to `true`, Boundary does not rotate the credentials with AWS automatically. + You must disable credential rotation to use dynamic credentials. + - `region`: The region to configure the host catalog for. All host sets in this catalog will be configured for this region. + - `role_arn`: The AWS role ARN used for `AssumeRole` authentication. If you provide a `role_arn` value, you must also set `disable_credential_rotation` to `true`. + - `role_external_id`: The external ID that you configured for the `AssumeRole` provider. + - `role_session_name`: The session name that you configured for the `AssumeRole` provider. + - `role_tags`: The key-value pair tags that you configured for the `AssumeRole` provider. + + Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. + + + - + + + +The required fields for creating a dynamic host catalog depend on whether you configure static or dynamic credentials. + +Refer to the [Boundary Terraform provider documentation](https://registry.terraform.io/providers/hashicorp/boundary/latest/docs) to learn about the requirements for the following example attributes. + + + + +Apply the following Terraform policy: ```hcl resource "boundary_host_catalog_plugin" "aws_host_catalog" { @@ -36,85 +148,144 @@ $ boundary host-catalogs create plugin \ scope_id = boundary_scope.project.id plugin_name = "aws" + # recommended to pass in aws secrets using a file() or using environment variables attributes_json = jsonencode({ "region" = "eu-west-2", "disable_credential_rotation" = true }) secrets_json = jsonencode({ - "access_key_id" = var.aws_access, - "secret_access_key" = var.aws_secret}) + "access_key_id" = "AWS_ACCESS_KEY_ID_VALUE", + "secret_access_key" = "AWS_SECRET_ACCESS_KEY_VALUE"}) } ``` +The `scope_id` and `plugin_name` fields are required when you create a dynamic host catalog. + +Replace the values in the configuration with the following required AWS secrets and any attributes you want to associate with the host catalog: + + - `disable_credential_rotation`: When set to `true`, Boundary does not rotate the credentials with AWS automatically. + - `region`: The region to configure the host catalog for. All host sets in this catalog are configured for this region. + - `access_key_id`: The access key ID for the IAM user to use with this host catalog. + - `secret_access_key`: The secret access key for the IAM user to use with this host catalog. + +Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. + - + -The `scope-id` and `plugin-name` fields are required when you create a - dynamic host catalog. +Apply the following Terraform policy: -The fields following the `attr` and `secret` flags are specific to AWS and are required by - Boundary for authentication. + ```hcl + resource "boundary_host_catalog_plugin" "aws_host_catalog" { + name = "AWS Catalog" + description = "AWS Host Catalog" + scope_id = boundary_scope.project.id + plugin_name = "aws" -- `disable_credential_rotation`: When set to `true`, Boundary will not rotate the credentials with AWS automatically. -- `region`: The region to configure the host catalog for. All host sets in this - catalog will be configured for this region. -- `role_arn`: The AWS role ARN used for `AssumeRole` authentication. If you provide a `role_arn` value, you must also set `disable_credential_rotation` to `true`. -- `role_external_id`: The external ID that you configured for the `AssumeRole` provider. -- `role_session_name`: The session name that you configured for the `AssumeRole` provider. -- `role_tags`: The key-value pair tags that you configured for the `AssumeRole` provider. -- `access_key_id`: The access key ID for the IAM user to use with this host - catalog. -- `secret_access_key`: The secret access key for the IAM user to use with this - host catalog. + attributes_json = jsonencode({ + "region" = "eu-west-2", + "disable_credential_rotation" = true }) + secrets_json = jsonencode({ + "role_arn" = "AWS_ROLE_ARN_VALUE", + "role_external_id" = "AWS_ROLE_EXTERNAL_ID_VALUE", + "role_session_name" = "AWS_ROLE_SESSION_NAME_VALUE", + "role_tags" = "AWS_ROLE_TAGS_VALUE"}) + } + ``` + +The `scope_id` and `plugin_name` fields are required when you create a dynamic host catalog. + +Replace the values in the configuration with the following required AWS secrets and any attributes you want to associate with the host catalog: + - `disable_credential_rotation`: When set to `true`, Boundary does not rotate the credentials with AWS automatically. + You must disable credential rotation to use dynamic credentials. + - `region`: The region to configure the host catalog for. All host sets in this catalog are configured for this region. + - `role_arn`: The AWS role ARN used for `AssumeRole` authentication. If you provide a `role_arn` value, you must also set `disable_credential_rotation` to `true`. + - `role_external_id`: The external ID that you configured for the `AssumeRole` provider. + - `role_session_name`: The session name that you configured for the `AssumeRole` provider. + - `role_tags`: The key-value pair tags that you configured for the `AssumeRole` provider. Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. + + + + + + ## Create a host set to connect with AWS [Host sets](/boundary/docs/concepts/domain-model/host-sets) specify which AWS filters should be used to identify the discovered hosts that should be added as members. -Create a host set using the following command: +Complete the following steps to create a host set: + + +1. Log in to Boundary. +1. Select the org, and then select the project you want to create a host set for. +1. Select **Host Catalogs**. +1. Select the dynamic host catalog to which you want add a host set. +1. Click the **Host Sets** tab, and then click **New**. +1. Complete the following fields: + - **Name**: (Optional) An optional name for identification purposes. + If you enter a name, it must be unique. + - **Description**: (Optional) An optional description of the host catalog for identification purposes. +1. Click **Save**. + + + -```shell-session -$ boundary host-sets create plugin \ - -host-catalog-id $BOUNDARY_HOST_CATALOG_ID \ - -attr filters=tag-key=foo,bar \ - -attr filters=tag-key=baz -``` +1. Log in to Boundary. +1. Use the following command to create a host set: + + ```shell-session + $ boundary host-sets create plugin \ + -host-catalog-id $BOUNDARY_HOST_CATALOG_ID \ + -attr filters=tag-key=foo,bar \ + -attr filters=tag-key=baz + ``` + + The `host-catalog-id` value is a required field that specifies in which host catalog to create this host set. + + Like with the host catalog, the fields passed in after the `attr` flag are specific to AWS. + + The `filters` field contains string filters in the format key=val1,val2. The key corresponds to a filter option, and the value(s) are a comma-separated list. + For a list of filter options, refer to the [describe-instances in the AWS CLI reference](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html). + + When the values in a single `filters` field are separated by a comma, either can be true for the host to match. + When multiple filters fields are provided, they must all match for a host to match. + In the example above, an instance must have either tags `foo` or `bar`, and must have the tag `baz`. + + For more fields that you can use when creating host sets, refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-sets). +Apply the following Terraform policy: + ```hcl resource "boundary_host_set_plugin" "aws_host_set" { name = "AWS Host Set" description = "AWS Host Set" - host_catalog_id = boundary_scope.aws_host_catalog.id + host_catalog_id = boundary_host_catalog_plugin.aws_host_catalog.id attributes_json = jsonencode({ "filters" = ["tag-key=foo,bar", "tag-key=baz"] }) } ``` - - +The `host_catalog_id` value is a required field that specifies in which host catalog to create this host set. + +The `filters` field contains string filters in the format key=val1,val2. +The key corresponds to a filter option, and the value(s) are a comma-separated list. +For a list of filter options, refer to the [describe-instances in the AWS CLI reference](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html). -The `host-catalog-id` value is a required field that specifies in which host catalog to - create this host set. +When the values in a single `filters` field are separated by a comma, either can be true for the host to match. +When multiple filters fields are provided, they must all match for a host to match. +In the example above, an instance must have either tags `foo` or `bar`, and must have the tag `baz`. -Like with the host catalog, the fields passed in after the `attr` flag are - specific to AWS. +For more fields that you can use when creating host sets, refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-sets). -The `filters` field contains string filters in the format key=val1,val2. The key corresponds to - a filter option, and the value(s) are a comma-separated list. For a list of - filter options, refer to the - [describe-instances in the AWS CLI reference](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html). - When the values in a single `filters` field are separated by a comma, either - can be true for the host to match. When multiple filters fields are provided, - they must all match for a host to match. In the example above, an instance must - have either tags `foo` or `bar`, and must have the tag `baz`. -For more fields that you can use when creating host sets, refer to - [the domain model documentation](/boundary/docs/concepts/domain-model/host-sets). + + diff --git a/website/content/docs/concepts/host-discovery/azure.mdx b/website/content/docs/concepts/host-discovery/azure.mdx index 397e212351..5010b4a104 100644 --- a/website/content/docs/concepts/host-discovery/azure.mdx +++ b/website/content/docs/concepts/host-discovery/azure.mdx @@ -13,22 +13,65 @@ dynamic host catalog to integrate with Azure, you create a host catalog of the `plugin` type and set the `plugin-name` value to `azure`. You must also provide the specific fields needed for Boundary to authenticate with Azure. +Complete the following steps to create a dynamic host catalog for Azure: + - - -```shell-session -$ boundary host-catalogs create plugin \ - -scope-id $PROJECT_ID \ - -plugin-name azure \ - -attr disable_credential_rotation=true \ - -attr tenant_id=env://ARM_TENANT_ID \ - -attr subscription_id=env://ARM_SUBSCRIPTION_ID \ - -attr client_id=env://ARM_CLIENT_ID \ - -secret secret_value=env://ARM_CLIENT_SECRET -``` + + +1. Log in to Boundary. +1. Select the org, and then select the project you want to create a host catalog for. +1. Select **Host Catalogs**. +1. Select **New Host Catalog**. +1. Complete the following fields: + - **Name**: (Optional) An optional name for identification purposes. + If you enter a name, it must be unique. + - **Description**: (Optional) An optional description of the host catalog for identification purposes. + - **Type**: (Required) Select **Dynamic** to create a dynamic host catalog. + - **Provider**: (Required) Select **Azure** to create a dynamic host catalog for your Azure resources. + - **Tenant/Directory ID**: (Required) The ARM tenant (directory) ID for your Azure Active Directory application. + - **Subscription ID**: (Required) The ARM subscription ID for the subscription that has read access. + - **Client/Application ID**: (Required) The client (application) ID of the Azure service principal that Boundary should use to authenticate and discover hosts. + - **Client Secret Value**: (Required) The ARM client secret value that Azure generates for authentication. + - **Disable credential rotation**: When enabled, Boundary does not rotate the credentials with Azure automatically. + Azure host catalogs do not currently support credential rotation. +1. Select **Save**. + + + + +1. Log in to Boundary. +1. Use the following command to create a dynamic host catalog for Azure: + + ```shell-session + $ boundary host-catalogs create plugin \ + -scope-id $PROJECT_ID \ + -plugin-name azure \ + -attr disable_credential_rotation=true \ + -attr tenant_id=env://ARM_TENANT_ID \ + -attr subscription_id=env://ARM_SUBSCRIPTION_ID \ + -attr client_id=env://ARM_CLIENT_ID \ + -secret secret_value=env://ARM_CLIENT_SECRET + ``` + + The `scope-id` and `plugin-name` fields are required when you create a dynamic host catalog. + + The fields following the `attr` and `secret` flags are specific to Azure and are required by Boundary for authentication. + + - `disable_credential_rotation`: When set to `true`, Boundary does not rotate the credentials automatically. + Azure host catalogs do not currently support credential rotation. + - `tenant_id`: (Required) The ARM tenant (directory) ID for your Azure Active Directory application. + - `subscription_id`: (Required) The ARM subscription ID for the subscription that has read access. + - `client_id`: (Required) The client (application) ID of the Azure service principal that Boundary should use to authenticate and discover hosts. + - `secret_value`: (Required) The ARM client secret value that Azure generates for authentication. + + Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. - + + +Refer to the [Boundary Terraform provider documentation](https://registry.terraform.io/providers/hashicorp/boundary/latest/docs) to learn about the requirements for the following example attributes. + +Apply the following Terraform policy: ```hcl resource "boundary_host_catalog_plugin" "azure_host_catalog" { @@ -37,6 +80,7 @@ resource "boundary_host_catalog_plugin" "azure_host_catalog" { scope_id = boundary_scope.project.id plugin_name = "azure" + # recommended to pass in aws secrets using a file() or using environment variables attributes_json = jsonencode({ "tenant_id" = "ARM_TENANT_ID", "subscription_id" = "ARM_SUBSCRIPTION_ID" @@ -47,44 +91,79 @@ resource "boundary_host_catalog_plugin" "azure_host_catalog" { } ``` - - - -The `scope-id` and `plugin-name` fields are required when you create a +The `scope_id` and `plugin_name` fields are required when you create a dynamic host catalog. -The fields following the `attr` and `secret` flags are specific to Azure and are required by +The fields following the `attributes_json` and `secrets_json` flags are specific to Azure and are required by Boundary for authentication. -- `disable_credential_rotation`: When set to `true`, Boundary will not rotate the credentials automatically. -- `tenant_id`: The ARM Tenant(Directory) ID -- `subscription_id`: The ARM Subscription ID -- `client_id`: The ARM Client (Application) ID -- `secret_value`: The ARM Client Secret +- `disable_credential_rotation`: When set to `true`, Boundary does not rotate the credentials automatically. +Azure host catalogs do not currently support credential rotation. +- `tenant_id`: (Required) The ARM tenant (directory) ID for your Azure Active Directory application. +- `subscription_id`: (Required) The ARM subscription ID for the subscription that has read access. +- `client_id`: (Required) The client (application) ID of the Azure service principal that Boundary should use to authenticate and discover hosts. +- `secret_value`: (Required) The ARM client secret value that Azure generates for authentication. Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. + + + ## Create a host set to connect with Azure [Host sets](/boundary/docs/concepts/domain-model/host-sets) specify which Azure Resource Manager (ARM) filters should be used to identify the discovered hosts that should be added as members. -Create a host set using the following command: +Complete the following steps to create a host set: + + + +1. Log in to Boundary. +1. Select the org, and then select the project you want to create a host set for. +1. Select **Host Catalogs**. +1. Select the dynamic host catalog to which you want add a host set. +1. Click the **Host Sets** tab, and then click **New**. +1. Complete the following fields: + - **Name**: (Optional) An optional name for identification purposes. + If you enter a name, it must be unique. + - **Description**: (Optional) An optional description of the host catalog for identification purposes. +1. Click **Save**. + - -```shell-session -$ boundary host-sets create plugin \ - -name database \ - -host-catalog-id $HOST_CATALOG_ID \ - -attr filter="tagName eq 'service-type' and tagValue eq 'database'" -``` +1. Log in to Boundary. +1. Use the following command to create a host set: + + ```shell-session + $ boundary host-sets create plugin \ + -name database \ + -host-catalog-id $HOST_CATALOG_ID \ + -attr filter="tagName eq 'service-type' and tagValue eq 'database'" + ``` + + The `host-catalog-id` value is a required field that specifies in which host catalog to create this host set. + + The fields following the `attr` flag are specific to Azure. + + The `filter` field represents the ARM filter used to select resources that should be a part of this host set. + There are some limitations with the filtering syntax. + Specifically, when you use tags, other types of filters (such as on resource type) are not allowed. + As a result, it is generally useful to filter directly on tag names or values as in the following examples: + - `tagName eq 'application'` + - `tagName eq 'application' and tagValue eq 'app2'` + + Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. + +Refer to the [Boundary Terraform provider documentation](https://registry.terraform.io/providers/hashicorp/boundary/latest/docs) to learn about the requirements for the following example attributes. + +Apply the following Terraform policy: + ```hcl resource "boundary_host_set_plugin" "azure_host_set" { name = "Azure Set" @@ -95,13 +174,10 @@ $ boundary host-sets create plugin \ } ``` - - - -The `host-catalog-id` value is a required field that specifies in which host catalog to +The `host_catalog_id` value is a required field that specifies in which host catalog to create this host set. -The fields following the `attr` flag are specific to Azure. +The fields following the `attributes_json` flag are specific to Azure. The `filter` field represents the ARM filter used to select resources that should be a part of this host set. There are some limitations with the filtering syntax. @@ -112,3 +188,6 @@ The `filter` field represents the ARM filter used to select resources that shoul - `tagName eq 'application' and tagValue eq 'app2'` Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. + + + diff --git a/website/content/docs/concepts/host-discovery/gcp.mdx b/website/content/docs/concepts/host-discovery/gcp.mdx index 891e8d1c15..8a94aeb616 100644 --- a/website/content/docs/concepts/host-discovery/gcp.mdx +++ b/website/content/docs/concepts/host-discovery/gcp.mdx @@ -5,38 +5,272 @@ description: >- Use dynamic host catalogs to automatically discover GCP Compute Engine VM instances and add them as hosts. Create a host catalog and host set for GCP resources. --- # GCP dynamic host catalogs + Boundary uses dynamic host catalogs to automatically discover GCP Compute Engine VM instances and add them as hosts. -## Create a host catalog to connect with GCP -Boundary uses plugins to integrate with a variety of providers. To use -a dynamic host catalog to integrate with GCP, you create a host catalog of the `plugin` type -and set the `plugin-name` value to `gcp`. You must also provide the specific -fields needed for Boundary to authenticate with GCP. +You can authenticate to GCP using a service account, service impersonation, or the GCP Application Default Credentials (ADC): -### Authentication with service account -Create a service account in GCP and download the private key file. The service account should have the following roles: -- `roles/compute.viewer` (Required): To list Compute Engine VM instance in the project. -- `roles/iam.serviceAccountKeyAdmin` (Optional): - To rotate the service account key if `disable_credential_rotation` is set to `false`. + + -Pass the following fields to Boundary for authentication: +To authenticate using the service account, create a service account in GCP and download the private key file. - - +The service account should have the following roles: + + - `roles/compute.viewer`: (Required) To list Compute Engine VM instance in the project. + - `roles/iam.serviceAccountKeyAdmin`: (Optional) To rotate the service account key if `disable_credential_rotation` is set to `false`. + + + + + +Service account impersonation allows Boundary to authenticate with GCP using a service account that impersonates another service account. +Impersonation is useful when you want to restrict the permissions of the service account Boundary uses. + +You must create two service accounts to authenticate using service impersonation: + +- `Base service account`: The service account Boundary uses to authenticate with GCP. The service account should have the following roles: + - `roles/iam.serviceAccountTokenCreator`: (Required) To create a token for the target service account. + - `roles/iam.serviceAccountKeyAdmin`: (Optional) To rotate the service account key if `disable_credential_rotation` is set to `false`. + +- `Target service account`: The service account to impersonate. The service account should have the following role: + - `roles/compute.viewer`: (Required) To list Compute Engine VM instance in the project. + + + + + +If you run Boundary on a GCP VM instance, you can use Application Default Credentials (ADC) to authenticate with GCP. +Boundary uses the service account associated with the VM instance to authenticate with GCP. + + + + + + +If you downloaded the private key from GCP, it may contain extra `/n` characters that cause an error. +You can use the `jq` utility to remove the extra `/n` characters. For example: ```shell-session -$ boundary host-catalogs create plugin \ - -scope-id $BOUNDARY_PROJECT_ID \ - -plugin-name gcp \ - -attr disable_credential_rotation=true \ - -attr zone=us-central1-a \ - -attr project_id=env://GCP_PROJECT_ID \ - -attr client_email=env://CLIENT_EMAIL \ - -secret private_key_id=env://PRIVATE_KEY_ID \ - -secret private_key=file://$PRIVATE_KEY_FILE_PATH +$ jq -r '.private_key' my-gcp-private-key.json ``` + + +## Create a host catalog to connect with GCP + +Boundary uses plugins to integrate with a variety of providers. +To use a dynamic host catalog to integrate with GCP, you create a host catalog of the `plugin` type and set the `plugin-name` value to `gcp`. + +You must also provide the specific fields needed for Boundary to authenticate with GCP. +The required fields depend on whether you authenticate using the service account, service impersonation, or the GCP Application Default Credentials (ADC). + +Complete the following steps to create a dynamic host catalog for GCP: + + + + +1. Log in to Boundary. +1. Select the org, and then select the project you want to create a host catalog for. +1. Select **Host Catalogs**. +1. Select **New Host Catalog**. +1. Complete the following fields: + - **Name**: (Optional) An optional description of the host catalog for identification purposes. + If you enter a name, it must be unique. + - **Description**: (Optional) An optional description of the host catalog for identification purposes. + - **Type**: (Required) Select **Dynamic** to create a dynamic host catalog. + - **Provider**: (Required) Select **GCP** to create a dynamic host catalog for your GCP resources. + + The required fields for creating a dynamic host catalog depend on the type of authentication you configure. + + + + + - **Project ID**: (Required) The project ID of any instances that you want to add to the host catalog. + - **Zone**: (Required) The GCP zone of the instances that you want to add to the host catalog. + - **Client Email**: The unique email address that is used to identify the service account. + It is required when you authenticate using the service account. + - **Target Service Account ID**: Skip this field when you configure authentication using the service account. + It is only used when you authenticate using service account impersonation. + - **Private Key ID**: The unique identifier of the private key. + It is required when you authenticate using the service account. + - **Private Key**: The private key used to obtain an OAuth 2.0 access token. + The key must be PEM encoded. + It is required when you authenticate using the service account. + + If you downloaded the private key from GCP, it may contain extra `/n` characters that cause an error. + You can use `jq` to remove the extra `/n` characters. + + + + + + - **Project ID**: (Required) The project ID of any instances that you want to add to the host catalog. + - **Zone**: (Required) The GCP zone of the instances that you want to add to the host catalog. + - **Client Email**: The unique email address that is used to identify the base service account. + It is required when you authenticate using service account impersonation. + - **Target Service Account ID**: The unique identifier for the service account that is impersonated. + It is required when you authenticate using service account impersonation. + - **Private Key ID**: The unique identifier of the private key for the base service account. + It is required when you authenticate using service account impersonation. + - **Private Key**: The private key used to obtain an OAuth 2.0 access token. + The key must be PEM encoded. + It is required when you authenticate using service account impersonation. + + If you downloaded the private key from GCP, it may contain extra `/n` characters that cause an error. + You can use `jq` to remove the extra `/n` characters. + + + + + + - **Project ID**: (Required) The project ID of any instances that you want to add to the host catalog. + - **Zone**: (Required) The GCP zone of the instances that you want to add to the host catalog. + - **Client Email**: (Optional) The unique email address that is used to identify the base service account. + - **Target Service Account ID**: Skip this field when you configure authentication using the ADC. + It is only used when you authenticate using service account impersonation. + - **Private Key ID**: (Optional) The unique identifier of the private key for the base service account. + - **Private Key**: (Optional) The private key used to obtain an OAuth 2.0 access token. + The key must be PEM encoded. + + If you downloaded the private key from GCP, it may contain extra `/n` characters that cause an error. + You can use `jq` to remove the extra `/n` characters. + + + + + - **Worker Filter**: (Optional) An optional filter to route requests to a designated worker. + - **Disable credential rotation**: (Optional) When enabled, Boundary does not rotate the credentials with GCP automatically. +1. Select **Save**. + + + + + +The required fields for creating a dynamic host catalog depend on the type of authentication you configure. + + + + +1. Log in to Boundary. +1. Use the following command to create a dynamic host catalog for GCP: + + ```shell-session + $ boundary host-catalogs create plugin \ + -scope-id $BOUNDARY_PROJECT_ID \ + -plugin-name gcp \ + -attr disable_credential_rotation=true \ + -attr zone=us-central1-a \ + -attr project_id=env://GCP_PROJECT_ID \ + -attr client_email=env://CLIENT_EMAIL \ + -secret private_key_id=env://PRIVATE_KEY_ID \ + -secret private_key=file://$PRIVATE_KEY_FILE_PATH + ``` + + The `scope-id` and `plugin-name` fields are required when you create a dynamic host catalog. + + The fields following the `attr` and `secret` flags are specific to GCP and are used by Boundary for authentication: + + - `disable_credential_rotation`: (Optional) When set to `true`, Boundary does not rotate the credentials automatically. + - `zone`: (Required) The GCP zone of the instances that you want to add to the host catalog. + - `project_id`: (Required) The project ID of any instances that you want to add to the host catalog. + - `client_email`: The unique email address that is used to identify the service account. + It is required when you authenticate using the service account. + - `private_key_id`: The unique identifier of the private key. + It is required when you authenticate using the service account. + - `private_key`: The private key used to obtain an OAuth 2.0 access token. + The key must be PEM encoded. + It is required when you authenticate using the service account. + + If you downloaded the private key from GCP, it may contain extra `/n` characters that cause an error. + You can use `jq` to remove the extra `/n` characters. + + Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. + + + + + +1. Log in to Boundary. +1. Use the following command to create a dynamic host catalog for GCP: + + ```shell-session + $ boundary host-catalogs create plugin \ + -scope-id $BOUNDARY_PROJECT_ID \ + -plugin-name gcp \ + -attr disable_credential_rotation=true \ + -attr zone=us-central1-a \ + -attr project_id=env://GCP_PROJECT_ID \ + -attr client_email=env://BASE_SERVICE_ACCOUNT_EMAIL \ + -attr target_service_account_id=env://TARGET_SERVICE_ACCOUNT_EMAIL \ + -secret private_key_id=env://BASE_SERVICE_ACCOUNT_PRIVATE_KEY_ID \ + -secret private_key=file://$BASE_SERVICE_ACCOUNT_PRIVATE_KEY_FILE_PATH + ``` + + The `scope-id` and `plugin-name` fields are required when you create a dynamic host catalog. + + The fields following the `attr` and `secret` flags are specific to GCP and are required by Boundary for authentication: + + - `disable_credential_rotation`: (Optional) When set to `true`, Boundary does not rotate the credentials with GCP automatically. + - `zone`: (Required) The deployment area within a region. + All host sets in this catalog are configured for this zone. + - `project_id`: (Required) The project ID associated with the service account. + - `client_email`: The email address used to uniquely identify the base service account. + It is required when you authenticate using service account impersonation. + - `target_service_account_id`: The email address of the service account to impersonate. + It is required when you authenticate using service account impersonation. + - `private_key_id`: The ID of the private key for the base service account to use with this host catalog. + It is required when you authenticate using service account impersonation. + - `private_key`: The private key for the base service account to use with this host catalog. + It is required when you authenticate using service account impersonation. + + If you downloaded the private key from GCP, it may contain extra `/n` characters that cause an error. + You can use `jq` to remove the extra `/n` characters. + + Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. + + + + + +1. Log in to Boundary. +1. Use the following command to create a dynamic host catalog for GCP: + + ```shell-session + $ boundary host-catalogs create plugin \ + -scope-id $BOUNDARY_PROJECT_ID \ + -plugin-name gcp \ + -attr disable_credential_rotation=true \ + -attr zone=us-central1-a \ + -attr project_id=env://GCP_PROJECT_ID + ``` + + The `scope-id` and `plugin-name` fields are required when you create a dynamic host catalog. + + The fields following the `attr` flag are specific to GCP and are required by Boundary for authentication: + + - `disable_credential_rotation`: (Optional) When set to `true`, Boundary does not rotate the credentials with GCP automatically. + - `zone`: (Required) The deployment area within a region. + All host sets in this catalog are configured for this zone. + - `project_id`: (Required) The project ID associated with the service account. + + Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. + + + + - + + + +The required fields for creating a dynamic host catalog depend on the type of authentication you configure. + + + + +Refer to the [Boundary Terraform provider documentation](https://registry.terraform.io/providers/hashicorp/boundary/latest/docs) to learn about the requirements for the following example attributes. + +Apply the following Terraform policy: ```hcl resource "boundary_host_catalog_plugin" "gcp_host_catalog" { @@ -45,51 +279,45 @@ $ boundary host-catalogs create plugin \ scope_id = boundary_scope.project.id plugin_name = "gcp" + # recommended to pass in aws secrets using a file() or using environment variables attributes_json = jsonencode({ "zone" = "us-central1-a ", - "project_id" = var.gcp_project_id, - "client_email" = var.gcp_client_email, + "project_id" = "GCP_PROJECT_ID_VALUE", + "client_email" = "GCP_CLIENT_EMAIL_VALUE", "disable_credential_rotation" = true }) secrets_json = jsonencode({ - "private_key_id" = var.private_key_id, - "private_key" = var.private_key}) + "private_key_id" = "GCP_PRIVATE_KEY_ID_VALUE", + "private_key" = "GCP_PRIVATE_KEY_VALUE"}) } ``` - - + The `scope_id` and `plugin_name` fields are required when you create a dynamic host catalog. -### Authentication with service account impersonation -Service account impersonation allows Boundary to authenticate with GCP using a service account that impersonates another service account. -Impersonation is useful when you want to restrict the permissions of the service account Boundary uses. Two service accounts are required: + The fields following `attributes_json` and `secrets_json` are specific to GCP and are used by Boundary for authentication: -- `Base service account`: The service account Boundary uses to authenticate with GCP. The service account should have the following roles: - - `roles/iam.serviceAccountTokenCreator` (Required) - To create a token for the target service account. - - `roles/iam.serviceAccountKeyAdmin` (Optional) - To rotate the service account key if `disable_credential_rotation` is set to `false`. + - `zone`: (Required) The GCP zone of the instances that you want to add to the host catalog. + - `project_id`: (Required) The project ID of any instances that you want to add to the host catalog. + - `client_email`: The unique email address that is used to identify the service account. + It is required when you authenticate using the service account. + - `disable_credential_rotation`: (Optional) When set to `true`, Boundary does not rotate the credentials automatically. + - `private_key_id`: The unique identifier of the private key. + It is required when you authenticate using the service account. + - `private_key`: The private key used to obtain an OAuth 2.0 access token. + The key must be PEM encoded. + It is required when you authenticate using the service account. -- `Target service account`: The service account to impersonate. The service account should have the following roles: - - `roles/compute.viewer` (Required): To list Compute Engine VM instance in the project. + If you downloaded the private key from GCP, it may contain extra `/n` characters that cause an error. + You can use `jq` to remove the extra `/n` characters. -Pass the following fields to Boundary for authentication: +Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. - - + -```shell-session -$ boundary host-catalogs create plugin \ - -scope-id $BOUNDARY_PROJECT_ID \ - -plugin-name gcp \ - -attr disable_credential_rotation=true \ - -attr zone=us-central1-a \ - -attr project_id=env://GCP_PROJECT_ID \ - -attr client_email=env://BASE_SERVICE_ACCOUNT_EMAIL \ - -attr target_service_account_id=env://TARGET_SERVICE_ACCOUNT_EMAIL \ - -secret private_key_id=env://BASE_SERVICE_ACCOUNT_PRIVATE_KEY_ID \ - -secret private_key=file://$BASE_SERVICE_ACCOUNT_PRIVATE_KEY_FILE_PATH -``` + - - +Refer to the [Boundary Terraform provider documentation](https://registry.terraform.io/providers/hashicorp/boundary/latest/docs) to learn about the requirements for the following example attributes. + +Apply the following Terraform policy: ```hcl resource "boundary_host_catalog_plugin" "gcp_host_catalog" { @@ -98,41 +326,48 @@ $ boundary host-catalogs create plugin \ scope_id = boundary_scope.project.id plugin_name = "gcp" + # recommended to pass in aws secrets using a file() or using environment variables attributes_json = jsonencode({ "zone" = "us-central1-a ", - "project_id" = var.gcp_project_id, - "client_email" = var.gcp_base_service_account_email, - "target_service_account_id" = var.gcp_target_service_account_email, + "project_id" = "GCP_PROJECT_ID_VALUE", + "client_email" = "GCP_BASE_SERVICE_ACCOUNT_EMAIL_VALUE", + "target_service_account_id" = "GCP_TARGET_SERVICE_ACCOUNT_EMAIL_VALUE", "disable_credential_rotation" = true }) secrets_json = jsonencode({ - "private_key_id" = var.base_service_account_private_key_id, - "private_key" = var.base_service_account_private_key}) + "private_key_id" = "BASE_SERVICE_ACCOUNT_PRIVATE_KEY_ID_VALUE", + "private_key" = "BASE_SERVICE_ACCOUNT_PRIVATE_KEY_VALUE"}) } ``` - - - -### Authentication with Application Default Credentials (ADC) -If you run Boundary on a GCP VM instance, you can use Application Default Credentials (ADC) to authenticate with GCP. -Boundary uses the service account associated with the VM instance to authenticate with GCP. +The `scope_id` and `plugin_name` fields are required when you create a dynamic host catalog. -Pass the following fields to Boundary for authentication: +The fields following `attributes_json` and `secrets_json` are specific to GCP and are required by Boundary for authentication: - - +- `zone`: (Required) The deployment area within a region. All host sets in this + catalog are configured for this zone. +- `project_id`: (Required) The project ID associated with the service account. +- `client_email`: The email address used to uniquely identify the base service account. +It is required when you authenticate using service account impersonation. +- `target_service_account_id`: The email address of the service account to impersonate. +It is required when you authenticate using service account impersonation. +- `disable_credential_rotation`: (Optional) When set to `true`, Boundary does not rotate the credentials with GCP automatically. +- `private_key_id`: The ID of the private key for the base service account to use with this host catalog. +It is required when you authenticate using service account impersonation. +- `private_key`: The private key for the base service account to use with this host catalog. +It is required when you authenticate using service account impersonation. + + If you downloaded the private key from GCP, it may contain extra `/n` characters that cause an error. + You can use `jq` to remove the extra `/n` characters. -```shell-session -$ boundary host-catalogs create plugin \ - -scope-id $BOUNDARY_PROJECT_ID \ - -plugin-name gcp \ - -attr disable_credential_rotation=true \ - -attr zone=us-central1-a \ - -attr project_id=env://GCP_PROJECT_ID -``` +Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. - + + + +Refer to the [Boundary Terraform provider documentation](https://registry.terraform.io/providers/hashicorp/boundary/latest/docs) to learn about the requirements for the following example attributes. + +Apply the following Terraform policy: ```hcl resource "boundary_host_catalog_plugin" "gcp_host_catalog" { @@ -141,85 +376,119 @@ $ boundary host-catalogs create plugin \ scope_id = boundary_scope.project.id plugin_name = "gcp" + # recommended to pass in aws secrets using a file() or using environment variables attributes_json = jsonencode({ "zone" = "us-central1-a ", - "project_id" = var.gcp_project_id, + "project_id" = "GCP_PROJECT_ID_VALUE", "disable_credential_rotation" = true }) } ``` - - - -The `scope-id` and `plugin-name` fields are required when you create a - dynamic host catalog. +The `scope_id` and `plugin_name` fields are required when you create a dynamic host catalog. -The fields following the `attr` and `secret` flags are specific to GCP and are required by - Boundary for authentication. +The fields following `attributes_json` are specific to GCP and are required by Boundary for authentication: -- `zone` (Required): The deployment area within a region. All host sets in this - catalog are configured for this zone. -- `project_id` (Required): The project ID associated with the service account. -- `disable_credential_rotation` (Optional): When set to `true`, Boundary does not rotate the credentials with GCP automatically. -- `client_email` (Optional): Boundary uses this email address associated with the service account. - The email address used to uniquely identify the service account. -- `target_service_account_id` (Optional): Boundary uses this email address of the service account to impersonate. - This is used for authentication with service account impersonation. -- `private_key_id` (Optional): The ID of the private key for the service account to use with this host catalog. -- `private_key` (Optional): The private key for the service account to use with this host catalog. +- `zone`: (Required) The GCP zone of the instances that you want to add to the host catalog. +- `project_id`: (Required) The project ID of any instances that you want to add to the host catalog. +- `disable_credential_rotation`: (Optional) When set to `true`, Boundary does not rotate the credentials with GCP automatically. Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. + + + + + + ## Create a host set to connect with GCP -[Host sets](/boundary/docs/concepts/domain-model/host-sets) specify which GCP - filters Boundary should use to identify which discovered hosts that should be added as members. -Create a host set using the following command: +[Host sets](/boundary/docs/concepts/domain-model/host-sets) specify which GCP filters Boundary should use to identify which discovered hosts that should be added as members. + +Complete the following steps to create a host set: + + +1. Log in to Boundary. +1. Select the org, and then select the project you want to create a host set for. +1. Select **Host Catalogs**. +1. Select the dynamic host catalog to which you want to add a host set. +1. Click the **Host Sets** tab, and then click **New**. +1. Complete the following fields: + + - **Name**: (Optional) An optional name for identification purposes. + If you enter a name, it must be unique. + - **Description**: (Optional) An optional description of the host catalog for identification purposes. +1. Click **Save**. + + + -```shell-session -$ boundary host-sets create plugin \ - -host-catalog-id $BOUNDARY_HOST_CATALOG_ID \ - -attr filters=labels.env=prod \ - -attr filters=labels.app=web -``` +1. Log in to Boundary. +1. Use the following command to create a host set: + + ```shell-session + $ boundary host-sets create plugin \ + -host-catalog-id $BOUNDARY_HOST_CATALOG_ID \ + -attr filters=labels.env:prod \ + -attr filters=labels.app:web + ``` + + The `host-catalog-id` value is a required field that specifies in which host catalog to create this host set. + + Like with the host catalog, the fields passed in after the `attr` flag are specific to GCP. + + The `filters` field contains string filters in the format key=val. + The key corresponds to a filter option. + For a list of filter options, refer to the [GCP API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instances/list#filter). + When you apply multiple filters, the plugin applies a logical `AND` operation to combine the filters. + + If there is no explicit instance status filter, the default status is set to `status="RUNNING"`. + The default status ensures that Boundary only filters running instances, saving time when processing results. + + We recommend using labels as filters because they are more flexible and can filter on multiple values as in the following examples: + + - `-attr filters=labels.env:dev` + - `-attr filters="labels.env:prod AND labels.app:web"` + + For more fields that you can use when creating host sets, refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-sets). +Refer to the [Boundary Terraform provider documentation](https://registry.terraform.io/providers/hashicorp/boundary/latest/docs) to learn about the requirements for the following example attributes. + +Apply the following Terraform policy: + ```hcl resource "boundary_host_set_plugin" "gcp_host_set" { name = "GCP Host Set" description = "GCP Host Set" - host_catalog_id = boundary_scope.gcp_host_catalog.id + host_catalog_id = boundary_host_catalog_plugin.gcp_host_catalog.id attributes_json = jsonencode({ - "filters" = ["labels.env=prod", "labels.app=web"] }) + "filters" = ["labels.env:prod", "labels.app:web"] }) } ``` - - +The `host_catalog_id` value is a required field that specifies in which host catalog to create this host set. -The `host-catalog-id` value is a required field that specifies in which host catalog to - create this host set. +Like with the host catalog, the fields passed in after `attributes_json` flag are specific to GCP. -Like with the host catalog, the fields passed in after the `attr` flag are - specific to GCP. +The `filters` field contains string filters in the format key=val1. +The key corresponds to a filter option. +For a list of filter options, refer to the [GCP API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instances/list#filter). +When you apply multiple filters, the plugin applies a logical `AND` operation to combine the filters. -The `filters` field contains string filters in the format key=val1. The key corresponds to - a filter option. For a list of filter options, refer to the - [GCP API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instances/list#filter). - When you apply multiple filters, the plugin applies a logical `AND` operation to combine the filters. +If there is no explicit instance status filter, the default status is set to `status="RUNNING"`. +The default status ensures that Boundary only filters running instances, saving time when processing results. + +We recommend using labels as filters because they are more flexible and can filter on multiple values as in the following examples: - If there is no explicit instance status filter, the default status is set to `status="RUNNING"`. - This ensures that Boundary only filters running instances, saving time when processing results. + - `-attr filters=labels.env:dev` + - `-attr filters="labels.env:prod AND labels.app:web"` - We recommend using labels as filters because they are more flexible and can filter on multiple values - as in the following examples: - - `-attr filters=labels.env=dev` - - `-attr filters=labels.env=prod AND labels.app=web` +For more fields that you can use when creating host sets, refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-sets). -For more fields that you can use when creating host sets, refer to - [the domain model documentation](/boundary/docs/concepts/domain-model/host-sets). + + diff --git a/website/content/docs/concepts/host-discovery/index.mdx b/website/content/docs/concepts/host-discovery/index.mdx index 0b085ad659..a1a57dbf16 100644 --- a/website/content/docs/concepts/host-discovery/index.mdx +++ b/website/content/docs/concepts/host-discovery/index.mdx @@ -54,12 +54,12 @@ external resources should be ingested into the catalog by with an attributes filter. These filters specify which discovered hosts should be members of the host set. -Boundary currently supports dynamic host catalog for AWS and -Azure and we will continue to grow this ecosystem to support additional providers. +Boundary currently supports dynamic host catalog for AWS, Azure, and GCP. +We will continue to grow this ecosystem to support additional providers. ## Next steps To get started with dynamic host catalogs, refer to the following topics: - + - [AWS dynamic host catalogs](/boundary/docs/concepts/host-discovery/aws) - [Azure dynamic host catalogs](/boundary/docs/concepts/host-discovery/azure) - [GCP dynamic host catalogs](/boundary/docs/concepts/host-discovery/gcp) From a0b0a4def9c6396bd8e08ad8bcec3c315bde875e Mon Sep 17 00:00:00 2001 From: vanphan24 <89482663+vanphan24@users.noreply.github.com> Date: Thu, 30 Jan 2025 13:52:28 -0800 Subject: [PATCH 07/70] Update index.mdx, added note about credentials command (#5479) Added note about `Boundary credentials` command not supporting vault cred store --- website/content/docs/commands/credentials/index.mdx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/website/content/docs/commands/credentials/index.mdx b/website/content/docs/commands/credentials/index.mdx index ad553b2d68..5b198e1596 100644 --- a/website/content/docs/commands/credentials/index.mdx +++ b/website/content/docs/commands/credentials/index.mdx @@ -9,7 +9,13 @@ description: >- Command: `boundary credentials` -The `credentials` command lets you create and manage Boundary credential resources. +The `credentials` command lets you create and manage Boundary credential resources in Boundary's static credential store. + + + +The `credentials` command does not support viewing, creating, or managing credentials that reside in the Vault credential store. + + A credential is a data structure containing one or more secrets that bind an identity to a set of permissions or capabilities on a host for a session. From 26608ede7084c756a9fa7aed8fa58c1810ec4d5b Mon Sep 17 00:00:00 2001 From: Michael Li Date: Fri, 31 Jan 2025 09:28:38 -0500 Subject: [PATCH 08/70] chore: Add note for modifying /etc/hosts (#5499) --- enos/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/enos/README.md b/enos/README.md index 476e651ddf..7511d97695 100644 --- a/enos/README.md +++ b/enos/README.md @@ -57,6 +57,16 @@ See [enos.vars.hcl](./enos.vars.hcl) for complete descriptions of each variable. You can either modify `enos.vars.hcl` directly or create your own copy at `enos-local.vars.hcl` which gets ignored by git. +### System File Modifications + +For docker-based scenarios, you will need to modify `/etc/hosts` to include the +following lines +``` +127.0.0.1 localhost boundary +127.0.0.1 localhost worker +127.0.0.1 localhost vault +``` + ## Executing Scenarios From the `enos` directory: From 43338db7edd5b3108c6ff24a2ef72e71fd4f1ff5 Mon Sep 17 00:00:00 2001 From: Lauren Date: Mon, 3 Feb 2025 15:01:28 -0500 Subject: [PATCH 09/70] bump ui commit 835b302c1 (#5508) --- internal/ui/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/ui/VERSION b/internal/ui/VERSION index 1ecaa21395..eb0b8b12ba 100644 --- a/internal/ui/VERSION +++ b/internal/ui/VERSION @@ -1,4 +1,4 @@ -ae1e6d27489f3259e6622b9fdb5781a365eb5473 +835b302c19bb6b5d32e2c93f0de619680d674f25 # This file determines the version of the UI to embed in the boundary binary. # Update this file by running 'make update-ui-version' from the root of this repo. # Set UI_COMMITISH when running the above target to update to a specific version. From 5bd142ddb4aade582f9c7fad5d5c8b84c4b12a16 Mon Sep 17 00:00:00 2001 From: Damian Debkowski Date: Tue, 4 Feb 2025 13:47:32 -0800 Subject: [PATCH 10/70] fix(worker): set session.CloseCallTimeout to non-zero value (#5510) --- internal/daemon/worker/worker.go | 2 +- internal/daemon/worker/worker_test.go | 93 +++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/internal/daemon/worker/worker.go b/internal/daemon/worker/worker.go index b439524b48..f792c24234 100644 --- a/internal/daemon/worker/worker.go +++ b/internal/daemon/worker/worker.go @@ -485,7 +485,7 @@ func (w *Worker) Reload(ctx context.Context, newConf *config.Config) { w.parseAndStoreTags(newConf.Worker.Tags) - switch newConf.Worker.SuccessfulControllerRPCGracePeriod { + switch newConf.Worker.SuccessfulControllerRPCGracePeriodDuration { case 0: w.successfulRoutingInfoGracePeriod.Store(int64(server.DefaultLiveness)) w.successfulSessionInfoGracePeriod.Store(int64(server.DefaultLiveness)) diff --git a/internal/daemon/worker/worker_test.go b/internal/daemon/worker/worker_test.go index 5607c8f37f..0e8cc6edcc 100644 --- a/internal/daemon/worker/worker_test.go +++ b/internal/daemon/worker/worker_test.go @@ -15,6 +15,7 @@ import ( "github.com/hashicorp/boundary/internal/cmd/base" "github.com/hashicorp/boundary/internal/cmd/config" + "github.com/hashicorp/boundary/internal/daemon/worker/common" "github.com/hashicorp/boundary/internal/daemon/worker/session" "github.com/hashicorp/boundary/internal/db" "github.com/hashicorp/boundary/internal/event" @@ -223,6 +224,98 @@ func TestWorkerNew(t *testing.T) { } } +func TestWorkerReload(t *testing.T) { + t.Run("default config is the same as the reload config", func(t *testing.T) { + require, assert := require.New(t), assert.New(t) + cfg := &Config{ + Server: &base.Server{ + Logger: hclog.Default(), + Eventer: &event.Eventer{}, + Listeners: []*base.ServerListener{ + {Config: &listenerutil.ListenerConfig{Purpose: []string{"api"}}}, + {Config: &listenerutil.ListenerConfig{Purpose: []string{"proxy"}}}, + {Config: &listenerutil.ListenerConfig{Purpose: []string{"cluster"}}}, + }, + }, + RawConfig: &config.Config{ + SharedConfig: &configutil.SharedConfig{DisableMlock: true}, + Worker: &config.Worker{}, + }, + } + w, err := New(context.Background(), cfg) + require.NoError(err) + + assert.Equal(int64(server.DefaultLiveness), w.successfulRoutingInfoGracePeriod.Load()) + assert.Equal(int64(server.DefaultLiveness), w.successfulSessionInfoGracePeriod.Load()) + assert.Equal(int64(server.DefaultLiveness), session.CloseCallTimeout.Load()) + + assert.Equal(int64(common.DefaultRoutingInfoTimeout), w.routingInfoCallTimeoutDuration.Load()) + assert.Equal(int64(common.DefaultStatisticsTimeout), w.statisticsCallTimeoutDuration.Load()) + assert.Equal(int64(common.DefaultSessionInfoTimeout), w.sessionInfoCallTimeoutDuration.Load()) + + assert.Equal(int64(server.DefaultLiveness), w.getDownstreamWorkersTimeoutDuration.Load()) + + w.Reload(context.Background(), cfg.RawConfig) + + assert.Equal(int64(server.DefaultLiveness), w.successfulRoutingInfoGracePeriod.Load()) + assert.Equal(int64(server.DefaultLiveness), w.successfulSessionInfoGracePeriod.Load()) + assert.Equal(int64(server.DefaultLiveness), session.CloseCallTimeout.Load()) + + assert.Equal(int64(common.DefaultRoutingInfoTimeout), w.routingInfoCallTimeoutDuration.Load()) + assert.Equal(int64(common.DefaultStatisticsTimeout), w.statisticsCallTimeoutDuration.Load()) + assert.Equal(int64(common.DefaultSessionInfoTimeout), w.sessionInfoCallTimeoutDuration.Load()) + + assert.Equal(int64(server.DefaultLiveness), w.getDownstreamWorkersTimeoutDuration.Load()) + }) + + t.Run("new config is the same as the reload config", func(t *testing.T) { + require, assert := require.New(t), assert.New(t) + cfg := &Config{ + Server: &base.Server{ + Logger: hclog.Default(), + Eventer: &event.Eventer{}, + Listeners: []*base.ServerListener{ + {Config: &listenerutil.ListenerConfig{Purpose: []string{"api"}}}, + {Config: &listenerutil.ListenerConfig{Purpose: []string{"proxy"}}}, + {Config: &listenerutil.ListenerConfig{Purpose: []string{"cluster"}}}, + }, + }, + RawConfig: &config.Config{ + SharedConfig: &configutil.SharedConfig{DisableMlock: true}, + Worker: &config.Worker{ + SuccessfulControllerRPCGracePeriodDuration: 5 * time.Second, + ControllerRPCCallTimeoutDuration: 10 * time.Second, + GetDownstreamWorkersTimeoutDuration: 20 * time.Second, + }, + }, + } + w, err := New(context.Background(), cfg) + require.NoError(err) + + assert.Equal(int64(5*time.Second), w.successfulRoutingInfoGracePeriod.Load()) + assert.Equal(int64(5*time.Second), w.successfulSessionInfoGracePeriod.Load()) + assert.Equal(w.successfulRoutingInfoGracePeriod.Load(), session.CloseCallTimeout.Load()) + + assert.Equal(int64(10*time.Second), w.routingInfoCallTimeoutDuration.Load()) + assert.Equal(int64(10*time.Second), w.statisticsCallTimeoutDuration.Load()) + assert.Equal(int64(10*time.Second), w.sessionInfoCallTimeoutDuration.Load()) + + assert.Equal(int64(20*time.Second), w.getDownstreamWorkersTimeoutDuration.Load()) + + w.Reload(context.Background(), cfg.RawConfig) + + assert.Equal(int64(5*time.Second), w.successfulRoutingInfoGracePeriod.Load()) + assert.Equal(int64(5*time.Second), w.successfulSessionInfoGracePeriod.Load()) + assert.Equal(w.successfulRoutingInfoGracePeriod.Load(), session.CloseCallTimeout.Load()) + + assert.Equal(int64(10*time.Second), w.routingInfoCallTimeoutDuration.Load()) + assert.Equal(int64(10*time.Second), w.statisticsCallTimeoutDuration.Load()) + assert.Equal(int64(10*time.Second), w.sessionInfoCallTimeoutDuration.Load()) + + assert.Equal(int64(20*time.Second), w.getDownstreamWorkersTimeoutDuration.Load()) + }) +} + func TestSetupWorkerAuthStorage(t *testing.T) { ctx := context.Background() From fc5aa31add174ca5274953b1541a19f373192871 Mon Sep 17 00:00:00 2001 From: Cameron Perera Date: Tue, 4 Feb 2025 16:42:19 -0600 Subject: [PATCH 11/70] bump ui commit to c9a74f2 (#5512) --- internal/ui/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/ui/VERSION b/internal/ui/VERSION index eb0b8b12ba..c9f09a3806 100644 --- a/internal/ui/VERSION +++ b/internal/ui/VERSION @@ -1,4 +1,4 @@ -835b302c19bb6b5d32e2c93f0de619680d674f25 +c9a74f28009c4caa510bf48740d4b8997d6384a8 # This file determines the version of the UI to embed in the boundary binary. # Update this file by running 'make update-ui-version' from the root of this repo. # Set UI_COMMITISH when running the above target to update to a specific version. From 35943cb408b6eca93a51c02a14a136cbee22cfdf Mon Sep 17 00:00:00 2001 From: Johan Brandhorst-Satzkorn Date: Wed, 5 Feb 2025 09:14:38 -0800 Subject: [PATCH 12/70] docs: add note about MacOS 15.1, 15.2 incompatibility (#5515) --- website/content/docs/api-clients/client-agent.mdx | 5 +++++ website/content/docs/concepts/transparent-sessions.mdx | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/website/content/docs/api-clients/client-agent.mdx b/website/content/docs/api-clients/client-agent.mdx index 60f51a9ded..e8556fab31 100644 --- a/website/content/docs/api-clients/client-agent.mdx +++ b/website/content/docs/api-clients/client-agent.mdx @@ -516,6 +516,11 @@ $ boundary client-agent pause Follow the troubleshooting steps to understand why the Client Agent is not able to reach the controller. +#### sendmsg: broken pipe + +On MacOS versions 15.1 and 15.2, the firewall may incorrectly block the Client Agent from sending DNS responses. To resolve this issue, +upgrade to MacOS version 15.3 or later. + #### WARNING! Remote host indentification has changed! It is possible that someone is doing something nasty! This error arises when you use an alias to connect to an SSH target after the first successful connection using that alias. The issue occurs because Boundary workers generate a new host key on every new SSH connection. You can safely ignore the warning using the `StrictHostKeyChecking=no` command line option: diff --git a/website/content/docs/concepts/transparent-sessions.mdx b/website/content/docs/concepts/transparent-sessions.mdx index f774fd3b1d..7c8a827965 100644 --- a/website/content/docs/concepts/transparent-sessions.mdx +++ b/website/content/docs/concepts/transparent-sessions.mdx @@ -38,6 +38,7 @@ Refer to the following table for known issues that may affect the public beta: | Single-word aliases do not work on Windows | If you create an alias consisting of a single word without a dot (`.`), the alias will not work on Windows. | | Windows installer does not support partial installations | The Windows installer fails to start the Client Agent if the Desktop client is not installed at the same time. | | Alias connection failures inside containers/VMs | Using transparent sessions rely on network access to the local network of the computer the Client Agent is running on. Network enclaves such as those created by Docker containers and VMs cannot reach this network. | +| DNS lookup is broken on MacOS 15.1 and 15.2 | MacOS 15.1 and 15.2 may incorrectly block DNS lookups for the Client Agent. This issue is resolved in MacOS 15.3 and later. | ## More information @@ -45,4 +46,4 @@ Refer to the following topics for more information: - [Aliases](/boundary/docs/concepts/aliases) - [Boundary Client Agent](/boundary/docs/api-clients/client-agent) -- [Configure transparent sessions](/boundary/docs/configuration/target-aliases/transparent-sessions) \ No newline at end of file +- [Configure transparent sessions](/boundary/docs/configuration/target-aliases/transparent-sessions) From 2d802fe3f55189b899aa6fcc530de8d97d7a211b Mon Sep 17 00:00:00 2001 From: Robin Beck Date: Wed, 5 Feb 2025 14:03:12 -0700 Subject: [PATCH 13/70] Docs: add AWS DHC policy examples (#5514) * adds IAM policy examples * adds missing worker-filter command option * Apply suggestions from code review Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> * adds cross-account access note, style fixes * Update website/content/docs/concepts/host-discovery/aws.mdx Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> --------- Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> --- .../docs/commands/host-catalogs/create.mdx | 1 + .../docs/concepts/host-discovery/aws.mdx | 147 ++++++++++++++++-- 2 files changed, 134 insertions(+), 14 deletions(-) diff --git a/website/content/docs/commands/host-catalogs/create.mdx b/website/content/docs/commands/host-catalogs/create.mdx index 05a61b5eb1..2d46414aff 100644 --- a/website/content/docs/commands/host-catalogs/create.mdx +++ b/website/content/docs/commands/host-catalogs/create.mdx @@ -71,6 +71,7 @@ $ boundary host-catalogs create plugin [options] [args] - `-scope-id=` - The scope in which you want to create the host catalog. The default scope is `global`. You can also specify the scope using the **BOUNDARY_SCOPE_ID** environment variable. +- `-worker-filter=` A boolean expression to filter which workers can handle dynamic host catalog commands for this host catalog. #### Attribute options diff --git a/website/content/docs/concepts/host-discovery/aws.mdx b/website/content/docs/concepts/host-discovery/aws.mdx index 62eb7f8f86..f475e0d81d 100644 --- a/website/content/docs/concepts/host-discovery/aws.mdx +++ b/website/content/docs/concepts/host-discovery/aws.mdx @@ -13,6 +13,121 @@ a dynamic host catalog to integrate with AWS, you create a host catalog of the ` and set the `plugin-name` value to `aws`. You must also provide the specific fields needed for Boundary to authenticate with AWS. +Boundary supports two methods of authenticating to AWS: + +1. **Static credentials** using an IAM user and its access key +1. **Dynamic credentials** using credentials generated by `AssumeRole` + +HashiCorp recommends using dynamic credentials when possible. Select a credential type to continue: + + + + +### Required IAM Privileges + +Boundary needs the following IAM privileges, at the very least, to be attached to a configured IAM user. + +Configure `DescribeInstances` to `*`. `DescribeInstances` cannot be scoped to a resource ARN. + +Example policy: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Action": [ + "ec2:DescribeInstances" + ], + "Effect": "Allow", + "Resource": "*" + } + ] +} +``` + +To allow static credential rotation, add the `iam:GetUser`, `iam:CreateAccessKey`, and `iam:DeleteAccessKey` policies: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Action": [ + "iam:DeleteAccessKey", + "iam:GetUser", + "iam:CreateAccessKey" + ], + "Effect": "Allow", + "Resource": "arn:aws:iam::123456789012:user/JohnDoe" + } + ] +} +``` + + + + + + + [Cross-account access](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) for AWS IAM roles is not currently supported. + + + +This feature requires a self-managed Boundary [worker](/boundary/docs/install-boundary/configure-workers). + +To set up a dynamic host catalog using an AWS role, a self-managed worker must assume the role. You must assign the role to the self-managed worker AWS instance, and then supply a worker filter that matches the AWS worker when you set up the dynamic host catalog. + +Perform the following steps to set up a host catalog using [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html): + +1. Deploy a self-managed worker in your AWS account. The worker must be in the same VPC as the hosts you want to access using the dynamic host catalog. Consider [adding worker tags](/boundary/docs/concepts/filtering/worker-tags) to make it easier to route traffic through it using a worker filter later on. + +1. Create an IAM role with the `AmazonEC2ReadOnlyAccess` policy attached. This policy should match the following: + + ```json + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "ec2:Describe*", + "ec2:GetSecurityGroupsForVpc" + ], + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": "elasticloadbalancing:Describe*", + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": [ + "cloudwatch:ListMetrics", + "cloudwatch:GetMetricStatistics", + "cloudwatch:Describe*" + ], + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": "autoscaling:Describe*", + "Resource": "*" + } + ] + } + ``` + + Refer to the AWS [Create a role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) documentation to learn more. + +1. Attach the role to the IAM instance configured as your self-managed worker. Follow the AWS [Attach an IAM role to an instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/attach-iam-role.html) to learn more. + +1. Continue to the next step to set up the dynamic host catalog. You must add a worker tag when setting up the host catalog to route traffic through the worker that is assuming the role. + + + + Complete the following steps to create a dynamic host catalog for AWS: @@ -34,21 +149,21 @@ Complete the following steps to create a dynamic host catalog for AWS: - **Use Assume Role (Dynamic Credentials)**: Authenticates to the host catalog using credentials that AWS `AssumeRole` generates. - + - **Access Key ID**: (Required) The access key ID for the IAM user to use with this host catalog. - **Secret Access Key**: (Required) The secret access key for the IAM user to use with this host catalog. - **Worker Filter**: (Optional) An optional filter to route requests to a designated worker. - + - **Role ARN**: (Required) - The AWS role ARN to use for `AssumeRole` authentication. If you provide a `role_arn` value, you must also set `disable_credential_rotation` to `true`. - **Role external ID**: (Optional) - The external ID for the `AssumeRole` provider. - **Role session name**: (Optional) - The session name for the `AssumeRole` provider. - **Role tags**: (Optional) - The key-value pair tags for the `AssumeRole` provider. - - **Worker Filter**: (Optional) - An optional filter to route requests to a designated worker. + - **Worker Filter**: (Optional) - An optional filter to route requests to a designated worker. The filter should match the worker assigned the IAM role. - **Disable credential rotation**: - When enabled, Boundary does not rotate the credentials with AWS automatically. Credential rotation is automatically disabled when you use dynamic credentials. @@ -63,7 +178,7 @@ Complete the following steps to create a dynamic host catalog for AWS: The required fields for creating a dynamic host catalog depend on whether you configure static or dynamic credentials. - + 1. Log in to Boundary. 1. Use the following command to create a dynamic host catalog for AWS using static credentials: @@ -94,7 +209,7 @@ The required fields for creating a dynamic host catalog depend on whether you co - + 1. Log in to Boundary. 1. Use the following command to create a dynamic host catalog using dynamic credentials: @@ -108,7 +223,8 @@ The required fields for creating a dynamic host catalog depend on whether you co -attr role_arn=AWS_ROLE_ARN_VALUE \ -attr role_external_id=AWS_ROLE_EXTERNAL_ID_VALUE \ -attr role_session_name=AWS_ROLE_SESSION_NAME_VALUE \ - -attr role_tags=AWS_ROLE_TAGS_VALUE + -attr role_tags=AWS_ROLE_TAGS_VALUE \ + -worker-filter '"aws" in "/tags/type"' ``` The `scope-id` and `plugin-name` fields are required when you create a dynamic host catalog. @@ -122,6 +238,7 @@ The required fields for creating a dynamic host catalog depend on whether you co - `role_external_id`: The external ID that you configured for the `AssumeRole` provider. - `role_session_name`: The session name that you configured for the `AssumeRole` provider. - `role_tags`: The key-value pair tags that you configured for the `AssumeRole` provider. + - `worker-filter` A boolean expression to filter which workers can handle dynamic host catalog commands for this host catalog. This should match a valid filter expression for the self-managed worker deployed in AWS. Refer to worker [Filter examples](/boundary/docs/concepts/filtering/worker-tags#filter-workers-using-tags) to learn more. Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. @@ -137,16 +254,16 @@ The required fields for creating a dynamic host catalog depend on whether you co Refer to the [Boundary Terraform provider documentation](https://registry.terraform.io/providers/hashicorp/boundary/latest/docs) to learn about the requirements for the following example attributes. - + Apply the following Terraform policy: ```hcl resource "boundary_host_catalog_plugin" "aws_host_catalog" { - name = "AWS Catalog" - description = "AWS Host Catalog" - scope_id = boundary_scope.project.id - plugin_name = "aws" + name = "AWS Catalog" + description = "AWS Host Catalog" + scope_id = boundary_scope.project.id + plugin_name = "aws" # recommended to pass in aws secrets using a file() or using environment variables attributes_json = jsonencode({ @@ -170,7 +287,7 @@ Replace the values in the configuration with the following required AWS secrets Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/host-catalogs) for additional fields that you can use when you create host catalogs. - + Apply the following Terraform policy: @@ -180,6 +297,7 @@ Apply the following Terraform policy: description = "AWS Host Catalog" scope_id = boundary_scope.project.id plugin_name = "aws" + worker_filter = "\"aws\" in \"/tags/type\"" attributes_json = jsonencode({ "region" = "eu-west-2", @@ -196,6 +314,7 @@ The `scope_id` and `plugin_name` fields are required when you create a dynamic h Replace the values in the configuration with the following required AWS secrets and any attributes you want to associate with the host catalog: + - `worker_filter`: A boolean expression to filter which workers can handle dynamic host catalog commands for this host catalog. This should match a valid filter expression for the self-managed worker deployed in AWS. Refer to worker [Filter examples](/boundary/docs/concepts/filtering/worker-tags#filter-workers-using-tags) to learn more. - `disable_credential_rotation`: When set to `true`, Boundary does not rotate the credentials with AWS automatically. You must disable credential rotation to use dynamic credentials. - `region`: The region to configure the host catalog for. All host sets in this catalog are configured for this region. @@ -213,8 +332,8 @@ Refer to [the domain model documentation](/boundary/docs/concepts/domain-model/h ## Create a host set to connect with AWS -[Host sets](/boundary/docs/concepts/domain-model/host-sets) specify which AWS - filters should be used to identify the discovered hosts that should be added as members. + +[Host sets](/boundary/docs/concepts/domain-model/host-sets) specify which AWS filters should be used to identify the discovered hosts that should be added as members. Complete the following steps to create a host set: From acc40e0d08641fdd557f671e89493bf72136f285 Mon Sep 17 00:00:00 2001 From: Damian Debkowski Date: Thu, 6 Feb 2025 12:20:39 -0800 Subject: [PATCH 14/70] fix: resolve small issues in db transactions (#5522) * fix: use the db transaction reader and writer * fix: internal/server: use ctx when scanning rows * fix(host): pass db tx reader/writer into helper funcs * fix: more precise nil check against db.Reader & db.Writer --------- Co-authored-by: Johan Brandhorst-Satzkorn --- internal/auth/oidc/repository_auth_method.go | 2 +- .../oidc/repository_managed_group_members.go | 5 +++-- internal/auth/repository_auth_method.go | 2 +- internal/credential/repository_store.go | 2 +- internal/host/options.go | 20 +++++++++++++++++++ internal/host/options_test.go | 19 ++++++++++++++++++ internal/host/plugin/options.go | 12 +++++++++++ internal/host/plugin/options_test.go | 8 ++++++++ .../host/plugin/repository_host_catalog.go | 14 +++++++++---- internal/host/plugin/repository_host_set.go | 13 ++++++++++-- internal/host/repository_catalog.go | 2 +- internal/host/static/repository_host.go | 4 ++-- internal/iam/repository.go | 5 +++-- internal/iam/repository_grant_scope.go | 3 ++- internal/iam/repository_role.go | 5 +++-- internal/iam/repository_role_grant.go | 2 +- internal/server/options.go | 12 +++++++++++ internal/server/options_test.go | 16 +++++++++++++++ internal/server/repository_worker.go | 8 ++++---- ..._worker_storage_bucket_credential_state.go | 12 ++++++++--- 20 files changed, 139 insertions(+), 27 deletions(-) diff --git a/internal/auth/oidc/repository_auth_method.go b/internal/auth/oidc/repository_auth_method.go index 0fff0ca776..c8bf4c592d 100644 --- a/internal/auth/oidc/repository_auth_method.go +++ b/internal/auth/oidc/repository_auth_method.go @@ -179,7 +179,7 @@ func (r *Repository) upsertAccount(ctx context.Context, am *AuthMethod, IdTokenC var rowCnt int for rows.Next() { rowCnt += 1 - err = r.reader.ScanRows(ctx, rows, &result) + err = reader.ScanRows(ctx, rows, &result) if err != nil { return errors.Wrap(ctx, err, op, errors.WithMsg("unable to scan rows for account")) } diff --git a/internal/auth/oidc/repository_managed_group_members.go b/internal/auth/oidc/repository_managed_group_members.go index 6c65413196..2f7ae1e3c9 100644 --- a/internal/auth/oidc/repository_managed_group_members.go +++ b/internal/auth/oidc/repository_managed_group_members.go @@ -11,6 +11,7 @@ import ( "github.com/hashicorp/boundary/internal/errors" "github.com/hashicorp/boundary/internal/kms" "github.com/hashicorp/boundary/internal/oplog" + "github.com/hashicorp/boundary/internal/util" ) // SetManagedGroupMemberships will set the managed groups for the given account @@ -207,7 +208,7 @@ func (r *Repository) ListManagedGroupMembershipsByMember(ctx context.Context, wi limit = opts.withLimit } reader := r.reader - if opts.withReader != nil { + if !util.IsNil(opts.withReader) { reader = opts.withReader } var mgs []*ManagedGroupMemberAccount @@ -232,7 +233,7 @@ func (r *Repository) ListManagedGroupMembershipsByGroup(ctx context.Context, wit limit = opts.withLimit } reader := r.reader - if opts.withReader != nil { + if !util.IsNil(opts.withReader) { reader = opts.withReader } var mgs []*ManagedGroupMemberAccount diff --git a/internal/auth/repository_auth_method.go b/internal/auth/repository_auth_method.go index d97d226959..bbd35fc549 100644 --- a/internal/auth/repository_auth_method.go +++ b/internal/auth/repository_auth_method.go @@ -147,7 +147,7 @@ func (amr *AuthMethodRepository) ListDeletedIds(ctx context.Context, since time. var deletedAuthMethodIDs []string var transactionTimestamp time.Time if _, err := amr.writer.DoTx(ctx, db.StdRetryCnt, db.ExpBackoff{}, func(r db.Reader, w db.Writer) error { - rows, err := amr.writer.Query(ctx, listDeletedIdsQuery, []any{sql.Named("since", since)}) + rows, err := w.Query(ctx, listDeletedIdsQuery, []any{sql.Named("since", since)}) if err != nil { return errors.Wrap(ctx, err, op) } diff --git a/internal/credential/repository_store.go b/internal/credential/repository_store.go index 02886f9bc1..338cff4452 100644 --- a/internal/credential/repository_store.go +++ b/internal/credential/repository_store.go @@ -118,7 +118,7 @@ func (s *StoreRepository) ListDeletedIds(ctx context.Context, since time.Time) ( var deletedStoreIDs []string var transactionTimestamp time.Time if _, err := s.writer.DoTx(ctx, db.StdRetryCnt, db.ExpBackoff{}, func(r db.Reader, w db.Writer) error { - rows, err := s.writer.Query(ctx, listDeletedIdsQuery, []any{sql.Named("since", since)}) + rows, err := w.Query(ctx, listDeletedIdsQuery, []any{sql.Named("since", since)}) if err != nil { return errors.Wrap(ctx, err, op) } diff --git a/internal/host/options.go b/internal/host/options.go index edfe8c98d0..5d240326e5 100644 --- a/internal/host/options.go +++ b/internal/host/options.go @@ -6,7 +6,9 @@ package host import ( "errors" + "github.com/hashicorp/boundary/internal/db" "github.com/hashicorp/boundary/internal/pagination" + "github.com/hashicorp/boundary/internal/util" ) // GetOpts - iterate the inbound Options and return a struct @@ -26,6 +28,8 @@ type Option func(*options) error // options = how options are represented type options struct { WithLimit int + WithReader db.Reader + WithWriter db.Writer WithOrderByCreateTime bool Ascending bool WithStartPageAfterItem pagination.Item @@ -66,3 +70,19 @@ func WithStartPageAfterItem(item pagination.Item) Option { return nil } } + +// WithReaderWriter is used to share the same database reader +// and writer when executing sql within a transaction. +func WithReaderWriter(r db.Reader, w db.Writer) Option { + return func(o *options) error { + if util.IsNil(r) { + return errors.New("reader cannot be nil") + } + if util.IsNil(w) { + return errors.New("writer cannot be nil") + } + o.WithReader = r + o.WithWriter = w + return nil + } +} diff --git a/internal/host/options_test.go b/internal/host/options_test.go index 90c47b493e..9c3336ce07 100644 --- a/internal/host/options_test.go +++ b/internal/host/options_test.go @@ -77,4 +77,23 @@ func Test_GetOpts(t *testing.T) { assert.Equal(opts.WithStartPageAfterItem.GetPublicId(), "s_1") assert.Equal(opts.WithStartPageAfterItem.GetUpdateTime(), timestamp.New(updateTime)) }) + t.Run("WithReaderWriter", func(t *testing.T) { + t.Parallel() + t.Run("nil writer", func(t *testing.T) { + t.Parallel() + _, err := GetOpts(WithReaderWriter(&db.Db{}, nil)) + require.Error(t, err) + }) + t.Run("nil reader", func(t *testing.T) { + t.Parallel() + _, err := GetOpts(WithReaderWriter(nil, &db.Db{})) + require.Error(t, err) + }) + reader := &db.Db{} + writer := &db.Db{} + opts, err := GetOpts(WithReaderWriter(reader, writer)) + require.NoError(t, err) + assert.Equal(t, reader, opts.WithReader) + assert.Equal(t, writer, opts.WithWriter) + }) } diff --git a/internal/host/plugin/options.go b/internal/host/plugin/options.go index 936f6b717d..50dba24add 100644 --- a/internal/host/plugin/options.go +++ b/internal/host/plugin/options.go @@ -4,6 +4,7 @@ package plugin import ( + "github.com/hashicorp/boundary/internal/db" "github.com/hashicorp/boundary/internal/pagination" "google.golang.org/protobuf/types/known/structpb" ) @@ -38,6 +39,8 @@ type options struct { withSecretsHmac []byte withStartPageAfterItem pagination.Item withWorkerFilter string + WithReader db.Reader + withWriter db.Writer } func getDefaultOptions() options { @@ -162,3 +165,12 @@ func WithWorkerFilter(wf string) Option { o.withWorkerFilter = wf } } + +// WithReaderWriter is used to share the same database reader +// and writer when executing sql within a transaction. +func WithReaderWriter(r db.Reader, w db.Writer) Option { + return func(o *options) { + o.WithReader = r + o.withWriter = w + } +} diff --git a/internal/host/plugin/options_test.go b/internal/host/plugin/options_test.go index 80ef1df197..24fb5abe3b 100644 --- a/internal/host/plugin/options_test.go +++ b/internal/host/plugin/options_test.go @@ -7,6 +7,7 @@ import ( "testing" "time" + "github.com/hashicorp/boundary/internal/db" "github.com/hashicorp/boundary/internal/db/timestamp" "github.com/hashicorp/boundary/internal/pagination" "github.com/stretchr/testify/assert" @@ -113,4 +114,11 @@ func Test_GetOpts(t *testing.T) { testOpts.withWorkerFilter = `"test" in "/tags/type"` assert.Equal(t, opts, testOpts) }) + t.Run("WithReaderWriter", func(t *testing.T) { + reader := &db.Db{} + writer := &db.Db{} + opts := getOpts(WithReaderWriter(reader, writer)) + assert.Equal(t, reader, opts.WithReader) + assert.Equal(t, writer, opts.withWriter) + }) } diff --git a/internal/host/plugin/repository_host_catalog.go b/internal/host/plugin/repository_host_catalog.go index 79830b76c1..9832e117a2 100644 --- a/internal/host/plugin/repository_host_catalog.go +++ b/internal/host/plugin/repository_host_catalog.go @@ -11,6 +11,7 @@ import ( "github.com/hashicorp/boundary/internal/db" "github.com/hashicorp/boundary/internal/errors" "github.com/hashicorp/boundary/internal/event" + "github.com/hashicorp/boundary/internal/host" "github.com/hashicorp/boundary/internal/kms" "github.com/hashicorp/boundary/internal/libs/patchstruct" "github.com/hashicorp/boundary/internal/oplog" @@ -404,7 +405,7 @@ func (r *Repository) UpdateCatalog(ctx context.Context, c *HostCatalog, version ctx, db.StdRetryCnt, db.ExpBackoff{}, - func(_ db.Reader, w db.Writer) error { + func(read db.Reader, w db.Writer) error { msgs := make([]*oplog.Message, 0, 3) ticket, err := w.GetTicket(ctx, newCatalog) if err != nil { @@ -528,7 +529,7 @@ func (r *Repository) UpdateCatalog(ctx context.Context, c *HostCatalog, version if needSetSync { // We also need to mark all host sets in this catalog to be // synced as well. - setsForCatalog, _, err := r.getSets(ctx, "", returnedCatalog.PublicId) + setsForCatalog, _, err := r.getSets(ctx, "", returnedCatalog.PublicId, host.WithReaderWriter(read, w)) if err != nil { return errors.Wrap(ctx, err, op, errors.WithMsg("unable to get sets for host catalog")) } @@ -713,14 +714,19 @@ func (r *Repository) getCatalog(ctx context.Context, id string) (*HostCatalog, * return c, p, nil } -func (r *Repository) getPlugin(ctx context.Context, plgId string) (*plg.Plugin, error) { +func (r *Repository) getPlugin(ctx context.Context, plgId string, opts ...Option) (*plg.Plugin, error) { const op = "plugin.(Repository).getPlugin" if plgId == "" { return nil, errors.New(ctx, errors.InvalidParameter, op, "no plugin id") } + opt := getOpts(opts...) + reader := r.reader + if !util.IsNil(opt.WithReader) { + reader = opt.WithReader + } plg := plg.NewPlugin() plg.PublicId = plgId - if err := r.reader.LookupByPublicId(ctx, plg); err != nil { + if err := reader.LookupByPublicId(ctx, plg); err != nil { return nil, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("unable to get host plugin with id %q", plgId))) } return plg, nil diff --git a/internal/host/plugin/repository_host_set.go b/internal/host/plugin/repository_host_set.go index a3b32c7857..919564a013 100644 --- a/internal/host/plugin/repository_host_set.go +++ b/internal/host/plugin/repository_host_set.go @@ -804,6 +804,15 @@ func (r *Repository) getSets(ctx context.Context, publicId string, catalogId str limit = opts.WithLimit } + reader := r.reader + writer := r.writer + if !util.IsNil(opts.WithReader) { + reader = opts.WithReader + } + if !util.IsNil(opts.WithWriter) { + writer = opts.WithWriter + } + args := make([]any, 0, 1) var where string @@ -825,7 +834,7 @@ func (r *Repository) getSets(ctx context.Context, publicId string, catalogId str } var aggHostSets []*hostSetAgg - if err := r.reader.SearchWhere(ctx, &aggHostSets, where, args, dbArgs...); err != nil { + if err := reader.SearchWhere(ctx, &aggHostSets, where, args, dbArgs...); err != nil { return nil, nil, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("in %s", publicId))) } @@ -844,7 +853,7 @@ func (r *Repository) getSets(ctx context.Context, publicId string, catalogId str } var plg *plugin.Plugin if plgId != "" { - plg, err = r.getPlugin(ctx, plgId) + plg, err = r.getPlugin(ctx, plgId, WithReaderWriter(reader, writer)) if err != nil { return nil, nil, errors.Wrap(ctx, err, op) } diff --git a/internal/host/repository_catalog.go b/internal/host/repository_catalog.go index be9c04dcc3..b1fdf57118 100644 --- a/internal/host/repository_catalog.go +++ b/internal/host/repository_catalog.go @@ -119,7 +119,7 @@ func (s *CatalogRepository) ListDeletedIds(ctx context.Context, since time.Time) var deletedCatalogIDs []string var transactionTimestamp time.Time if _, err := s.writer.DoTx(ctx, db.StdRetryCnt, db.ExpBackoff{}, func(r db.Reader, w db.Writer) error { - rows, err := s.writer.Query(ctx, listDeletedIdsQuery, []any{sql.Named("since", since)}) + rows, err := w.Query(ctx, listDeletedIdsQuery, []any{sql.Named("since", since)}) if err != nil { return errors.Wrap(ctx, err, op) } diff --git a/internal/host/static/repository_host.go b/internal/host/static/repository_host.go index acf4e970c5..c2d4df5652 100644 --- a/internal/host/static/repository_host.go +++ b/internal/host/static/repository_host.go @@ -171,7 +171,7 @@ func (r *Repository) UpdateHost(ctx context.Context, projectId string, h *Host, var rowsUpdated int var returnedHost *Host _, err = r.writer.DoTx(ctx, db.StdRetryCnt, db.ExpBackoff{}, - func(_ db.Reader, w db.Writer) error { + func(r db.Reader, w db.Writer) error { returnedHost = h.clone() var err error rowsUpdated, err = w.Update(ctx, returnedHost, dbMask, nullFields, @@ -186,7 +186,7 @@ func (r *Repository) UpdateHost(ctx context.Context, projectId string, h *Host, ha := &hostAgg{ PublicId: h.PublicId, } - if err := r.reader.LookupByPublicId(ctx, ha); err != nil { + if err := r.LookupByPublicId(ctx, ha); err != nil { return errors.Wrap(ctx, err, op, errors.WithMsg("failed to lookup host after update")) } returnedHost.SetIds = ha.getSetIds() diff --git a/internal/iam/repository.go b/internal/iam/repository.go index 33c2d8b69a..52e87283a8 100644 --- a/internal/iam/repository.go +++ b/internal/iam/repository.go @@ -13,6 +13,7 @@ import ( "github.com/hashicorp/boundary/internal/kms" "github.com/hashicorp/boundary/internal/oplog" "github.com/hashicorp/boundary/internal/types/scope" + "github.com/hashicorp/boundary/internal/util" ) var ErrMetadataScopeNotFound = errors.New(context.Background(), errors.RecordNotFound, "iam", "scope not found for metadata", errors.WithoutEvent()) @@ -65,7 +66,7 @@ func (r *Repository) list(ctx context.Context, resources any, where string, args limit = opts.withLimit } reader := r.reader - if opts.withReader != nil { + if !util.IsNil(opts.withReader) { reader = opts.withReader } return reader.SearchWhere(ctx, resources, where, args, db.WithLimit(limit)) @@ -150,7 +151,7 @@ func (r *Repository) update(ctx context.Context, resource Resource, version uint reader := r.reader writer := r.writer needFreshReaderWriter := true - if opts.withReader != nil && opts.withWriter != nil { + if !util.IsNil(opts.withReader) && !util.IsNil(opts.withWriter) { reader = opts.withReader writer = opts.withWriter if !writer.IsTx(ctx) { diff --git a/internal/iam/repository_grant_scope.go b/internal/iam/repository_grant_scope.go index db2c3f6f65..efdf52aa28 100644 --- a/internal/iam/repository_grant_scope.go +++ b/internal/iam/repository_grant_scope.go @@ -11,6 +11,7 @@ import ( "github.com/hashicorp/boundary/internal/errors" "github.com/hashicorp/boundary/internal/kms" "github.com/hashicorp/boundary/internal/oplog" + "github.com/hashicorp/boundary/internal/util" ) // AddRoleGrantScopes will add role grant scopes associated with the role ID in @@ -235,7 +236,7 @@ func (r *Repository) SetRoleGrantScopes(ctx context.Context, roleId string, role writer := r.writer needFreshReaderWriter := true opts := getOpts(opt...) - if opts.withReader != nil && opts.withWriter != nil { + if !util.IsNil(opts.withReader) && !util.IsNil(opts.withWriter) { reader = opts.withReader writer = opts.withWriter needFreshReaderWriter = false diff --git a/internal/iam/repository_role.go b/internal/iam/repository_role.go index 9503303b10..9250d420a0 100644 --- a/internal/iam/repository_role.go +++ b/internal/iam/repository_role.go @@ -14,6 +14,7 @@ import ( "github.com/hashicorp/boundary/internal/db" "github.com/hashicorp/boundary/internal/db/timestamp" "github.com/hashicorp/boundary/internal/errors" + "github.com/hashicorp/boundary/internal/util" "github.com/hashicorp/go-dbw" ) @@ -193,7 +194,7 @@ func (r *Repository) LookupRole(ctx context.Context, withPublicId string, opt .. } var err error - if opts.withReader != nil && opts.withWriter != nil { + if !util.IsNil(opts.withReader) && !util.IsNil(opts.withWriter) { if !opts.withWriter.IsTx(ctx) { return nil, nil, nil, nil, errors.New(ctx, errors.Internal, op, "writer is not in transaction") } @@ -325,7 +326,7 @@ func (r *Repository) queryRoles(ctx context.Context, whereClause string, args [] for _, retRole := range retRoles { roleIds = append(roleIds, retRole.PublicId) } - retRoleGrantScopes, err = r.ListRoleGrantScopes(ctx, roleIds) + retRoleGrantScopes, err = r.ListRoleGrantScopes(ctx, roleIds, WithReaderWriter(rd, w)) if err != nil { return errors.Wrap(ctx, err, op, errors.WithMsg("failed to query role grant scopes")) } diff --git a/internal/iam/repository_role_grant.go b/internal/iam/repository_role_grant.go index d9a8d63172..92ed50914b 100644 --- a/internal/iam/repository_role_grant.go +++ b/internal/iam/repository_role_grant.go @@ -359,7 +359,7 @@ func (r *Repository) SetRoleGrants(ctx context.Context, roleId string, roleVersi return errors.Wrap(ctx, err, op, errors.WithMsg("unable to write oplog")) } - currentRoleGrants, err = r.ListRoleGrants(ctx, roleId) + currentRoleGrants, err = r.ListRoleGrants(ctx, roleId, WithReaderWriter(reader, w)) if err != nil { return errors.Wrap(ctx, err, op, errors.WithMsg("unable to retrieve current role grants after set")) } diff --git a/internal/server/options.go b/internal/server/options.go index a62e18556c..a28a8c2288 100644 --- a/internal/server/options.go +++ b/internal/server/options.go @@ -7,6 +7,7 @@ import ( "context" "time" + "github.com/hashicorp/boundary/internal/db" "github.com/hashicorp/boundary/version" "github.com/hashicorp/nodeenrollment/types" ) @@ -63,6 +64,8 @@ type options struct { withWorkerPool []string withFilterWorkersByStorageBucketCredentialState *StorageBucketCredentialInfo withFilterWorkersByLocalStorageState bool + WithReader db.Reader + WithWriter db.Writer } func getDefaultOptions() options { @@ -303,3 +306,12 @@ func WithFilterWorkersByLocalStorageState(filter bool) Option { o.withFilterWorkersByLocalStorageState = filter } } + +// WithReaderWriter is used to share the same database reader +// and writer when executing sql within a transaction. +func WithReaderWriter(r db.Reader, w db.Writer) Option { + return func(o *options) { + o.WithReader = r + o.WithWriter = w + } +} diff --git a/internal/server/options_test.go b/internal/server/options_test.go index cb4e620d63..7f0584cd9f 100644 --- a/internal/server/options_test.go +++ b/internal/server/options_test.go @@ -10,6 +10,7 @@ import ( "testing" "time" + "github.com/hashicorp/boundary/internal/db" "github.com/hashicorp/boundary/version" "github.com/stretchr/testify/assert" ) @@ -252,4 +253,19 @@ func Test_GetOpts(t *testing.T) { testOpts.withNewIdFunc = nil assert.Equal(t, opts, testOpts) }) + t.Run("WithReaderWriter", func(t *testing.T) { + reader := &db.Db{} + writer := &db.Db{} + testOpts := getDefaultOptions() + assert.Nil(t, testOpts.WithReader) + assert.Nil(t, testOpts.WithWriter) + testOpts.WithReader = reader + testOpts.WithWriter = writer + opts := GetOpts(WithReaderWriter(reader, writer)) + opts.withNewIdFunc = nil + testOpts.withNewIdFunc = nil + assert.Equal(t, reader, opts.WithReader) + assert.Equal(t, writer, opts.WithWriter) + assert.Equal(t, opts, testOpts) + }) } diff --git a/internal/server/repository_worker.go b/internal/server/repository_worker.go index 435678b867..e41d7309b0 100644 --- a/internal/server/repository_worker.go +++ b/internal/server/repository_worker.go @@ -255,7 +255,7 @@ func ListWorkers(ctx context.Context, reader db.Reader, scopeIds []string, opt . defer rows.Close() for rows.Next() { var worker Worker - if err := reader.ScanRows(context.Background(), rows, &worker); err != nil { + if err := reader.ScanRows(ctx, rows, &worker); err != nil { return nil, err } workers = append(workers, &worker) @@ -600,7 +600,7 @@ func (r *Repository) UpdateWorker(ctx context.Context, worker *Worker, version u if err != nil { return errors.Wrap(ctx, err, op) } - ret.RemoteStorageStates, err = r.ListWorkerStorageBucketCredentialState(ctx, ret.GetPublicId()) + ret.RemoteStorageStates, err = r.ListWorkerStorageBucketCredentialState(ctx, ret.GetPublicId(), WithReaderWriter(reader, w)) if err != nil { return err } @@ -925,7 +925,7 @@ func (r *Repository) SelectSessionWorkers(ctx context.Context, db.StdRetryCnt, db.ExpBackoff{}, func(reader db.Reader, w db.Writer) error { - rows, err := r.reader.Query(ctx, query, []any{}) + rows, err := reader.Query(ctx, query, []any{}) if err != nil { return err } @@ -935,7 +935,7 @@ func (r *Repository) SelectSessionWorkers(ctx context.Context, // a Worker object can hold, only a subset. Check the query to // learn exactly what fields are present. var worker Worker - if err := r.reader.ScanRows(ctx, rows, &worker); err != nil { + if err := reader.ScanRows(ctx, rows, &worker); err != nil { return err } livingWorkers = append(livingWorkers, &worker) diff --git a/internal/server/repository_worker_storage_bucket_credential_state.go b/internal/server/repository_worker_storage_bucket_credential_state.go index cf14e4fe4c..ac80bec17b 100644 --- a/internal/server/repository_worker_storage_bucket_credential_state.go +++ b/internal/server/repository_worker_storage_bucket_credential_state.go @@ -9,11 +9,12 @@ import ( "github.com/hashicorp/boundary/internal/db/timestamp" "github.com/hashicorp/boundary/internal/errors" + "github.com/hashicorp/boundary/internal/util" plgpb "github.com/hashicorp/boundary/sdk/pbs/plugin" ) // ListWorkerStorageBucketCredentialState returns a list of storage bucket credential states for the given worker. -func (r *Repository) ListWorkerStorageBucketCredentialState(ctx context.Context, workerId string) (map[string]*plgpb.StorageBucketCredentialState, error) { +func (r *Repository) ListWorkerStorageBucketCredentialState(ctx context.Context, workerId string, opts ...Option) (map[string]*plgpb.StorageBucketCredentialState, error) { const op = "server.(Repository).ListWorkerStorageBucketCredentialState" if workerId == "" { return nil, errors.New(ctx, errors.InvalidParameter, op, "empty worker id") @@ -25,7 +26,12 @@ func (r *Repository) ListWorkerStorageBucketCredentialState(ctx context.Context, CheckedAt *timestamp.Timestamp ErrorDetails string } - rows, err := r.reader.Query(ctx, getStorageBucketCredentialStatesByWorkerId, []any{sql.Named("worker_id", workerId)}) + opt := GetOpts(opts...) + reader := r.reader + if !util.IsNil(opt.WithReader) { + reader = opt.WithReader + } + rows, err := reader.Query(ctx, getStorageBucketCredentialStatesByWorkerId, []any{sql.Named("worker_id", workerId)}) if err != nil && !errors.Match(errors.T(errors.RecordNotFound), err) { return nil, errors.Wrap(ctx, err, op) } @@ -36,7 +42,7 @@ func (r *Repository) ListWorkerStorageBucketCredentialState(ctx context.Context, return nil, errors.Wrap(ctx, err, op) } var row remoteStorageState - if err := r.reader.ScanRows(ctx, rows, &row); err != nil { + if err := reader.ScanRows(ctx, rows, &row); err != nil { return nil, errors.Wrap(ctx, err, op, errors.WithMsg("failed to fetch remote storage state")) } s, ok := remoteStorageStates[row.StorageBucketId] From 5de0c8c1029ed02be9e4322eb7b25b7d739733fc Mon Sep 17 00:00:00 2001 From: Johan Brandhorst-Satzkorn Date: Thu, 6 Feb 2025 13:49:49 -0800 Subject: [PATCH 15/70] internal: ensure schema manager is closed (#5521) This releases the connection it holds indefinitely --- internal/cmd/commands/database/funcs.go | 2 ++ internal/db/schema/migrations/oss/testing.go | 1 + internal/db/schema/schema.go | 1 + internal/oplog/testing.go | 1 + 4 files changed, 5 insertions(+) diff --git a/internal/cmd/commands/database/funcs.go b/internal/cmd/commands/database/funcs.go index 2e667982fb..0ab80316a7 100644 --- a/internal/cmd/commands/database/funcs.go +++ b/internal/cmd/commands/database/funcs.go @@ -46,11 +46,13 @@ func migrateDatabase(ctx context.Context, ui cli.Ui, dialect, u string, initiali // This is an advisory lock on the DB which is released when the DB session ends. if err := man.ExclusiveLock(ctx); err != nil { ui.Error("Unable to capture a lock on the database.") + _ = man.Close(ctx) return noop, 2 } unlock := func() { // We don't report anything since this should resolve itself anyways. _ = man.ExclusiveUnlock(ctx) + _ = man.Close(ctx) } st, err := man.CurrentState(ctx) diff --git a/internal/db/schema/migrations/oss/testing.go b/internal/db/schema/migrations/oss/testing.go index 3c17567ab2..c7b5fc3645 100644 --- a/internal/db/schema/migrations/oss/testing.go +++ b/internal/db/schema/migrations/oss/testing.go @@ -19,6 +19,7 @@ func ApplyMigration(t *testing.T, ctx context.Context, d *sql.DB, migrationId in schema.TestCreatePartialEditions(schema.Dialect(dialect), schema.PartialEditions{"oss": migrationId}), )) require.NoError(t, err) + t.Cleanup(func() { m.Close(context.Background()) }) _, err = m.ApplyMigrations(ctx) require.NoError(t, err) state, err := m.CurrentState(ctx) diff --git a/internal/db/schema/schema.go b/internal/db/schema/schema.go index bf12da1e54..039991762c 100644 --- a/internal/db/schema/schema.go +++ b/internal/db/schema/schema.go @@ -25,6 +25,7 @@ func MigrateStore(ctx context.Context, dialect Dialect, url string, opt ...Optio if err != nil { return false, errors.Wrap(ctx, err, op) } + defer sMan.Close(ctx) st, err := sMan.CurrentState(ctx) if err != nil { diff --git a/internal/oplog/testing.go b/internal/oplog/testing.go index 18509cafbc..f5f5ba5845 100644 --- a/internal/oplog/testing.go +++ b/internal/oplog/testing.go @@ -125,6 +125,7 @@ func testInitStore(t testing.TB, cleanup func() error, url string) { require.NoError(t, err) sm, err := schema.NewManager(ctx, schema.Dialect(dialect), d) require.NoError(t, err) + t.Cleanup(func() { sm.Close(context.Background()) }) _, err = sm.ApplyMigrations(ctx) require.NoError(t, err) } From 207b02bf1539d98f99bc5c0578089304fed73920 Mon Sep 17 00:00:00 2001 From: Elim Tsiagbey Date: Fri, 7 Feb 2025 17:00:17 -0500 Subject: [PATCH 16/70] chore: Update changelog (#5527) * chore: Update changelog update changelog for 0.19.0, 0.17.4, 0.18.3 and add missing 0.17.3 entry --- CHANGELOG.md | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 38213b375a..b37f38420b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ Canonical reference for changes, improvements, and bugfixes for Boundary. ## Next -## 0.19.0 (2025/01/31) +## 0.19.0 (TBD) ### New and Improved * Introduces soft-delete for users within the client cache. @@ -49,10 +49,41 @@ maintainability of worker queries, and improve DB performance. ([PR](https://git * Fix bug which caused the `children` keyword not to apply the appropriate permissions for a number of resources. ([PR](https://github.com/hashicorp/boundary/pull/5418)). +* Fix bug where database transactions were not using the correct reader & writer functions + and context. + ([PR](https://github.com/hashicorp/boundary/pull/5522)). +* Remove unnecessary subquery from alias refresh + ([PR](https://github.com/hashicorp/boundary/pull/5481)). + +## 0.18.3 (TBD) (Enterprise only) +### Bug fixes + +* Fix bug where database transactions were not using the correct reader & writer functions + and context. + ([PR](https://github.com/hashicorp/boundary/pull/5522)). +* Remove unnecessary subquery from alias refresh + ([PR](https://github.com/hashicorp/boundary/pull/5481)). + +## 0.17.4 (TBD) (Enterprise only) +### Bug fixes + +* Fix bug where database transactions were not using the correct reader & writer functions + and context. + ([PR](https://github.com/hashicorp/boundary/pull/5522)). +* Remove unnecessary subquery from alias refresh + ([PR](https://github.com/hashicorp/boundary/pull/5481)). ## 0.18.2 (2024/12/12) ### Bug fixes +* Fixed an issue where session recordings would fail when large numbers of + sessions were created around the same time. ([PR](https://github.com/hashicorp/boundary-plugin-aws/pull/55)) +* Fixed an issue where the controller would incorrectly handle HTTP requests + and stop prematurely. ([PR](https://github.com/hashicorp/boundary/pull/5304)) + +## 0.17.3 (2024/12/12) +### Bug fixes + * Fixed an issue where session recordings would fail when large numbers of sessions were created around the same time. ([PR](https://github.com/hashicorp/boundary-plugin-aws/pull/55)) * Fixed an issue where the controller would incorrectly handle HTTP requests From 79770b26f2a078eb53d9821c7a802727889adeab Mon Sep 17 00:00:00 2001 From: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> Date: Mon, 10 Feb 2025 11:12:58 -0500 Subject: [PATCH 17/70] docs: Update release date (#5530) --- website/content/docs/release-notes/v0_19_0.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/release-notes/v0_19_0.mdx b/website/content/docs/release-notes/v0_19_0.mdx index 9a7b43781c..99a801f5fe 100644 --- a/website/content/docs/release-notes/v0_19_0.mdx +++ b/website/content/docs/release-notes/v0_19_0.mdx @@ -7,7 +7,7 @@ description: >- # Boundary 0.19.0 release notes -**GA date:** January 30, 2025 +**GA date:** February 10, 2025 @include 'release-notes/intro.mdx' From 777ea9199cbfb972070172f220b65155c1bb50cc Mon Sep 17 00:00:00 2001 From: Elim Tsiagbey Date: Mon, 10 Feb 2025 13:10:00 -0500 Subject: [PATCH 18/70] docs: update changelog to include security dependency updates (#5529) --- CHANGELOG.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b37f38420b..5a595e4855 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,6 +55,13 @@ maintainability of worker queries, and improve DB performance. ([PR](https://git * Remove unnecessary subquery from alias refresh ([PR](https://github.com/hashicorp/boundary/pull/5481)). +### Security + +* Go Networking dependency update to address CVE-2024-45338 and GO-2024-3333 + ([PR])(https://github.com/hashicorp/boundary/pull/5405). +* Go Cryptography dependency update to address CVE-2024-45337 + ([PR](https://github.com/hashicorp/boundary/pull/5354)). + ## 0.18.3 (TBD) (Enterprise only) ### Bug fixes @@ -64,6 +71,13 @@ maintainability of worker queries, and improve DB performance. ([PR](https://git * Remove unnecessary subquery from alias refresh ([PR](https://github.com/hashicorp/boundary/pull/5481)). +### Security + +* Go Networking dependency update to address CVE-2024-45338 and GO-2024-3333 + ([PR])(https://github.com/hashicorp/boundary/pull/5406). +* Go Cryptography dependency update to address CVE-2024-45337 + ([PR](https://github.com/hashicorp/boundary/pull/5365)). + ## 0.17.4 (TBD) (Enterprise only) ### Bug fixes @@ -73,6 +87,13 @@ maintainability of worker queries, and improve DB performance. ([PR](https://git * Remove unnecessary subquery from alias refresh ([PR](https://github.com/hashicorp/boundary/pull/5481)). +### Security + +* Go Networking dependency update to address CVE-2024-45338 and GO-2024-3333 + ([PR])(https://github.com/hashicorp/boundary/pull/5528). +* Go Cryptography dependency update to address CVE-2024-45337 + ([PR](https://github.com/hashicorp/boundary/pull/5366)). + ## 0.18.2 (2024/12/12) ### Bug fixes From 90ec561804510e72963bc2d79203dde85936be79 Mon Sep 17 00:00:00 2001 From: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> Date: Mon, 10 Feb 2025 13:53:07 -0500 Subject: [PATCH 19/70] docs: Update 0.17.x and 0.18.x release notes (#5533) * docs: Update 0.17.x and 0.18.x release notes * docs: Rephrase language re. Go update --- .../content/docs/release-notes/v0_17_0.mdx | 67 +++++++++++++++++++ .../content/docs/release-notes/v0_18_0.mdx | 67 +++++++++++++++++++ 2 files changed, 134 insertions(+) diff --git a/website/content/docs/release-notes/v0_17_0.mdx b/website/content/docs/release-notes/v0_17_0.mdx index 391adbbe01..22d6e77a6f 100644 --- a/website/content/docs/release-notes/v0_17_0.mdx +++ b/website/content/docs/release-notes/v0_17_0.mdx @@ -242,6 +242,73 @@ description: >- + + + 0.16.0 - 0.17.3 +

+ (Fixed in Boundary Enterprise 0.17.4) + + + Performance is impacted by query + + + A query that was added with the aliases feature performed a full table scan of the target table. The scan could negatively impact performance. +

+ The scan was replaced with a more efficient method for scanning targets. This issue has been resolved. +

+
Upgrade to the latest version of Boundary +

+ + + + + + 0.16.0 - 0.17.3 +

+ (Fixed in Boundary Enterprise 0.17.4) + + + Performance is impacted by database transactions + + + Database transactions were not using the correct reader and writer functions or context. This issue could cause delays and negatively impact system performance. +

+ A number of minor fixes were added to improve the way Boundary performs database transactions. This issue has been resolved. +

+ Upgrade to the latest version of Boundary +

+ + + + + + 0.17.0 - 0.17.3 +

+ (Fixed in Boundary Enterprise 0.17.4) + + + GO-2024-3333 +

+ CVE-2024-45338 +

+ CVE-2024-45337 + + + The Go dependencies that were used in Boundary release 0.17.x contained security vulnerabilities. Boundary Enterprise 0.17.4 was updated to use new versions of the dependencies. This issue is resolved. +

+ Learn more: +

+ GO-2024-3333: An attacker can craft an input to the Parse functions that would be processed non-linearly with respect to its length, resulting in extremely slow parsing. This could cause a denial of service. +

+ CVE-2024-45338: Non-linear parsing of case-insensitive content in golang.org/x/net/html +

+ CVE-2024-45337: Misuse of ServerConfig.PublicKeyCallback may cause authorization bypass in golang.org/x/crypto +

+ Upgrade to the latest version of Boundary +

+ + + \ No newline at end of file diff --git a/website/content/docs/release-notes/v0_18_0.mdx b/website/content/docs/release-notes/v0_18_0.mdx index 8b4d0c5de3..465ba1610b 100644 --- a/website/content/docs/release-notes/v0_18_0.mdx +++ b/website/content/docs/release-notes/v0_18_0.mdx @@ -259,5 +259,72 @@ description: >- + + + 0.16.0 - 0.18.2 +

+ (Fixed in Boundary Enterprise 0.18.3) + + + Performance is impacted by query + + + A query that was added with the aliases feature performed a full table scan of the target table. The scan could negatively impact performance. +

+ The scan was replaced with a more efficient method for scanning targets. This issue has been resolved. +

+ Upgrade to the latest version of Boundary +

+ + + + + + 0.16.0 - 0.18.2 +

+ (Fixed in Boundary Enterprise 0.18.3) + + + Performance is impacted by database transactions + + + Database transactions were not using the correct reader and writer functions or context. This issue could cause delays and negatively impact system performance. +

+ A number of minor fixes were added to improve the way Boundary performs database transactions. This issue has been resolved. +

+ Upgrade to the latest version of Boundary +

+ + + + + + 0.17.0 - 0.18.2 +

+ (Fixed in Boundary Enterprise 0.18.3) + + + GO-2024-3333 +

+ CVE-2024-45338 +

+ CVE-2024-45337 + + + The Go dependencies that were used in Boundary release 0.18.x contained security vulnerabilities. Boundary Enterprise 0.18.3 was updated to use new versions of the dependencies. This issue is resolved. +

+ Learn more: +

+ GO-2024-3333: An attacker can craft an input to the Parse functions that would be processed non-linearly with respect to its length, resulting in extremely slow parsing. This could cause a denial of service. +

+ CVE-2024-45338: Non-linear parsing of case-insensitive content in golang.org/x/net/html +

+ CVE-2024-45337: Misuse of ServerConfig.PublicKeyCallback may cause authorization bypass in golang.org/x/crypto +

+ Upgrade to the latest version of Boundary +

+ + + \ No newline at end of file From 9e5c1b846f2de742cf1a19fc01dbc3835f5da6eb Mon Sep 17 00:00:00 2001 From: Elim Tsiagbey Date: Tue, 11 Feb 2025 10:52:59 -0500 Subject: [PATCH 20/70] chore: Update changelog dates (#5536) --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a595e4855..b3a4d8a43e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ Canonical reference for changes, improvements, and bugfixes for Boundary. ## Next -## 0.19.0 (TBD) +## 0.19.0 (2025/02/10) ### New and Improved * Introduces soft-delete for users within the client cache. @@ -62,7 +62,7 @@ maintainability of worker queries, and improve DB performance. ([PR](https://git * Go Cryptography dependency update to address CVE-2024-45337 ([PR](https://github.com/hashicorp/boundary/pull/5354)). -## 0.18.3 (TBD) (Enterprise only) +## 0.18.3 (2025/02/10) (Enterprise only) ### Bug fixes * Fix bug where database transactions were not using the correct reader & writer functions @@ -78,7 +78,7 @@ maintainability of worker queries, and improve DB performance. ([PR](https://git * Go Cryptography dependency update to address CVE-2024-45337 ([PR](https://github.com/hashicorp/boundary/pull/5365)). -## 0.17.4 (TBD) (Enterprise only) +## 0.17.4 (2025/02/10) (Enterprise only) ### Bug fixes * Fix bug where database transactions were not using the correct reader & writer functions From ca0deb91c168820dbcdf50bfa27754ea9a6d53cf Mon Sep 17 00:00:00 2001 From: "hashicorp-tsccr[bot]" <129506189+hashicorp-tsccr[bot]@users.noreply.github.com> Date: Tue, 11 Feb 2025 08:37:00 -0800 Subject: [PATCH 21/70] Result of tsccr-helper -log-level=info gha update -latest .github/ (#5505) Co-authored-by: hashicorp-tsccr[bot] --- .github/workflows/build.yml | 20 ++++++++++---------- .github/workflows/enos-run.yml | 12 ++++++------ .github/workflows/fuzz.yml | 4 ++-- .github/workflows/linting.yml | 2 +- .github/workflows/make-gen-delta.yml | 2 +- .github/workflows/security-scan.yml | 4 ++-- .github/workflows/test-cli-ui_oss.yml | 2 +- .github/workflows/test-race.yml | 6 +++--- .github/workflows/test.yml | 6 +++--- 9 files changed, 29 insertions(+), 29 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 95e5103378..b64a65c4fc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,7 +48,7 @@ jobs: echo "Building with Go $(cat .go-version)" echo "go-version=$(cat .go-version)" >> "$GITHUB_OUTPUT" - name: Set up Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: "${{ steps.get-go-version.outputs.go-version }}" cache: false @@ -108,7 +108,7 @@ jobs: repository: boundary version: ${{ needs.set-product-version.outputs.product-version }} product: ${{ env.PKG_NAME }} - - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: name: metadata.json path: ${{ steps.generate-metadata-file.outputs.filepath }} @@ -139,7 +139,7 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: ${{ matrix.go }} cache: false @@ -163,7 +163,7 @@ jobs: id: set-sha run: echo "sha=$(head -n1 internal/ui/VERSION | cut -d ' ' -f1)" >> "$GITHUB_OUTPUT" - name: Download UI artifact - uses: dawidd6/action-download-artifact@80620a5d27ce0ae443b965134db88467fc607b43 # v7 + uses: dawidd6/action-download-artifact@20319c5641d495c8a52e688b7dc5fada6c3a9fbc # v8 with: workflow: build-admin-ui.yaml commit: ${{ steps.set-sha.outputs.sha }} @@ -209,7 +209,7 @@ jobs: - name: Set up Git run: git config --global url."https://${{ secrets.ELEVATED_GITHUB_TOKEN }}:@github.com".insteadOf "https://github.com" - name: Set up Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: ${{ matrix.go }} cache: false @@ -231,7 +231,7 @@ jobs: id: set-sha run: echo "sha=$(head -n1 internal/ui/VERSION | cut -d ' ' -f1)" >> "$GITHUB_OUTPUT" - name: Download UI artifact - uses: dawidd6/action-download-artifact@80620a5d27ce0ae443b965134db88467fc607b43 # v7 + uses: dawidd6/action-download-artifact@20319c5641d495c8a52e688b7dc5fada6c3a9fbc # v8 with: workflow: build-admin-ui.yaml commit: ${{ steps.set-sha.outputs.sha }} @@ -279,12 +279,12 @@ jobs: echo "RPM_PACKAGE=$(basename out/*.rpm)" >> "$GITHUB_ENV" echo "DEB_PACKAGE=$(basename out/*.deb)" >> "$GITHUB_ENV" - name: Upload RPM package - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: name: ${{ env.RPM_PACKAGE }} path: out/${{ env.RPM_PACKAGE }} - name: Upload DEB package - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: name: ${{ env.DEB_PACKAGE }} path: out/${{ env.DEB_PACKAGE }} @@ -309,7 +309,7 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: ${{ matrix.go }} cache: false @@ -331,7 +331,7 @@ jobs: id: set-sha run: echo "sha=$(head -n1 internal/ui/VERSION | cut -d ' ' -f1)" >> "$GITHUB_OUTPUT" - name: Download UI artifact - uses: dawidd6/action-download-artifact@80620a5d27ce0ae443b965134db88467fc607b43 # v7 + uses: dawidd6/action-download-artifact@20319c5641d495c8a52e688b7dc5fada6c3a9fbc # v8 with: workflow: build-admin-ui.yaml commit: ${{ steps.set-sha.outputs.sha }} diff --git a/.github/workflows/enos-run.yml b/.github/workflows/enos-run.yml index b042c88190..f7639a9349 100644 --- a/.github/workflows/enos-run.yml +++ b/.github/workflows/enos-run.yml @@ -38,7 +38,7 @@ jobs: with: fetch-depth: '0' - name: Set up Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: ${{ inputs.go-version }} cache: false @@ -110,7 +110,7 @@ jobs: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: ${{ inputs.go-version }} cache: false @@ -234,7 +234,7 @@ jobs: run: | mv ${{ steps.download-docker.outputs.download-path }}/*.tar enos/support/boundary_docker_image.tar - name: Set up Node.js - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 if: contains(matrix.filter, 'e2e_ui') with: node-version: '16.x' @@ -282,7 +282,7 @@ jobs: SCENARIO=$(echo "${{ matrix.filter }}" | cut -d' ' -f1,3 | sed 's/:/_/g') echo fragment="${SCENARIO}" >> "$GITHUB_OUTPUT" - name: Upload e2e tests output - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: name: test-${{ steps.split.outputs.fragment }} path: enos/*.log @@ -295,7 +295,7 @@ jobs: docker logs database - name: Upload e2e UI tests debug info if: contains(matrix.filter, 'e2e_ui') && steps.run.outcome == 'failure' - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: name: test-e2e-ui-debug path: enos/support/src/boundary-ui/ui/admin/tests/e2e/artifacts/test-failures @@ -308,7 +308,7 @@ jobs: enos scenario launch --timeout 60m0s --chdir ./enos ${{ matrix.filter }} - name: Upload Debug Data if: ${{ always() && steps.run_retry.outcome == 'failure' }} - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: # The name of the artifact is the same as the matrix scenario name with the spaces replaced with underscores and colons replaced by equals. name: ${{ steps.prepare_scenario.outputs.debug_data_artifact_name }} diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml index d78287e8fa..743a0e6217 100644 --- a/.github/workflows/fuzz.yml +++ b/.github/workflows/fuzz.yml @@ -42,14 +42,14 @@ jobs: run: | echo "Building with Go $(cat .go-version)" echo "go-version=$(cat .go-version)" >> "$GITHUB_OUTPUT" - - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: "${{ steps.get-go-version.outputs.go-version }}" - shell: bash run: go test ./internal/perms -fuzz=FuzzParse -fuzztime=30s - name: Upload fuzz failure seed corpus as run artifact if: failure() - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: name: fuzz-corpus path: ./internal/perms/testdata/fuzz diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 2accb79d60..c7a0fe7468 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -24,7 +24,7 @@ jobs: echo "Building with Go $(cat .go-version)" echo "go-version=$(cat .go-version)" >> "$GITHUB_OUTPUT" - name: Set up Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: "${{ steps.get-go-version.outputs.go-version }}" - name: Install Dependencies diff --git a/.github/workflows/make-gen-delta.yml b/.github/workflows/make-gen-delta.yml index 9ab0d99daf..9f0eed44b4 100644 --- a/.github/workflows/make-gen-delta.yml +++ b/.github/workflows/make-gen-delta.yml @@ -23,7 +23,7 @@ jobs: echo "Building with Go $(cat .go-version)" echo "go-version=$(cat .go-version)" >> "$GITHUB_OUTPUT" - name: Set up Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: "${{ steps.get-go-version.outputs.go-version }}" - name: Running go mod tidy diff --git a/.github/workflows/security-scan.yml b/.github/workflows/security-scan.yml index e5d7806711..999a92f83d 100644 --- a/.github/workflows/security-scan.yml +++ b/.github/workflows/security-scan.yml @@ -28,7 +28,7 @@ jobs: echo "go-version=$(cat .go-version)" >> "$GITHUB_OUTPUT" - name: Set up Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: "${{ steps.get-go-version.outputs.go-version }}" cache: false @@ -79,7 +79,7 @@ jobs: repository: "$PWD" - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@3096afedf9873361b2b2f65e1445b13272c83eb8 # codeql-bundle-v2.20.0 + uses: github/codeql-action/upload-sarif@7e3036b9cd87fc26dd06747b7aa4b96c27aaef3a # codeql-bundle-v2.20.3 with: sarif_file: results.sarif diff --git a/.github/workflows/test-cli-ui_oss.yml b/.github/workflows/test-cli-ui_oss.yml index 93c651bca3..bba9a2dad5 100644 --- a/.github/workflows/test-cli-ui_oss.yml +++ b/.github/workflows/test-cli-ui_oss.yml @@ -36,7 +36,7 @@ jobs: path: /tmp/bats-cli-ui-deps key: enos-bats-cli-ui-deps-jq-1.6-password-store-1.7.4-vault-1.12.2 - name: Set up Node for Bats install - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 with: node-version: 16 - name: Install Bats via NPM diff --git a/.github/workflows/test-race.yml b/.github/workflows/test-race.yml index a31c78962f..12d47c29bb 100644 --- a/.github/workflows/test-race.yml +++ b/.github/workflows/test-race.yml @@ -36,7 +36,7 @@ jobs: echo "Building with Go $(cat .go-version)" echo "go-version=$(cat .go-version)" >> "$GITHUB_OUTPUT" - name: Set up Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: "${{ steps.get-go-version.outputs.go-version }}" cache: false @@ -95,7 +95,7 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: "${{ needs.setup.outputs.go-version }}" cache: false @@ -127,7 +127,7 @@ jobs: ulimit -Ha - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: "${{ needs.setup.outputs.go-version }}" cache: false diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f2dc8563e0..cdc39c8506 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,7 +36,7 @@ jobs: echo "Building with Go $(cat .go-version)" echo "go-version=$(cat .go-version)" >> "$GITHUB_OUTPUT" - name: Set up Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: "${{ steps.get-go-version.outputs.go-version }}" cache: false @@ -95,7 +95,7 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: "${{ needs.setup.outputs.go-version }}" cache: false @@ -127,7 +127,7 @@ jobs: ulimit -Ha - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: "${{ needs.setup.outputs.go-version }}" cache: false From 3ab6828a83a8ac48d00c83c66c2b11a11dd9e2de Mon Sep 17 00:00:00 2001 From: Elim Tsiagbey Date: Tue, 11 Feb 2025 14:44:09 -0500 Subject: [PATCH 22/70] chore: bump sdk & api deps (#5539) Post-release step: Bump`sdk` and `api` based off `0.19.0` release --- go.mod | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 89f56b1f5e..279d0e6954 100644 --- a/go.mod +++ b/go.mod @@ -16,8 +16,8 @@ require ( github.com/google/go-cmp v0.6.0 github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 - github.com/hashicorp/boundary/api v0.0.50 - github.com/hashicorp/boundary/sdk v0.0.48 + github.com/hashicorp/boundary/api v0.0.54 + github.com/hashicorp/boundary/sdk v0.0.50 github.com/hashicorp/cap v0.5.1-0.20240315182732-faa330bfb8df github.com/hashicorp/dawdle v0.5.0 github.com/hashicorp/eventlogger v0.2.9 From c5939432093bfc663a1e7918c5ef2879fb9fb51a Mon Sep 17 00:00:00 2001 From: Johan Brandhorst-Satzkorn Date: Tue, 11 Feb 2025 15:50:40 -0800 Subject: [PATCH 23/70] docs/client-agent: add warning about MacOS 15 (#5543) * docs/client-agent: add warning about MacOS 15 MacOS 15.3 has been known to sometimes block users from using the client agent altogether. Explicitly allowing it access to incoming network connections resolves the issue. * Update website/content/docs/api-clients/client-agent.mdx Co-authored-by: Robin Beck --------- Co-authored-by: Robin Beck --- website/content/docs/api-clients/client-agent.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/website/content/docs/api-clients/client-agent.mdx b/website/content/docs/api-clients/client-agent.mdx index e8556fab31..461e50c97a 100644 --- a/website/content/docs/api-clients/client-agent.mdx +++ b/website/content/docs/api-clients/client-agent.mdx @@ -521,6 +521,10 @@ Follow the troubleshooting steps to understand why the Client Agent is not able On MacOS versions 15.1 and 15.2, the firewall may incorrectly block the Client Agent from sending DNS responses. To resolve this issue, upgrade to MacOS version 15.3 or later. +It may be neccessary to explicitly allow the `boundary-client-agent` process access to incoming network connections. + +From the Firewall options in System Settings, toggle the `boundary-client-agent' to **Allow incoming connections**. + #### WARNING! Remote host indentification has changed! It is possible that someone is doing something nasty! This error arises when you use an alias to connect to an SSH target after the first successful connection using that alias. The issue occurs because Boundary workers generate a new host key on every new SSH connection. You can safely ignore the warning using the `StrictHostKeyChecking=no` command line option: From d001e82817e1f68664e16f91b40c073a191c95e4 Mon Sep 17 00:00:00 2001 From: Aditya Sharma <51014728+aditya2548@users.noreply.github.com> Date: Thu, 13 Feb 2025 17:14:18 +0000 Subject: [PATCH 24/70] docs: Fixes examples for alias_refresh_interval & dns_request_timeout (#5544) * docs: Fixes examples for alias_refresh_interval & dns_request_timeout * Update website/content/docs/api-clients/client-agent.mdx Co-authored-by: Michael Li --------- Co-authored-by: Robin Beck Co-authored-by: Michael Li --- website/content/docs/api-clients/client-agent.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/content/docs/api-clients/client-agent.mdx b/website/content/docs/api-clients/client-agent.mdx index 461e50c97a..bd21da98cc 100644 --- a/website/content/docs/api-clients/client-agent.mdx +++ b/website/content/docs/api-clients/client-agent.mdx @@ -99,14 +99,14 @@ The configuration file contains the following fields: Example: ```hcl - alias_refresh_interval=60s + alias_refresh_interval="60s" ``` - `dns_request_timeout` - Specifies for how long the Client Agent DNS request handling, including any recursion, is allowed to run before it is canceled. Example: ```hcl - dns_request_timeout=300s + dns_request_timeout="300s" ``` - `interface_to_use` - Specifies the interface to use instead of the default. @@ -523,7 +523,7 @@ upgrade to MacOS version 15.3 or later. It may be neccessary to explicitly allow the `boundary-client-agent` process access to incoming network connections. -From the Firewall options in System Settings, toggle the `boundary-client-agent' to **Allow incoming connections**. +From the Firewall options in System Settings, toggle the `boundary-client-agent` to **Allow incoming connections**. #### WARNING! Remote host indentification has changed! It is possible that someone is doing something nasty! From 99f4bc092fd911dfe489825c51205d67bc97b544 Mon Sep 17 00:00:00 2001 From: Johan Brandhorst-Satzkorn Date: Wed, 19 Feb 2025 09:14:41 -0800 Subject: [PATCH 25/70] Update go-plugin dep (#5552) * mod: remove unnecessary import groupings Move all imports into one of two groupings: 1. Direct dependencies 2. Indirect dependencies This is the standard used by the go tool. The old groupings seemed very random. * mod: update go-plugin dependency --- api/go.mod | 9 +- api/go.sum | 22 +- go.mod | 131 ++- go.sum | 26 +- internal/alias/target/store/alias.pb.go | 35 +- internal/auth/ldap/store/ldap.pb.go | 370 ++------ internal/auth/oidc/request/request.pb.go | 93 +- internal/auth/oidc/store/oidc.pb.go | 312 ++----- internal/auth/password/store/argon2.pb.go | 66 +- internal/auth/password/store/password.pb.go | 93 +- internal/auth/store/account.pb.go | 35 +- internal/auth/store/auth_method.pb.go | 66 +- internal/authtoken/store/authtoken.pb.go | 35 +- internal/bsr/gen/ssh/v1/ssh_chunks.pb.go | 573 +++--------- internal/credential/static/store/static.pb.go | 126 +-- internal/credential/store/credential.pb.go | 157 +--- internal/credential/vault/store/vault.pb.go | 244 ++--- internal/db/db_test/db_test.pb.go | 190 +--- internal/db/timestamp/timestamp.pb.go | 33 +- internal/gen/controller/api/empty_msg.pb.go | 30 +- internal/gen/controller/api/error.pb.go | 126 +-- .../api/services/account_service.pb.go | 425 +++------ .../api/services/alias_service.pb.go | 305 ++---- .../api/services/auth_method_service.pb.go | 651 ++++--------- .../api/services/authtokens_service.pb.go | 183 +--- .../api/services/billing_service.pb.go | 64 +- .../services/credential_library_service.pb.go | 303 ++---- .../api/services/credential_service.pb.go | 303 ++---- .../services/credential_store_service.pb.go | 305 ++---- .../gen/controller/api/services/doc.pb.go | 2 +- .../api/services/group_service.pb.go | 499 +++------- .../api/services/host_catalog_service.pb.go | 309 ++----- .../api/services/host_service.pb.go | 305 ++---- .../api/services/host_set_service.pb.go | 491 +++------- .../gen/controller/api/services/list.pb.go | 148 +-- .../api/services/managed_group_service.pb.go | 303 ++---- .../api/services/policy_service.pb.go | 309 ++----- .../api/services/role_service.pb.go | 871 +++++------------- .../api/services/scope_service.pb.go | 672 ++++---------- .../services/session_recording_service.pb.go | 276 ++---- .../api/services/session_service.pb.go | 190 +--- .../api/services/storage_bucket_service.pb.go | 309 ++----- .../api/services/target_service.pb.go | 727 ++++----------- .../api/services/user_service.pb.go | 567 +++--------- .../api/services/worker_service.pb.go | 669 ++++---------- internal/gen/controller/auth/auth.pb.go | 35 +- internal/gen/controller/servers/servers.pb.go | 66 +- .../servers/services/credential.pb.go | 152 +-- .../server_coordination_service.pb.go | 651 ++++--------- .../servers/services/session_service.pb.go | 450 +++------ .../services/upstream_message_service.pb.go | 164 ++-- internal/gen/controller/tokens/tokens.pb.go | 35 +- internal/gen/errors/errors.pb.go | 92 +- .../gen/ops/services/health_service.pb.go | 64 +- .../gen/testing/attribute/attribute.pb.go | 816 +++++----------- internal/gen/testing/event/event.pb.go | 66 +- .../gen/testing/interceptor/greeter.pb.go | 62 +- .../gen/testing/protooptions/service.pb.go | 62 +- .../gen/worker/health/health_service.pb.go | 35 +- .../servers/services/host_service.pb.go | 542 +++-------- internal/host/plugin/store/host.pb.go | 157 +--- internal/host/static/store/static.pb.go | 190 +--- internal/host/store/host.pb.go | 190 +--- internal/iam/store/group.pb.go | 35 +- internal/iam/store/group_member.pb.go | 64 +- internal/iam/store/principal_role.pb.go | 126 +-- internal/iam/store/role.pb.go | 35 +- internal/iam/store/role_grant.pb.go | 33 +- internal/iam/store/role_grant_scope.pb.go | 33 +- internal/iam/store/scope.pb.go | 62 +- internal/iam/store/user.pb.go | 33 +- internal/kms/store/audit_key.pb.go | 66 +- .../data_key_version_destruction_job.pb.go | 35 +- ...key_version_destruction_job_progress.pb.go | 35 +- ...data_key_version_destruction_job_run.pb.go | 35 +- ...struction_job_run_allowed_table_name.pb.go | 35 +- internal/kms/store/database_key.pb.go | 66 +- internal/kms/store/oidc_key.pb.go | 66 +- internal/kms/store/oplog_key.pb.go | 66 +- internal/kms/store/root_key.pb.go | 66 +- internal/kms/store/session_key.pb.go | 66 +- internal/kms/store/token_key.pb.go | 66 +- internal/oplog/any_operation.pb.go | 322 +++---- internal/oplog/oplog_test/oplog_test.pb.go | 138 +-- internal/oplog/store/oplog.pb.go | 97 +- internal/plugin/store/plugin.pb.go | 35 +- internal/policy/storage/store/policy.pb.go | 35 +- internal/policy/store/policy.pb.go | 35 +- internal/scheduler/job/store/job.pb.go | 64 +- internal/server/store/controller.pb.go | 35 +- internal/server/store/root_certificate.pb.go | 66 +- internal/server/store/worker.pb.go | 186 +--- internal/server/store/worker_auth.pb.go | 97 +- internal/storage/plugin/store/storage.pb.go | 122 +-- internal/target/store/target.pb.go | 219 ++--- internal/target/targettest/store/target.pb.go | 33 +- internal/target/tcp/store/target.pb.go | 33 +- plugins/boundary/mains/aws/go.mod | 10 +- plugins/boundary/mains/aws/go.sum | 20 +- plugins/boundary/mains/azure/go.mod | 11 +- plugins/boundary/mains/azure/go.sum | 22 +- plugins/boundary/mains/gcp/go.mod | 11 +- plugins/boundary/mains/gcp/go.sum | 22 +- plugins/boundary/mains/minio/go.mod | 7 +- plugins/boundary/mains/minio/go.sum | 14 +- plugins/kms/mains/alicloudkms/go.mod | 9 +- plugins/kms/mains/alicloudkms/go.sum | 18 +- plugins/kms/mains/awskms/go.mod | 9 +- plugins/kms/mains/awskms/go.sum | 18 +- plugins/kms/mains/azurekeyvault/go.mod | 11 +- plugins/kms/mains/azurekeyvault/go.sum | 22 +- plugins/kms/mains/gcpckms/go.mod | 11 +- plugins/kms/mains/gcpckms/go.sum | 22 +- plugins/kms/mains/ocikms/go.mod | 9 +- plugins/kms/mains/ocikms/go.sum | 18 +- plugins/kms/mains/transit/go.mod | 11 +- plugins/kms/mains/transit/go.sum | 22 +- sdk/go.mod | 38 +- sdk/go.sum | 22 +- .../api/resources/accounts/account.pb.go | 154 +--- .../api/resources/aliases/alias.pb.go | 113 +-- .../resources/authmethods/auth_method.pb.go | 307 ++---- .../api/resources/authtokens/authtoken.pb.go | 33 +- .../api/resources/billing/billing.pb.go | 35 +- .../credential_library.pb.go | 127 +-- .../resources/credentials/credential.pb.go | 156 +--- .../credentialstores/credential_store.pb.go | 86 +- .../api/resources/groups/group.pb.go | 64 +- .../resources/hostcatalogs/host_catalog.pb.go | 49 +- .../controller/api/resources/hosts/host.pb.go | 84 +- .../api/resources/hostsets/host_set.pb.go | 47 +- .../managedgroups/managed_group.pb.go | 121 +-- .../api/resources/plugins/plugin.pb.go | 35 +- .../api/resources/policies/policy.pb.go | 146 +-- .../controller/api/resources/roles/role.pb.go | 126 +-- .../api/resources/scopes/scope.pb.go | 157 +--- .../session_recording.pb.go | 723 +++++---------- .../api/resources/sessions/session.pb.go | 97 +- .../storagebuckets/storage_bucket.pb.go | 64 +- .../api/resources/targets/target.pb.go | 483 +++------- .../controller/api/resources/users/user.pb.go | 64 +- .../api/resources/workers/worker.pb.go | 163 +--- sdk/pbs/controller/protooptions/options.pb.go | 117 +-- sdk/pbs/controller/protooptions/testing.pb.go | 249 ++--- sdk/pbs/plugin/host_plugin_service.pb.go | 604 +++--------- sdk/pbs/plugin/storage_plugin_service.pb.go | 579 +++--------- sdk/pbs/proxy/proxy.pb.go | 64 +- 147 files changed, 6438 insertions(+), 17293 deletions(-) diff --git a/api/go.mod b/api/go.mod index ec6ee8d787..1739e13e9e 100644 --- a/api/go.mod +++ b/api/go.mod @@ -20,7 +20,7 @@ require ( go.uber.org/atomic v1.11.0 golang.org/x/time v0.3.0 google.golang.org/grpc v1.61.0 - google.golang.org/protobuf v1.34.2 + google.golang.org/protobuf v1.36.1 nhooyr.io/websocket v1.8.10 ) @@ -31,6 +31,7 @@ require ( github.com/hashicorp/eventlogger v0.2.6-0.20231025104552-802587e608f0 // indirect github.com/hashicorp/eventlogger/filters/encrypt v0.1.8-0.20231025104552-802587e608f0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect github.com/hashicorp/go-sockaddr v1.0.5 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect @@ -38,9 +39,9 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect - golang.org/x/crypto v0.31.0 // indirect - golang.org/x/net v0.33.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.29.0 // indirect google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/api/go.sum b/api/go.sum index 3fa1f52c5a..86ba6e910f 100644 --- a/api/go.sum +++ b/api/go.sum @@ -44,8 +44,8 @@ github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 h1:WZeXfD26QMWYC35at25KgE021SF9L github.com/hashicorp/go-kms-wrapping/v2 v2.0.16/go.mod h1:ZiKZctjRTLEppuRwrttWkp71VYMbTTCkazK4xT7U/NQ= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= -github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= @@ -103,8 +103,6 @@ github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa1 github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -143,8 +141,8 @@ go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= @@ -154,15 +152,15 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= @@ -189,8 +187,8 @@ google.golang.org/grpc v1.61.0 h1:TOvOcuXn30kRao+gfcvsebNEa5iZIiLkisYEkf7R7o0= google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= 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.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= diff --git a/go.mod b/go.mod index 279d0e6954..961585fac9 100644 --- a/go.mod +++ b/go.mod @@ -7,26 +7,36 @@ replace github.com/hashicorp/boundary/api => ./api replace github.com/hashicorp/boundary/sdk => ./sdk require ( + github.com/DATA-DOG/go-sqlmock v1.5.2 + github.com/cenkalti/backoff/v4 v4.2.1 + github.com/creack/pty v1.1.21 + github.com/docker/docker v27.1.1+incompatible github.com/fatih/color v1.17.0 github.com/fatih/structs v1.1.0 github.com/favadi/protoc-go-inject-tag v1.4.0 - github.com/godbus/dbus/v5 v5.1.0 // indirect + github.com/glebarez/sqlite v1.10.0 github.com/golang-migrate/migrate/v4 v4.17.0 github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 + github.com/golang/protobuf v1.5.3 github.com/google/go-cmp v0.6.0 github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 github.com/hashicorp/boundary/api v0.0.54 github.com/hashicorp/boundary/sdk v0.0.50 github.com/hashicorp/cap v0.5.1-0.20240315182732-faa330bfb8df + github.com/hashicorp/cap/ldap v0.0.0-20240206183135-ed8f24513744 github.com/hashicorp/dawdle v0.5.0 + github.com/hashicorp/dbassert v0.0.0-20231012105025-1bc1bd88e22b github.com/hashicorp/eventlogger v0.2.9 github.com/hashicorp/eventlogger/filters/encrypt v0.1.8-0.20231208142215-efdb51ec090d github.com/hashicorp/go-bexpr v0.1.13 github.com/hashicorp/go-cleanhttp v0.5.2 + github.com/hashicorp/go-dbw v0.1.5-0.20240909162114-6cee92b3da36 github.com/hashicorp/go-hclog v1.6.3 + github.com/hashicorp/go-kms-wrapping/extras/kms/v2 v2.0.0-20241126174344-f3b1a41a15fd github.com/hashicorp/go-kms-wrapping/v2 v2.0.17-0.20240313190905-91d44aa8e360 github.com/hashicorp/go-multierror v1.1.1 + github.com/hashicorp/go-rate v0.0.0-20231204194614-cc8d401f70ab github.com/hashicorp/go-retryablehttp v0.7.7 github.com/hashicorp/go-rootcerts v1.0.2 github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 @@ -37,19 +47,28 @@ require ( github.com/hashicorp/go-secure-stdlib/mlock v0.1.3 github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 github.com/hashicorp/go-secure-stdlib/password v0.1.3 + github.com/hashicorp/go-secure-stdlib/permitpool v1.0.0 github.com/hashicorp/go-secure-stdlib/pluginutil/v2 v2.0.6 github.com/hashicorp/go-secure-stdlib/reloadutil v0.1.1 github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 github.com/hashicorp/go-sockaddr v1.0.6 github.com/hashicorp/go-uuid v1.0.3 + github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl v1.0.1-vault-5 + github.com/hashicorp/mql v0.1.3 + github.com/hashicorp/nodeenrollment v0.2.13 github.com/hashicorp/vault/api v1.12.0 github.com/iancoleman/strcase v0.3.0 github.com/jackc/pgconn v1.14.3 + github.com/jackc/pgx/v5 v5.6.0 github.com/jefferai/keyring v1.1.7-0.20220316160357-58a74bb55891 + github.com/jimlambrt/gldap v0.1.10 + github.com/kelseyhightower/envconfig v1.4.0 github.com/kr/pretty v0.3.1 github.com/kr/text v0.2.0 github.com/mattn/go-colorable v0.1.13 + github.com/miekg/dns v1.1.58 + github.com/mikesmitty/edkey v0.0.0-20170222072505-3356ea4e686a github.com/mitchellh/cli v1.1.5 github.com/mitchellh/copystructure v1.2.0 github.com/mitchellh/go-wordwrap v1.0.1 @@ -59,88 +78,34 @@ require ( github.com/oligot/go-mod-upgrade v0.9.1 github.com/ory/dockertest/v3 v3.10.0 github.com/pires/go-proxyproto v0.7.0 - github.com/pkg/errors v0.9.1 // indirect github.com/posener/complete v1.2.3 github.com/prometheus/client_golang v1.18.0 github.com/ryanuber/go-glob v1.0.0 + github.com/sevlyar/go-daemon v0.1.6 github.com/stretchr/testify v1.10.0 github.com/zalando/go-keyring v0.2.3 go.uber.org/atomic v1.11.0 - golang.org/x/crypto v0.31.0 + golang.org/x/crypto v0.32.0 + golang.org/x/exp v0.0.0-20240205201215-2c58cdc269a3 + golang.org/x/net v0.34.0 golang.org/x/sync v0.10.0 - golang.org/x/sys v0.28.0 - golang.org/x/term v0.27.0 + golang.org/x/sys v0.29.0 + golang.org/x/term v0.28.0 + golang.org/x/text v0.21.0 golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d google.golang.org/genproto v0.0.0-20240205150955-31a09d347014 + google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014 google.golang.org/grpc v1.61.1 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 - google.golang.org/protobuf v1.34.2 + google.golang.org/protobuf v1.36.1 + gopkg.in/natefinch/lumberjack.v2 v2.2.1 gorm.io/driver/postgres v1.5.9 - gorm.io/gorm v1.25.11 // indirect mvdan.cc/gofumpt v0.5.0 nhooyr.io/websocket v1.8.10 ) -require github.com/hashicorp/go-dbw v0.1.5-0.20240909162114-6cee92b3da36 - -require ( - github.com/DATA-DOG/go-sqlmock v1.5.2 - github.com/cenkalti/backoff/v4 v4.2.1 - github.com/creack/pty v1.1.21 - github.com/glebarez/sqlite v1.10.0 - github.com/golang/protobuf v1.5.3 - github.com/hashicorp/cap/ldap v0.0.0-20240206183135-ed8f24513744 - github.com/hashicorp/dbassert v0.0.0-20231012105025-1bc1bd88e22b - github.com/hashicorp/go-kms-wrapping/extras/kms/v2 v2.0.0-20241126174344-f3b1a41a15fd - github.com/hashicorp/go-rate v0.0.0-20231204194614-cc8d401f70ab - github.com/hashicorp/go-secure-stdlib/permitpool v1.0.0 - github.com/hashicorp/go-version v1.6.0 - github.com/hashicorp/nodeenrollment v0.2.13 - github.com/jackc/pgx/v5 v5.6.0 - github.com/jimlambrt/gldap v0.1.10 - github.com/kelseyhightower/envconfig v1.4.0 - github.com/miekg/dns v1.1.58 - github.com/mikesmitty/edkey v0.0.0-20170222072505-3356ea4e686a - github.com/sevlyar/go-daemon v0.1.6 - golang.org/x/exp v0.0.0-20240205201215-2c58cdc269a3 - golang.org/x/net v0.33.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014 -) - -require ( - github.com/dustin/go-humanize v1.0.1 // indirect - github.com/mattn/go-sqlite3 v1.14.22 // indirect - github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect - modernc.org/libc v1.41.0 // indirect - modernc.org/mathutil v1.6.0 // indirect - modernc.org/memory v1.7.2 // indirect - modernc.org/sqlite v1.28.0 // indirect -) - require ( dario.cat/mergo v1.0.0 // indirect - github.com/containerd/log v0.1.0 // indirect - github.com/distribution/reference v0.5.0 // indirect - github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/glebarez/go-sqlite v1.22.0 // indirect - github.com/go-logr/logr v1.4.1 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/jackc/puddle/v2 v2.2.1 // indirect - github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect - github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/moby/docker-image-spec v1.3.1 // indirect - github.com/moby/sys/user v0.1.0 // indirect - github.com/ncruces/go-strftime v0.1.9 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.48.0 // indirect - go.opentelemetry.io/otel v1.23.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.23.1 // indirect - go.opentelemetry.io/otel/metric v1.23.1 // indirect - go.opentelemetry.io/otel/sdk v1.23.1 // indirect - go.opentelemetry.io/otel/trace v1.23.1 // indirect - gorm.io/driver/sqlite v1.5.6 // indirect -) - -require ( github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/AlecAivazis/survey/v2 v2.3.2 // indirect github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect @@ -160,27 +125,33 @@ require ( github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/continuity v0.4.3 // indirect + github.com/containerd/log v0.1.0 // indirect github.com/coreos/go-oidc/v3 v3.9.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect github.com/danieljoos/wincred v1.2.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/distribution/reference v0.5.0 // indirect github.com/docker/cli v25.0.3+incompatible // indirect - github.com/docker/docker v27.1.1+incompatible github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.6.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/glebarez/go-sqlite v1.22.0 // indirect github.com/go-asn1-ber/asn1-ber v1.5.5 // indirect github.com/go-jose/go-jose/v3 v3.0.3 // indirect github.com/go-ldap/ldap/v3 v3.4.6 // indirect + github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-kms-wrapping/plugin/v2 v2.0.7 // indirect - github.com/hashicorp/go-plugin v1.6.0 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-secure-stdlib/temperror v0.1.1 // indirect github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.3 // indirect - github.com/hashicorp/mql v0.1.3 github.com/hashicorp/vault/sdk v0.11.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/huandu/xstrings v1.4.0 // indirect @@ -190,27 +161,35 @@ require ( github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgproto3/v2 v2.3.3 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/puddle/v2 v2.2.1 // indirect github.com/jefferai/go-libsecret v0.0.0-20210525195240-b53481abef97 // indirect github.com/jefferai/isbadcipher v0.0.0-20190226160619-51d2077c035f // indirect github.com/jinzhu/gorm v1.9.16 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect + github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/lib/pq v1.10.9 // indirect github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-sqlite3 v1.14.22 // indirect github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/moby/docker-image-spec v1.3.1 // indirect + github.com/moby/sys/user v0.1.0 // indirect github.com/moby/term v0.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect + github.com/ncruces/go-strftime v0.1.9 // indirect github.com/oklog/run v1.1.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc6 // indirect github.com/opencontainers/runc v1.2.0-rc.3 // indirect + github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.5.0 // indirect github.com/prometheus/common v0.46.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sethvargo/go-diceware v0.3.0 // indirect @@ -222,13 +201,23 @@ require ( github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect github.com/xo/dburl v0.23.1 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.48.0 // indirect + go.opentelemetry.io/otel v1.23.1 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.23.1 // indirect + go.opentelemetry.io/otel/metric v1.23.1 // indirect + go.opentelemetry.io/otel/sdk v1.23.1 // indirect + go.opentelemetry.io/otel/trace v1.23.1 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/oauth2 v0.17.0 // indirect - golang.org/x/text v0.21.0 golang.org/x/time v0.5.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240205150955-31a09d347014 // indirect - gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + gorm.io/driver/sqlite v1.5.6 // indirect + gorm.io/gorm v1.25.11 // indirect + modernc.org/libc v1.41.0 // indirect + modernc.org/mathutil v1.6.0 // indirect + modernc.org/memory v1.7.2 // indirect + modernc.org/sqlite v1.28.0 // indirect ) diff --git a/go.sum b/go.sum index c91a9f0bf3..d9cbcb0975 100644 --- a/go.sum +++ b/go.sum @@ -214,8 +214,8 @@ github.com/hashicorp/go-kms-wrapping/v2 v2.0.17-0.20240313190905-91d44aa8e360/go github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= -github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-rate v0.0.0-20231204194614-cc8d401f70ab h1:XIeGyyCCS80b5MKfU4E6ioLocIYtT4FmfdNH0uNYQi8= github.com/hashicorp/go-rate v0.0.0-20231204194614-cc8d401f70ab/go.mod h1:uTQC66EFZuSKunHYx0hHIfdH3nhRrv7UOOE8Ug0yI0A= github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= @@ -378,8 +378,6 @@ github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa1 github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -549,8 +547,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240205201215-2c58cdc269a3 h1:/RIbNt/Zr7rVhIkQhooTxCxFcdWLGIKnZA4IXNFSrvo= golang.org/x/exp v0.0.0-20240205201215-2c58cdc269a3/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08= @@ -585,8 +583,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= 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.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= @@ -627,8 +625,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -637,8 +635,8 @@ 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.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= -golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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= @@ -696,8 +694,8 @@ google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y= 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.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/internal/alias/target/store/alias.pb.go b/internal/alias/target/store/alias.pb.go index ac666cc84b..4ed6773066 100644 --- a/internal/alias/target/store/alias.pb.go +++ b/internal/alias/target/store/alias.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/alias/target/store/v1/alias.proto @@ -26,10 +26,7 @@ const ( ) type Alias struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is used to access the auth token via an API // @inject_tag: gorm:"primary_key" PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -66,16 +63,16 @@ type Alias struct { // case then the authorize-session action will return an error when using // this alias. // @inject_tag: `gorm:"default:null"` - HostId string `protobuf:"bytes,10,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty" gorm:"default:null"` + HostId string `protobuf:"bytes,10,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Alias) Reset() { *x = Alias{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_alias_target_store_v1_alias_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_alias_target_store_v1_alias_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Alias) String() string { @@ -86,7 +83,7 @@ func (*Alias) ProtoMessage() {} func (x *Alias) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_alias_target_store_v1_alias_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -260,20 +257,6 @@ func file_controller_storage_alias_target_store_v1_alias_proto_init() { if File_controller_storage_alias_target_store_v1_alias_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_alias_target_store_v1_alias_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Alias); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/auth/ldap/store/ldap.pb.go b/internal/auth/ldap/store/ldap.pb.go index 130a7eac76..1c5705c085 100644 --- a/internal/auth/ldap/store/ldap.pb.go +++ b/internal/auth/ldap/store/ldap.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/auth/ldap/store/v1/ldap.proto @@ -29,10 +29,7 @@ const ( // AuthMethod represents an LDAP auth method. type AuthMethod struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is the PK and is the external public identifier of the auth // method. // @inject_tag: `gorm:"primary_key"` @@ -191,15 +188,15 @@ type AuthMethod struct { // resolution. // @inject_tag: `gorm:"-"` DereferenceAliases string `protobuf:"bytes,320,opt,name=dereference_aliases,json=dereferenceAliases,proto3" json:"dereference_aliases,omitempty" gorm:"-"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthMethod) Reset() { *x = AuthMethod{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthMethod) String() string { @@ -210,7 +207,7 @@ func (*AuthMethod) ProtoMessage() {} func (x *AuthMethod) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -459,10 +456,7 @@ func (x *AuthMethod) GetDereferenceAliases() string { // Url represents LDAP URLs that specify LDAP servers to connection to. There // must be at lease on URL for each LDAP auth method. type Url struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -478,16 +472,16 @@ type Url struct { // for ldap and a default of 689 is used for ldaps. (see rfc4516 for more // information about LDAP URLs) // @inject_tag: `gorm:"column:url;not_null"` - ServerUrl string `protobuf:"bytes,40,opt,name=server_url,json=serverUrl,proto3" json:"server_url,omitempty" gorm:"column:url;not_null"` + ServerUrl string `protobuf:"bytes,40,opt,name=server_url,json=serverUrl,proto3" json:"server_url,omitempty" gorm:"column:url;not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Url) Reset() { *x = Url{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Url) String() string { @@ -498,7 +492,7 @@ func (*Url) ProtoMessage() {} func (x *Url) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -544,10 +538,7 @@ func (x *Url) GetServerUrl() string { // UserEntrySearchConf represent a set of optional configuration fields used to // search for user entries. type UserEntrySearchConf struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -568,16 +559,16 @@ type UserEntrySearchConf struct { // (userPrincipalName={{.Username}}@UPNDomain) if the upndomain parameter is // set. // @inject_tag: `gorm:"default:null"` - UserFilter string `protobuf:"bytes,50,opt,name=user_filter,json=userFilter,proto3" json:"user_filter,omitempty" gorm:"default:null"` + UserFilter string `protobuf:"bytes,50,opt,name=user_filter,json=userFilter,proto3" json:"user_filter,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UserEntrySearchConf) Reset() { *x = UserEntrySearchConf{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UserEntrySearchConf) String() string { @@ -588,7 +579,7 @@ func (*UserEntrySearchConf) ProtoMessage() {} func (x *UserEntrySearchConf) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -641,10 +632,7 @@ func (x *UserEntrySearchConf) GetUserFilter() string { // GroupEntrySearchConf represent a set of optional configuration fields used to // search for group entries. type GroupEntrySearchConf struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -667,16 +655,16 @@ type GroupEntrySearchConf struct { // (|(memberUid={{.Username}})(member={{.UserDN}})(uniqueMember={{.UserDN}})), // which is compatible with several common directory schemas. // @inject_tag: `gorm:"default:null"` - GroupFilter string `protobuf:"bytes,50,opt,name=group_filter,json=groupFilter,proto3" json:"group_filter,omitempty" gorm:"default:null"` + GroupFilter string `protobuf:"bytes,50,opt,name=group_filter,json=groupFilter,proto3" json:"group_filter,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GroupEntrySearchConf) Reset() { *x = GroupEntrySearchConf{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GroupEntrySearchConf) String() string { @@ -687,7 +675,7 @@ func (*GroupEntrySearchConf) ProtoMessage() {} func (x *GroupEntrySearchConf) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -743,10 +731,7 @@ func (x *GroupEntrySearchConf) GetGroupFilter() string { // trust anchors when connecting to the auth method's ldap provider (instead of // the host system's cert chain). type Certificate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -755,16 +740,16 @@ type Certificate struct { LdapMethodId string `protobuf:"bytes,20,opt,name=ldap_method_id,json=ldapMethodId,proto3" json:"ldap_method_id,omitempty" gorm:"primary_key"` // certificate is a PEM encoded x509 in ASN.1 DER form. // @inject_tag: `gorm:"column:certificate;primary_key"` - Cert string `protobuf:"bytes,30,opt,name=cert,proto3" json:"cert,omitempty" gorm:"column:certificate;primary_key"` + Cert string `protobuf:"bytes,30,opt,name=cert,proto3" json:"cert,omitempty" gorm:"column:certificate;primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Certificate) Reset() { *x = Certificate{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Certificate) String() string { @@ -775,7 +760,7 @@ func (*Certificate) ProtoMessage() {} func (x *Certificate) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -814,10 +799,7 @@ func (x *Certificate) GetCert() string { // ClientCertificate represent a set of optional configuration fields used for // specifying a mTLS client cert for LDAP connections. type ClientCertificate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -844,16 +826,16 @@ type ClientCertificate struct { // The key_id of the kms database key used for encrypting this entry. // It must be set. // @inject_tag: `gorm:"not_null"` - KeyId string `protobuf:"bytes,70,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + KeyId string `protobuf:"bytes,70,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ClientCertificate) Reset() { *x = ClientCertificate{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ClientCertificate) String() string { @@ -864,7 +846,7 @@ func (*ClientCertificate) ProtoMessage() {} func (x *ClientCertificate) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -932,10 +914,7 @@ func (x *ClientCertificate) GetKeyId() string { // (aka authenticate) using the credentials provided when searching for the user // entry used to authenticate the end user. type BindCredential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -961,16 +940,16 @@ type BindCredential struct { // The key_id of the kms database key used for encrypting this entry. // It must be set. // @inject_tag: `gorm:"not_null"` - KeyId string `protobuf:"bytes,70,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + KeyId string `protobuf:"bytes,70,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BindCredential) Reset() { *x = BindCredential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BindCredential) String() string { @@ -981,7 +960,7 @@ func (*BindCredential) ProtoMessage() {} func (x *BindCredential) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1047,10 +1026,7 @@ func (x *BindCredential) GetKeyId() string { // Account respresent Accounts associated with an LDAP auth method. type Account struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is the PK and is the external public identifier of the account // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,10,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -1101,15 +1077,15 @@ type Account struct { // This attribute is updated every time a user successfully authenticates. // @inject_tag: `gorm:"default:null"` MemberOfGroups string `protobuf:"bytes,140,opt,name=member_of_groups,json=memberOfGroups,proto3" json:"member_of_groups,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Account) Reset() { *x = Account{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Account) String() string { @@ -1120,7 +1096,7 @@ func (*Account) ProtoMessage() {} func (x *Account) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1228,10 +1204,7 @@ func (x *Account) GetMemberOfGroups() string { // AccountAttributeMap entries are optional from/to account attribute maps. type AccountAttributeMap struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` LdapMethodId string `protobuf:"bytes,10,opt,name=ldap_method_id,json=ldapMethodId,proto3" json:"ldap_method_id,omitempty" gorm:"primary_key"` // from_attribute is the attribute from the user's entry that you need to map @@ -1244,16 +1217,16 @@ type AccountAttributeMap struct { ToAttribute string `protobuf:"bytes,30,opt,name=to_attribute,json=toAttribute,proto3" json:"to_attribute,omitempty" gorm:"column:to_attribute;primary_key"` // The create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,40,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,40,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AccountAttributeMap) Reset() { *x = AccountAttributeMap{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AccountAttributeMap) String() string { @@ -1264,7 +1237,7 @@ func (*AccountAttributeMap) ProtoMessage() {} func (x *AccountAttributeMap) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1310,10 +1283,7 @@ func (x *AccountAttributeMap) GetCreateTime() *timestamp.Timestamp { // DerefAliases represent aan optional configuration field used to // determine how to derefence aliases when searching ldap. type DerefAliases struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -1327,15 +1297,15 @@ type DerefAliases struct { // base. When set to "searching", it will dereference aliases after name // resolution. DereferenceAliases string `protobuf:"bytes,30,opt,name=dereference_aliases,json=dereferenceAliases,proto3" json:"dereference_aliases,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerefAliases) Reset() { *x = DerefAliases{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DerefAliases) String() string { @@ -1346,7 +1316,7 @@ func (*DerefAliases) ProtoMessage() {} func (x *DerefAliases) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1385,10 +1355,7 @@ func (x *DerefAliases) GetDereferenceAliases() string { // ManagedGroup entries provide an LDAP auth method implementation of managed // groups. type ManagedGroup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,10,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` // The create_time is set by the database. @@ -1410,16 +1377,16 @@ type ManagedGroup struct { AuthMethodId string `protobuf:"bytes,70,opt,name=auth_method_id,json=authMethodId,proto3" json:"auth_method_id,omitempty" gorm:"not_null"` // groups is json marshalled list of groups that make up the ManagedGroup // @inject_tag: `gorm:"not_null"` - GroupNames string `protobuf:"bytes,80,opt,name=group_names,json=groupNames,proto3" json:"group_names,omitempty" gorm:"not_null"` + GroupNames string `protobuf:"bytes,80,opt,name=group_names,json=groupNames,proto3" json:"group_names,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ManagedGroup) Reset() { *x = ManagedGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ManagedGroup) String() string { @@ -1430,7 +1397,7 @@ func (*ManagedGroup) ProtoMessage() {} func (x *ManagedGroup) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1504,10 +1471,7 @@ func (x *ManagedGroup) GetGroupNames() string { // ManagedGroupMemberAccount contains a mapping between a managed group and a // member account. type ManagedGroupMemberAccount struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -1516,16 +1480,16 @@ type ManagedGroupMemberAccount struct { ManagedGroupId string `protobuf:"bytes,20,opt,name=managed_group_id,json=managedGroupId,proto3" json:"managed_group_id,omitempty" gorm:"primary_key"` // member_id is the fk to the oidc account public id // @inject_tag: `gorm:"primary_key"` - MemberId string `protobuf:"bytes,30,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty" gorm:"primary_key"` + MemberId string `protobuf:"bytes,30,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty" gorm:"primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ManagedGroupMemberAccount) Reset() { *x = ManagedGroupMemberAccount{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ManagedGroupMemberAccount) String() string { @@ -1536,7 +1500,7 @@ func (*ManagedGroupMemberAccount) ProtoMessage() {} func (x *ManagedGroupMemberAccount) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1985,152 +1949,6 @@ func file_controller_storage_auth_ldap_store_v1_ldap_proto_init() { if File_controller_storage_auth_ldap_store_v1_ldap_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*AuthMethod); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Url); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*UserEntrySearchConf); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*GroupEntrySearchConf); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*Certificate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*ClientCertificate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*BindCredential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*Account); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*AccountAttributeMap); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DerefAliases); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*ManagedGroup); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_ldap_store_v1_ldap_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*ManagedGroupMemberAccount); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/auth/oidc/request/request.pb.go b/internal/auth/oidc/request/request.pb.go index 7a90018ba6..f160781851 100644 --- a/internal/auth/oidc/request/request.pb.go +++ b/internal/auth/oidc/request/request.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/auth/oidc/request/v1/request.proto @@ -35,10 +35,7 @@ const ( // the Boundary's oidc auth method configuration hasn't changed since the authen flow // began. type State struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // token_request_id is the id. This id is used by the client to poll for a Boundary // token, once the final leg of the authen flow is compeleted. The Callback uses this // id to create a "pending" token for that polling process. @@ -58,15 +55,15 @@ type State struct { // provider_config_hash can be used to see if the provider's config has changed // since the request started. ProviderConfigHash uint64 `protobuf:"varint,60,opt,name=provider_config_hash,json=providerConfigHash,proto3" json:"provider_config_hash,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *State) Reset() { *x = State{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_oidc_request_v1_request_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_oidc_request_v1_request_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *State) String() string { @@ -77,7 +74,7 @@ func (*State) ProtoMessage() {} func (x *State) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_oidc_request_v1_request_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -137,23 +134,20 @@ func (x *State) GetProviderConfigHash() uint64 { // Token is the request token that's returned as part of the auth_token_url from // oidc.StartAuth(...) type Token struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // request_id for the token. RequestId string `protobuf:"bytes,10,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` // expiration_time of the authenticaion flow. ExpirationTime *timestamp.Timestamp `protobuf:"bytes,20,opt,name=expiration_time,json=expirationTime,proto3" json:"expiration_time,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Token) Reset() { *x = Token{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_oidc_request_v1_request_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_oidc_request_v1_request_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Token) String() string { @@ -164,7 +158,7 @@ func (*Token) ProtoMessage() {} func (x *Token) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_oidc_request_v1_request_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -197,10 +191,7 @@ func (x *Token) GetExpirationTime() *timestamp.Timestamp { // which allows Boundary to determine how to decrypt // the wrappered cipher text (ct) field. type Wrapper struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // auth_method_id is the auth method of the oidc request AuthMethodId string `protobuf:"bytes,10,opt,name=auth_method_id,json=authMethodId,proto3" json:"auth_method_id,omitempty"` // scope_id is the auth method's scope @@ -209,16 +200,16 @@ type Wrapper struct { // cipher's key WrapperKeyId string `protobuf:"bytes,30,opt,name=wrapper_key_id,json=wrapperKeyId,proto3" json:"wrapper_key_id,omitempty"` // ct is the encrypted cipher text - Ct []byte `protobuf:"bytes,40,opt,name=ct,proto3" json:"ct,omitempty"` + Ct []byte `protobuf:"bytes,40,opt,name=ct,proto3" json:"ct,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Wrapper) Reset() { *x = Wrapper{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_oidc_request_v1_request_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_oidc_request_v1_request_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Wrapper) String() string { @@ -229,7 +220,7 @@ func (*Wrapper) ProtoMessage() {} func (x *Wrapper) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_oidc_request_v1_request_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -363,44 +354,6 @@ func file_controller_storage_auth_oidc_request_v1_request_proto_init() { if File_controller_storage_auth_oidc_request_v1_request_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_auth_oidc_request_v1_request_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*State); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_oidc_request_v1_request_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Token); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_oidc_request_v1_request_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*Wrapper); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/auth/oidc/store/oidc.pb.go b/internal/auth/oidc/store/oidc.pb.go index c4e7d2ed3b..1340dabe2b 100644 --- a/internal/auth/oidc/store/oidc.pb.go +++ b/internal/auth/oidc/store/oidc.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/auth/oidc/store/v1/oidc.proto @@ -29,10 +29,7 @@ const ( // AuthMethod represents an OIDC auth method. type AuthMethod struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,10,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` // The create_time is set by the database. @@ -131,16 +128,16 @@ type AuthMethod struct { // These are Value Objects that will be stored as Prompt messages, // and are operatated on as a complete set. // @inject_tag: `gorm:"-"` - Prompts []string `protobuf:"bytes,220,rep,name=prompts,proto3" json:"prompts,omitempty" gorm:"-"` + Prompts []string `protobuf:"bytes,220,rep,name=prompts,proto3" json:"prompts,omitempty" gorm:"-"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthMethod) Reset() { *x = AuthMethod{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthMethod) String() string { @@ -151,7 +148,7 @@ func (*AuthMethod) ProtoMessage() {} func (x *AuthMethod) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -338,10 +335,7 @@ func (x *AuthMethod) GetPrompts() []string { // the scope_id column is not included here as it is used only to ensure // data integrity in the database between iam users and auth methods. type Account struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,10,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` // The create_time is set by the database. @@ -379,15 +373,15 @@ type Account struct { // userinfo_claims are the marshaled claims from userinfo. // @inject_tag: `gorm:"default:null"` UserinfoClaims string `protobuf:"bytes,130,opt,name=userinfo_claims,json=userinfoClaims,proto3" json:"userinfo_claims,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Account) Reset() { *x = Account{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Account) String() string { @@ -398,7 +392,7 @@ func (*Account) ProtoMessage() {} func (x *Account) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -506,10 +500,7 @@ func (x *Account) GetUserinfoClaims() string { // SigningAlg entries are the signing algorithms allowed for an oidc auth method. type SigningAlg struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` OidcMethodId string `protobuf:"bytes,10,opt,name=oidc_method_id,json=oidcMethodId,proto3" json:"oidc_method_id,omitempty" gorm:"primary_key"` // alg is an enum from the auth_oidc_signing_alg_enm table @@ -517,16 +508,16 @@ type SigningAlg struct { Alg string `protobuf:"bytes,20,opt,name=alg,proto3" json:"alg,omitempty" gorm:"primary_key;column:signing_alg_name"` // The create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SigningAlg) Reset() { *x = SigningAlg{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SigningAlg) String() string { @@ -537,7 +528,7 @@ func (*SigningAlg) ProtoMessage() {} func (x *SigningAlg) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -575,10 +566,7 @@ func (x *SigningAlg) GetCreateTime() *timestamp.Timestamp { // AudClaim entries are the audience claims for a specific oidc auth method. type AudClaim struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` OidcMethodId string `protobuf:"bytes,10,opt,name=oidc_method_id,json=oidcMethodId,proto3" json:"oidc_method_id,omitempty" gorm:"primary_key"` // aud is an allowed audience claim for id_tokens @@ -586,16 +574,16 @@ type AudClaim struct { Aud string `protobuf:"bytes,20,opt,name=aud,proto3" json:"aud,omitempty" gorm:"primary_key;column:aud_claim"` // The create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AudClaim) Reset() { *x = AudClaim{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AudClaim) String() string { @@ -606,7 +594,7 @@ func (*AudClaim) ProtoMessage() {} func (x *AudClaim) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -645,10 +633,7 @@ func (x *AudClaim) GetCreateTime() *timestamp.Timestamp { // Certificate entries are optional PEM encoded x509 certificates that can be // used as trust anchors when connecting to an OIDC provider. type Certificate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` OidcMethodId string `protobuf:"bytes,10,opt,name=oidc_method_id,json=oidcMethodId,proto3" json:"oidc_method_id,omitempty" gorm:"primary_key"` // certificate is a PEM encoded x509 @@ -656,16 +641,16 @@ type Certificate struct { Cert string `protobuf:"bytes,20,opt,name=cert,proto3" json:"cert,omitempty" gorm:"column:certificate;primary_key"` // The create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Certificate) Reset() { *x = Certificate{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Certificate) String() string { @@ -676,7 +661,7 @@ func (*Certificate) ProtoMessage() {} func (x *Certificate) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -717,10 +702,7 @@ func (x *Certificate) GetCreateTime() *timestamp.Timestamp { // // see: https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims type ClaimsScope struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` OidcMethodId string `protobuf:"bytes,10,opt,name=oidc_method_id,json=oidcMethodId,proto3" json:"oidc_method_id,omitempty" gorm:"primary_key"` // scope is an OIDC scope @@ -728,16 +710,16 @@ type ClaimsScope struct { Scope string `protobuf:"bytes,20,opt,name=scope,proto3" json:"scope,omitempty" gorm:"column:scope;primary_key"` // The create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ClaimsScope) Reset() { *x = ClaimsScope{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ClaimsScope) String() string { @@ -748,7 +730,7 @@ func (*ClaimsScope) ProtoMessage() {} func (x *ClaimsScope) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -786,10 +768,7 @@ func (x *ClaimsScope) GetCreateTime() *timestamp.Timestamp { // AccountClaimMap entries are optional from/to account claim maps. type AccountClaimMap struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` OidcMethodId string `protobuf:"bytes,10,opt,name=oidc_method_id,json=oidcMethodId,proto3" json:"oidc_method_id,omitempty" gorm:"primary_key"` // from_claim is the claim from the id_token that you need to map to a @@ -802,16 +781,16 @@ type AccountClaimMap struct { ToClaim string `protobuf:"bytes,30,opt,name=to_claim,json=toClaim,proto3" json:"to_claim,omitempty" gorm:"column:to_claim;primary_key"` // The create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,40,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,40,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AccountClaimMap) Reset() { *x = AccountClaimMap{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AccountClaimMap) String() string { @@ -822,7 +801,7 @@ func (*AccountClaimMap) ProtoMessage() {} func (x *AccountClaimMap) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -868,10 +847,7 @@ func (x *AccountClaimMap) GetCreateTime() *timestamp.Timestamp { // ManagedGroup entries provide an OIDC auth method implementation of managed // groups. type ManagedGroup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,10,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` // The create_time is set by the database. @@ -893,16 +869,16 @@ type ManagedGroup struct { AuthMethodId string `protobuf:"bytes,70,opt,name=auth_method_id,json=authMethodId,proto3" json:"auth_method_id,omitempty" gorm:"not_null"` // filter is a go-bexpr filter // @inject_tag: `gorm:"not_null"` - Filter string `protobuf:"bytes,80,opt,name=filter,proto3" json:"filter,omitempty" gorm:"not_null"` + Filter string `protobuf:"bytes,80,opt,name=filter,proto3" json:"filter,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ManagedGroup) Reset() { *x = ManagedGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ManagedGroup) String() string { @@ -913,7 +889,7 @@ func (*ManagedGroup) ProtoMessage() {} func (x *ManagedGroup) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -987,10 +963,7 @@ func (x *ManagedGroup) GetFilter() string { // ManagedGroupMemberAccount contains a mapping between a managed group and a // member account. type ManagedGroupMemberAccount struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -999,16 +972,16 @@ type ManagedGroupMemberAccount struct { ManagedGroupId string `protobuf:"bytes,20,opt,name=managed_group_id,json=managedGroupId,proto3" json:"managed_group_id,omitempty" gorm:"primary_key"` // member_id is the fk to the oidc account public id // @inject_tag: `gorm:"primary_key"` - MemberId string `protobuf:"bytes,30,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty" gorm:"primary_key"` + MemberId string `protobuf:"bytes,30,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty" gorm:"primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ManagedGroupMemberAccount) Reset() { *x = ManagedGroupMemberAccount{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ManagedGroupMemberAccount) String() string { @@ -1019,7 +992,7 @@ func (*ManagedGroupMemberAccount) ProtoMessage() {} func (x *ManagedGroupMemberAccount) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1057,10 +1030,7 @@ func (x *ManagedGroupMemberAccount) GetMemberId() string { // Prompt entries are the prompts allowed for an oidc auth method. type Prompt struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` OidcMethodId string `protobuf:"bytes,10,opt,name=oidc_method_id,json=oidcMethodId,proto3" json:"oidc_method_id,omitempty" gorm:"primary_key"` // prompt_param is an enum from the auth_oidc_prompt_enm table @@ -1068,16 +1038,16 @@ type Prompt struct { PromptParam string `protobuf:"bytes,20,opt,name=prompt_param,json=promptParam,proto3" json:"prompt_param,omitempty" gorm:"primary_key;column:prompt"` // The create_time is set by the database. // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Prompt) Reset() { *x = Prompt{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Prompt) String() string { @@ -1088,7 +1058,7 @@ func (*Prompt) ProtoMessage() {} func (x *Prompt) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1421,128 +1391,6 @@ func file_controller_storage_auth_oidc_store_v1_oidc_proto_init() { if File_controller_storage_auth_oidc_store_v1_oidc_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*AuthMethod); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Account); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*SigningAlg); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*AudClaim); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*Certificate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*ClaimsScope); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*AccountClaimMap); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*ManagedGroup); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*ManagedGroupMemberAccount); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_oidc_store_v1_oidc_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*Prompt); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/auth/password/store/argon2.pb.go b/internal/auth/password/store/argon2.pb.go index b16344a65b..4c9c6dc734 100644 --- a/internal/auth/password/store/argon2.pb.go +++ b/internal/auth/password/store/argon2.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/auth/password/store/v1/argon2.proto @@ -36,10 +36,7 @@ const ( // For a detailed specification of Argon2 see: // https://github.com/P-H-C/phc-winner-argon2/blob/master/argon2-specs.pdf type Argon2Configuration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` PrivateId string `protobuf:"bytes,1,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` // The create_time is set by the database. @@ -65,16 +62,16 @@ type Argon2Configuration struct { SaltLength uint32 `protobuf:"varint,7,opt,name=salt_length,json=saltLength,proto3" json:"salt_length,omitempty" gorm:"default:null"` // KeyLength is in bytes. Must be >= 16. // @inject_tag: `gorm:"default:null"` - KeyLength uint32 `protobuf:"varint,8,opt,name=key_length,json=keyLength,proto3" json:"key_length,omitempty" gorm:"default:null"` + KeyLength uint32 `protobuf:"varint,8,opt,name=key_length,json=keyLength,proto3" json:"key_length,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Argon2Configuration) Reset() { *x = Argon2Configuration{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_password_store_v1_argon2_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_password_store_v1_argon2_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Argon2Configuration) String() string { @@ -85,7 +82,7 @@ func (*Argon2Configuration) ProtoMessage() {} func (x *Argon2Configuration) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_password_store_v1_argon2_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -157,10 +154,7 @@ func (x *Argon2Configuration) GetKeyLength() uint32 { } type Argon2Credential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` PrivateId string `protobuf:"bytes,1,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` // The create_time is set by the database. @@ -189,16 +183,16 @@ type Argon2Credential struct { // used to identify a specific version of the key needed to decrypt the value, // which is useful for caching purposes. // @inject_tag: `gorm:"not_null"` - KeyId string `protobuf:"bytes,10,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + KeyId string `protobuf:"bytes,10,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Argon2Credential) Reset() { *x = Argon2Credential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_password_store_v1_argon2_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_password_store_v1_argon2_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Argon2Credential) String() string { @@ -209,7 +203,7 @@ func (*Argon2Credential) ProtoMessage() {} func (x *Argon2Credential) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_password_store_v1_argon2_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -395,32 +389,6 @@ func file_controller_storage_auth_password_store_v1_argon2_proto_init() { if File_controller_storage_auth_password_store_v1_argon2_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_auth_password_store_v1_argon2_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Argon2Configuration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_password_store_v1_argon2_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Argon2Credential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/auth/password/store/password.pb.go b/internal/auth/password/store/password.pb.go index 962870c732..ce8650ce76 100644 --- a/internal/auth/password/store/password.pb.go +++ b/internal/auth/password/store/password.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/auth/password/store/v1/password.proto @@ -28,10 +28,7 @@ const ( ) type AuthMethod struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` // The create_time is set by the database. @@ -61,15 +58,15 @@ type AuthMethod struct { // auth method is set as the scope's primary auth method. // @inject_tag: `gorm:"->"` IsPrimaryAuthMethod bool `protobuf:"varint,20,opt,name=is_primary_auth_method,json=isPrimaryAuthMethod,proto3" json:"is_primary_auth_method,omitempty" gorm:"->"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthMethod) Reset() { *x = AuthMethod{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_password_store_v1_password_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_password_store_v1_password_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthMethod) String() string { @@ -80,7 +77,7 @@ func (*AuthMethod) ProtoMessage() {} func (x *AuthMethod) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_password_store_v1_password_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -173,10 +170,7 @@ func (x *AuthMethod) GetIsPrimaryAuthMethod() bool { } type Account struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` // The create_time is set by the database. @@ -196,16 +190,16 @@ type Account struct { // @inject_tag: `gorm:"not_null"` AuthMethodId string `protobuf:"bytes,7,opt,name=auth_method_id,json=authMethodId,proto3" json:"auth_method_id,omitempty" gorm:"not_null"` // @inject_tag: `gorm:"not_null"` - LoginName string `protobuf:"bytes,8,opt,name=login_name,json=loginName,proto3" json:"login_name,omitempty" gorm:"not_null"` + LoginName string `protobuf:"bytes,8,opt,name=login_name,json=loginName,proto3" json:"login_name,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Account) Reset() { *x = Account{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_password_store_v1_password_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_password_store_v1_password_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Account) String() string { @@ -216,7 +210,7 @@ func (*Account) ProtoMessage() {} func (x *Account) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_password_store_v1_password_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -288,10 +282,7 @@ func (x *Account) GetLoginName() string { } type Credential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` PrivateId string `protobuf:"bytes,1,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` // @inject_tag: `gorm:"not_null"` @@ -300,15 +291,15 @@ type Credential struct { PasswordConfId string `protobuf:"bytes,3,opt,name=password_conf_id,json=passwordConfId,proto3" json:"password_conf_id,omitempty" gorm:"not_null"` // @inject_tag: `gorm:"not_null"` PasswordMethodId string `protobuf:"bytes,4,opt,name=password_method_id,json=passwordMethodId,proto3" json:"password_method_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Credential) Reset() { *x = Credential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_password_store_v1_password_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_password_store_v1_password_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Credential) String() string { @@ -319,7 +310,7 @@ func (*Credential) ProtoMessage() {} func (x *Credential) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_password_store_v1_password_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -500,44 +491,6 @@ func file_controller_storage_auth_password_store_v1_password_proto_init() { if File_controller_storage_auth_password_store_v1_password_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_auth_password_store_v1_password_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*AuthMethod); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_password_store_v1_password_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Account); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_password_store_v1_password_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*Credential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/auth/store/account.pb.go b/internal/auth/store/account.pb.go index 4554d0d729..3410459a37 100644 --- a/internal/auth/store/account.pb.go +++ b/internal/auth/store/account.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/auth/store/v1/account.proto @@ -28,10 +28,7 @@ const ( // system is only responsible/allowed to update the iam_user_id. The authtoken // system is a reader of this data. type Account struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // auth_account_id is primary key for the user account // @inject_tag: gorm:"primary_key" PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -43,16 +40,16 @@ type Account struct { ScopeId string `protobuf:"bytes,4,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" gorm:"default:null"` // user_id is the iam.user associated with this account // @inject_tag: `gorm:"default:null"` - IamUserId string `protobuf:"bytes,5,opt,name=iam_user_id,json=iamUserId,proto3" json:"iam_user_id,omitempty" gorm:"default:null"` + IamUserId string `protobuf:"bytes,5,opt,name=iam_user_id,json=iamUserId,proto3" json:"iam_user_id,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Account) Reset() { *x = Account{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_store_v1_account_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_store_v1_account_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Account) String() string { @@ -63,7 +60,7 @@ func (*Account) ProtoMessage() {} func (x *Account) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_store_v1_account_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -158,20 +155,6 @@ func file_controller_storage_auth_store_v1_account_proto_init() { if File_controller_storage_auth_store_v1_account_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_auth_store_v1_account_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Account); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/auth/store/auth_method.pb.go b/internal/auth/store/auth_method.pb.go index 1075adeafe..068a775e08 100644 --- a/internal/auth/store/auth_method.pb.go +++ b/internal/auth/store/auth_method.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/auth/store/v1/auth_method.proto @@ -24,23 +24,20 @@ const ( ) type AuthMethod struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: gorm:"primary_key" AuthAccountId string `protobuf:"bytes,1,opt,name=auth_account_id,json=authAccountId,proto3" json:"auth_account_id,omitempty"` // @inject_tag: `gorm:"default:null"` - IamScopeId string `protobuf:"bytes,2,opt,name=iam_scope_id,json=iamScopeId,proto3" json:"iam_scope_id,omitempty"` + IamScopeId string `protobuf:"bytes,2,opt,name=iam_scope_id,json=iamScopeId,proto3" json:"iam_scope_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthMethod) Reset() { *x = AuthMethod{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_store_v1_auth_method_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_store_v1_auth_method_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthMethod) String() string { @@ -51,7 +48,7 @@ func (*AuthMethod) ProtoMessage() {} func (x *AuthMethod) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_store_v1_auth_method_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -81,10 +78,7 @@ func (x *AuthMethod) GetIamScopeId() string { } type AuthAccount struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: gorm:"primary_key" AuthAccountId string `protobuf:"bytes,1,opt,name=auth_account_id,json=authAccountId,proto3" json:"auth_account_id,omitempty"` // @inject_tag: `gorm:"default:null"` @@ -92,16 +86,16 @@ type AuthAccount struct { // @inject_tag: `gorm:"default:null"` IamScopeId string `protobuf:"bytes,3,opt,name=iam_scope_id,json=iamScopeId,proto3" json:"iam_scope_id,omitempty"` // @inject_tag: `gorm:"default:null"` - IamUserId string `protobuf:"bytes,4,opt,name=iam_user_id,json=iamUserId,proto3" json:"iam_user_id,omitempty"` + IamUserId string `protobuf:"bytes,4,opt,name=iam_user_id,json=iamUserId,proto3" json:"iam_user_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthAccount) Reset() { *x = AuthAccount{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_auth_store_v1_auth_method_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_auth_store_v1_auth_method_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthAccount) String() string { @@ -112,7 +106,7 @@ func (*AuthAccount) ProtoMessage() {} func (x *AuthAccount) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_auth_store_v1_auth_method_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -216,32 +210,6 @@ func file_controller_storage_auth_store_v1_auth_method_proto_init() { if File_controller_storage_auth_store_v1_auth_method_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_auth_store_v1_auth_method_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*AuthMethod); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_auth_store_v1_auth_method_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*AuthAccount); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/authtoken/store/authtoken.pb.go b/internal/authtoken/store/authtoken.pb.go index 1125121a25..bc19f6e7d1 100644 --- a/internal/authtoken/store/authtoken.pb.go +++ b/internal/authtoken/store/authtoken.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/authtoken/store/v1/authtoken.proto @@ -25,10 +25,7 @@ const ( ) type AuthToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is used to access the auth token via an API // @inject_tag: gorm:"primary_key" PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -74,16 +71,16 @@ type AuthToken struct { // status is the auth token's status. It will default of "token issued" in the // database. // @inject_tag: `gorm:"default:null"` - Status string `protobuf:"bytes,15,opt,name=status,proto3" json:"status,omitempty" gorm:"default:null"` + Status string `protobuf:"bytes,15,opt,name=status,proto3" json:"status,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthToken) Reset() { *x = AuthToken{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_authtoken_store_v1_authtoken_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_authtoken_store_v1_authtoken_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthToken) String() string { @@ -94,7 +91,7 @@ func (*AuthToken) ProtoMessage() {} func (x *AuthToken) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_authtoken_store_v1_authtoken_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -292,20 +289,6 @@ func file_controller_storage_authtoken_store_v1_authtoken_proto_init() { if File_controller_storage_authtoken_store_v1_authtoken_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_authtoken_store_v1_authtoken_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*AuthToken); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/bsr/gen/ssh/v1/ssh_chunks.pb.go b/internal/bsr/gen/ssh/v1/ssh_chunks.pb.go index 5ca522605d..2d3f1015c4 100644 --- a/internal/bsr/gen/ssh/v1/ssh_chunks.pb.go +++ b/internal/bsr/gen/ssh/v1/ssh_chunks.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: ssh/v1/ssh_chunks.proto @@ -25,25 +25,22 @@ const ( // An UnknownRequest is an unrecognized SSH request. We'll record the type, want_reply, and payload type UnknownRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request WantReply bool `protobuf:"varint,2,opt,name=want_reply,json=wantReply,proto3" json:"want_reply,omitempty"` // The Payload field on the SSH request - Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UnknownRequest) Reset() { *x = UnknownRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UnknownRequest) String() string { @@ -54,7 +51,7 @@ func (*UnknownRequest) ProtoMessage() {} func (x *UnknownRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -92,10 +89,7 @@ func (x *UnknownRequest) GetData() []byte { // A session is started by sending the following message. type SessionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "session" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The sender channel @@ -104,15 +98,15 @@ type SessionRequest struct { InitialWindowSize uint32 `protobuf:"varint,3,opt,name=initial_window_size,json=initialWindowSize,proto3" json:"initial_window_size,omitempty"` // The maximum packet size MaximumPacketSize uint32 `protobuf:"varint,4,opt,name=maximum_packet_size,json=maximumPacketSize,proto3" json:"maximum_packet_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionRequest) Reset() { *x = SessionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionRequest) String() string { @@ -123,7 +117,7 @@ func (*SessionRequest) ProtoMessage() {} func (x *SessionRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -170,10 +164,7 @@ func (x *SessionRequest) GetMaximumPacketSize() uint32 { // channels are independent of the session, and closing the session // channel does not close the forwarded X11 channels. type X11Request struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "x11" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The sender channel @@ -186,15 +177,15 @@ type X11Request struct { OriginatorAddress string `protobuf:"bytes,5,opt,name=originator_address,json=originatorAddress,proto3" json:"originator_address,omitempty"` // The originator port OriginatorPort uint32 `protobuf:"varint,6,opt,name=originator_port,json=originatorPort,proto3" json:"originator_port,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *X11Request) Reset() { *x = X11Request{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *X11Request) String() string { @@ -205,7 +196,7 @@ func (*X11Request) ProtoMessage() {} func (x *X11Request) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -266,10 +257,7 @@ func (x *X11Request) GetOriginatorPort() uint32 { // been requested, a channel is opened to forward the port to the other // side. type ForwardedTCPIPRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "forwarded-tcpip" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The sender channel @@ -286,15 +274,15 @@ type ForwardedTCPIPRequest struct { OriginatorIpAddress string `protobuf:"bytes,7,opt,name=originator_ip_address,json=originatorIpAddress,proto3" json:"originator_ip_address,omitempty"` // The originator port OriginatorPort uint32 `protobuf:"varint,8,opt,name=originator_port,json=originatorPort,proto3" json:"originator_port,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ForwardedTCPIPRequest) Reset() { *x = ForwardedTCPIPRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ForwardedTCPIPRequest) String() string { @@ -305,7 +293,7 @@ func (*ForwardedTCPIPRequest) ProtoMessage() {} func (x *ForwardedTCPIPRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -379,10 +367,7 @@ func (x *ForwardedTCPIPRequest) GetOriginatorPort() uint32 { // When a connection comes to a locally forwarded TCP/IP port, the // following packet is sent to the other side. type DirectTCPIPRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "direct-tcpip" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The sender channel @@ -400,15 +385,15 @@ type DirectTCPIPRequest struct { OriginatorIpAddress string `protobuf:"bytes,7,opt,name=originator_ip_address,json=originatorIpAddress,proto3" json:"originator_ip_address,omitempty"` // The port on the host from where the connection originated. OriginatorPort uint32 `protobuf:"varint,8,opt,name=originator_port,json=originatorPort,proto3" json:"originator_port,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DirectTCPIPRequest) Reset() { *x = DirectTCPIPRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DirectTCPIPRequest) String() string { @@ -419,7 +404,7 @@ func (*DirectTCPIPRequest) ProtoMessage() {} func (x *DirectTCPIPRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -493,10 +478,7 @@ func (x *DirectTCPIPRequest) GetOriginatorPort() uint32 { // A pseudo-terminal can be allocated for the session by sending the // following message. type PtyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "pty-req" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request @@ -513,15 +495,15 @@ type PtyRequest struct { TerminalHeightPixels uint32 `protobuf:"varint,7,opt,name=terminal_height_pixels,json=terminalHeightPixels,proto3" json:"terminal_height_pixels,omitempty"` // Encoded terminal modes EncodedTerminalMode []byte `protobuf:"bytes,8,opt,name=encoded_terminal_mode,json=encodedTerminalMode,proto3" json:"encoded_terminal_mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PtyRequest) Reset() { *x = PtyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PtyRequest) String() string { @@ -532,7 +514,7 @@ func (*PtyRequest) ProtoMessage() {} func (x *PtyRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -605,10 +587,7 @@ func (x *PtyRequest) GetEncodedTerminalMode() []byte { // X11 forwarding may be requested for a session using the following message type X11ForwardingRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "x11-req" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request @@ -621,15 +600,15 @@ type X11ForwardingRequest struct { X11AuthenticationCookie string `protobuf:"bytes,5,opt,name=x11_authentication_cookie,json=x11AuthenticationCookie,proto3" json:"x11_authentication_cookie,omitempty"` // X11 screen number X11ScreenNumber uint32 `protobuf:"varint,6,opt,name=x11_screen_number,json=x11ScreenNumber,proto3" json:"x11_screen_number,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *X11ForwardingRequest) Reset() { *x = X11ForwardingRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *X11ForwardingRequest) String() string { @@ -640,7 +619,7 @@ func (*X11ForwardingRequest) ProtoMessage() {} func (x *X11ForwardingRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -700,10 +679,7 @@ func (x *X11ForwardingRequest) GetX11ScreenNumber() uint32 { // Environment variables may be passed to the shell/command to be // started later. type EnvRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "env" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request @@ -712,15 +688,15 @@ type EnvRequest struct { VariableName string `protobuf:"bytes,3,opt,name=variable_name,json=variableName,proto3" json:"variable_name,omitempty"` // Variable value VariableValue string `protobuf:"bytes,4,opt,name=variable_value,json=variableValue,proto3" json:"variable_value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EnvRequest) Reset() { *x = EnvRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnvRequest) String() string { @@ -731,7 +707,7 @@ func (*EnvRequest) ProtoMessage() {} func (x *EnvRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -777,23 +753,20 @@ func (x *EnvRequest) GetVariableValue() string { // This message will request that the user's default shell (typically // defined in /etc/passwd in UNIX systems) be started at the other end. type ShellRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "shell" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request - WantReply bool `protobuf:"varint,2,opt,name=want_reply,json=wantReply,proto3" json:"want_reply,omitempty"` + WantReply bool `protobuf:"varint,2,opt,name=want_reply,json=wantReply,proto3" json:"want_reply,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ShellRequest) Reset() { *x = ShellRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ShellRequest) String() string { @@ -804,7 +777,7 @@ func (*ShellRequest) ProtoMessage() {} func (x *ShellRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -836,25 +809,22 @@ func (x *ShellRequest) GetWantReply() bool { // This message will request that the server start the execution of the // given command. The 'command' string may contain a path. type ExecRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "exec" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request WantReply bool `protobuf:"varint,2,opt,name=want_reply,json=wantReply,proto3" json:"want_reply,omitempty"` // The command to be executed - Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` + Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecRequest) Reset() { *x = ExecRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExecRequest) String() string { @@ -865,7 +835,7 @@ func (*ExecRequest) ProtoMessage() {} func (x *ExecRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -905,25 +875,22 @@ func (x *ExecRequest) GetCommand() string { // these will include a general file transfer mechanism, and possibly // other features. type SubsystemRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "subsystem" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request WantReply bool `protobuf:"varint,2,opt,name=want_reply,json=wantReply,proto3" json:"want_reply,omitempty"` // The predefined subsystem to execute SubsystemName string `protobuf:"bytes,3,opt,name=subsystem_name,json=subsystemName,proto3" json:"subsystem_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SubsystemRequest) Reset() { *x = SubsystemRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SubsystemRequest) String() string { @@ -934,7 +901,7 @@ func (*SubsystemRequest) ProtoMessage() {} func (x *SubsystemRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -973,10 +940,7 @@ func (x *SubsystemRequest) GetSubsystemName() string { // When the window (terminal) size changes on the client side, it MAY // send a message to the other side to inform it of the new dimensions. type WindowChangeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "window-change" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request. This should always be false. @@ -989,15 +953,15 @@ type WindowChangeRequest struct { TerminalWidthPixels uint32 `protobuf:"varint,5,opt,name=terminal_width_pixels,json=terminalWidthPixels,proto3" json:"terminal_width_pixels,omitempty"` // Terminal height, pixels TerminalHeightPixels uint32 `protobuf:"varint,6,opt,name=terminal_height_pixels,json=terminalHeightPixels,proto3" json:"terminal_height_pixels,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WindowChangeRequest) Reset() { *x = WindowChangeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WindowChangeRequest) String() string { @@ -1008,7 +972,7 @@ func (*WindowChangeRequest) ProtoMessage() {} func (x *WindowChangeRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1070,25 +1034,22 @@ func (x *WindowChangeRequest) GetTerminalHeightPixels() uint32 { // If 'client can do' is TRUE, the client is allowed to do flow control // using control-S and control-Q type XonXoffRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "xon-xoff" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request. This should always be false. WantReply bool `protobuf:"varint,2,opt,name=want_reply,json=wantReply,proto3" json:"want_reply,omitempty"` // Client can do flow control - ClientCanDo bool `protobuf:"varint,3,opt,name=client_can_do,json=clientCanDo,proto3" json:"client_can_do,omitempty"` + ClientCanDo bool `protobuf:"varint,3,opt,name=client_can_do,json=clientCanDo,proto3" json:"client_can_do,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *XonXoffRequest) Reset() { *x = XonXoffRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *XonXoffRequest) String() string { @@ -1099,7 +1060,7 @@ func (*XonXoffRequest) ProtoMessage() {} func (x *XonXoffRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1138,10 +1099,7 @@ func (x *XonXoffRequest) GetClientCanDo() bool { // A signal can be delivered to the remote process/service using the // following message. type SignalRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "signal" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request. This should always be false @@ -1150,16 +1108,16 @@ type SignalRequest struct { // // ABRT ALRM FPE HUP ILL INT KILL // PIPE QUIT SEGV TERM USR1 USR2 - SignalName string `protobuf:"bytes,3,opt,name=signal_name,json=signalName,proto3" json:"signal_name,omitempty"` + SignalName string `protobuf:"bytes,3,opt,name=signal_name,json=signalName,proto3" json:"signal_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SignalRequest) Reset() { *x = SignalRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SignalRequest) String() string { @@ -1170,7 +1128,7 @@ func (*SignalRequest) ProtoMessage() {} func (x *SignalRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1210,25 +1168,22 @@ func (x *SignalRequest) GetSignalName() string { // // message can be sent to return the exit status of the command. type ExitStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "exit-status" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request. This should always be false. WantReply bool `protobuf:"varint,2,opt,name=want_reply,json=wantReply,proto3" json:"want_reply,omitempty"` // Exit status of the command - ExitStatus uint32 `protobuf:"varint,3,opt,name=exit_status,json=exitStatus,proto3" json:"exit_status,omitempty"` + ExitStatus uint32 `protobuf:"varint,3,opt,name=exit_status,json=exitStatus,proto3" json:"exit_status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExitStatusRequest) Reset() { *x = ExitStatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExitStatusRequest) String() string { @@ -1239,7 +1194,7 @@ func (*ExitStatusRequest) ProtoMessage() {} func (x *ExitStatusRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1279,10 +1234,7 @@ func (x *ExitStatusRequest) GetExitStatus() uint32 { // Such a condition can be indicated by the following message. A zero // 'exit_status' usually means that the command terminated successfully. type ExitSignalRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "exit-signal" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request. This should always be false. @@ -1297,16 +1249,16 @@ type ExitSignalRequest struct { // Error message in ISO-10646 UTF-8 encoding ErrorMessage string `protobuf:"bytes,5,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` // Language tag from https://www.rfc-editor.org/rfc/rfc3066 - LanguageTag string `protobuf:"bytes,6,opt,name=language_tag,json=languageTag,proto3" json:"language_tag,omitempty"` + LanguageTag string `protobuf:"bytes,6,opt,name=language_tag,json=languageTag,proto3" json:"language_tag,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExitSignalRequest) Reset() { *x = ExitSignalRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExitSignalRequest) String() string { @@ -1317,7 +1269,7 @@ func (*ExitSignalRequest) ProtoMessage() {} func (x *ExitSignalRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1378,25 +1330,22 @@ func (x *ExitSignalRequest) GetLanguageTag() string { // channel to request that the remote host perform // a BREAK operation. type BreakRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "break" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request. This should always be false. WantReply bool `protobuf:"varint,2,opt,name=want_reply,json=wantReply,proto3" json:"want_reply,omitempty"` // Break-length in milliseconds BreakLengthMs uint32 `protobuf:"varint,3,opt,name=break_length_ms,json=breakLengthMs,proto3" json:"break_length_ms,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BreakRequest) Reset() { *x = BreakRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BreakRequest) String() string { @@ -1407,7 +1356,7 @@ func (*BreakRequest) ProtoMessage() {} func (x *BreakRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1448,10 +1397,7 @@ func (x *BreakRequest) GetBreakLengthMs() uint32 { // port on the other side be forwarded to the local side, it must // explicitly request this. type TCPIPForwardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "tcpip-forward" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request. This should always be false. @@ -1461,16 +1407,16 @@ type TCPIPForwardRequest struct { AddressToBind string `protobuf:"bytes,3,opt,name=address_to_bind,json=addressToBind,proto3" json:"address_to_bind,omitempty"` // Port number to bind on which connections for forwarding // are to be accepted - PortToBind uint32 `protobuf:"varint,4,opt,name=port_to_bind,json=portToBind,proto3" json:"port_to_bind,omitempty"` + PortToBind uint32 `protobuf:"varint,4,opt,name=port_to_bind,json=portToBind,proto3" json:"port_to_bind,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TCPIPForwardRequest) Reset() { *x = TCPIPForwardRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TCPIPForwardRequest) String() string { @@ -1481,7 +1427,7 @@ func (*TCPIPForwardRequest) ProtoMessage() {} func (x *TCPIPForwardRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1528,10 +1474,7 @@ func (x *TCPIPForwardRequest) GetPortToBind() uint32 { // that channel open requests may be received until a reply to this // message is received. type CancelTCPIPForwardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The request type field. This should always be "cancel-tcpip-forward" RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"` // The want_reply field on the SSH request. This should always be false. @@ -1541,16 +1484,16 @@ type CancelTCPIPForwardRequest struct { AddressToBind string `protobuf:"bytes,3,opt,name=address_to_bind,json=addressToBind,proto3" json:"address_to_bind,omitempty"` // Port number to bind on which connections for forwarding // are to be accepted - PortToBind uint32 `protobuf:"varint,4,opt,name=port_to_bind,json=portToBind,proto3" json:"port_to_bind,omitempty"` + PortToBind uint32 `protobuf:"varint,4,opt,name=port_to_bind,json=portToBind,proto3" json:"port_to_bind,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CancelTCPIPForwardRequest) Reset() { *x = CancelTCPIPForwardRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CancelTCPIPForwardRequest) String() string { @@ -1561,7 +1504,7 @@ func (*CancelTCPIPForwardRequest) ProtoMessage() {} func (x *CancelTCPIPForwardRequest) ProtoReflect() protoreflect.Message { mi := &file_ssh_v1_ssh_chunks_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1901,236 +1844,6 @@ func file_ssh_v1_ssh_chunks_proto_init() { if File_ssh_v1_ssh_chunks_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_ssh_v1_ssh_chunks_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*UnknownRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*SessionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*X11Request); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ForwardedTCPIPRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*DirectTCPIPRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*PtyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*X11ForwardingRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*EnvRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*ShellRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*ExecRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*SubsystemRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*WindowChangeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*XonXoffRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*SignalRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*ExitStatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*ExitSignalRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*BreakRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*TCPIPForwardRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ssh_v1_ssh_chunks_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*CancelTCPIPForwardRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/credential/static/store/static.pb.go b/internal/credential/static/store/static.pb.go index 0a0a73dd62..1543476c0e 100644 --- a/internal/credential/static/store/static.pb.go +++ b/internal/credential/static/store/static.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/credential/static/store/v1/static.proto @@ -29,10 +29,7 @@ const ( ) type CredentialStore struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -54,16 +51,16 @@ type CredentialStore struct { ProjectId string `protobuf:"bytes,6,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty" gorm:"not_null"` // version allows optimistic locking of the resource. // @inject_tag: `gorm:"default:null"` - Version uint32 `protobuf:"varint,7,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + Version uint32 `protobuf:"varint,7,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CredentialStore) Reset() { *x = CredentialStore{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_static_store_v1_static_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_static_store_v1_static_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CredentialStore) String() string { @@ -74,7 +71,7 @@ func (*CredentialStore) ProtoMessage() {} func (x *CredentialStore) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_static_store_v1_static_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -139,10 +136,7 @@ func (x *CredentialStore) GetVersion() uint32 { } type UsernamePasswordCredential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -184,16 +178,16 @@ type UsernamePasswordCredential struct { // The key_id of the kms database key used for encrypting this entry. // It must be set. // @inject_tag: `gorm:"not_null"` - KeyId string `protobuf:"bytes,12,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + KeyId string `protobuf:"bytes,12,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UsernamePasswordCredential) Reset() { *x = UsernamePasswordCredential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_static_store_v1_static_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_static_store_v1_static_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UsernamePasswordCredential) String() string { @@ -204,7 +198,7 @@ func (*UsernamePasswordCredential) ProtoMessage() {} func (x *UsernamePasswordCredential) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_static_store_v1_static_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -304,10 +298,7 @@ func (x *UsernamePasswordCredential) GetKeyId() string { } type SshPrivateKeyCredential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -363,15 +354,15 @@ type SshPrivateKeyCredential struct { // everytime the private key passphrase is updated. // @inject_tag: `gorm:"not_null"` PrivateKeyPassphraseHmac []byte `protobuf:"bytes,15,opt,name=private_key_passphrase_hmac,json=privateKeyPassphraseHmac,proto3" json:"private_key_passphrase_hmac,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SshPrivateKeyCredential) Reset() { *x = SshPrivateKeyCredential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_static_store_v1_static_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_static_store_v1_static_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SshPrivateKeyCredential) String() string { @@ -382,7 +373,7 @@ func (*SshPrivateKeyCredential) ProtoMessage() {} func (x *SshPrivateKeyCredential) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_static_store_v1_static_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -503,10 +494,7 @@ func (x *SshPrivateKeyCredential) GetPrivateKeyPassphraseHmac() []byte { } type JsonCredential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -544,16 +532,16 @@ type JsonCredential struct { // The key_id of the kms database key used for encrypting this entry. // It must be set. // @inject_tag: `gorm:"not_null"` - KeyId string `protobuf:"bytes,11,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + KeyId string `protobuf:"bytes,11,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JsonCredential) Reset() { *x = JsonCredential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_static_store_v1_static_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_static_store_v1_static_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JsonCredential) String() string { @@ -564,7 +552,7 @@ func (*JsonCredential) ProtoMessage() {} func (x *JsonCredential) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_static_store_v1_static_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -880,56 +868,6 @@ func file_controller_storage_credential_static_store_v1_static_proto_init() { if File_controller_storage_credential_static_store_v1_static_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_credential_static_store_v1_static_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*CredentialStore); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_credential_static_store_v1_static_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*UsernamePasswordCredential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_credential_static_store_v1_static_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*SshPrivateKeyCredential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_credential_static_store_v1_static_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*JsonCredential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/credential/store/credential.pb.go b/internal/credential/store/credential.pb.go index 2d409b4657..1c057a8f5a 100644 --- a/internal/credential/store/credential.pb.go +++ b/internal/credential/store/credential.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/credential/store/v1/credential.proto @@ -26,25 +26,22 @@ const ( ) type Store struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` // The project_id of the owning project and must be set. // @inject_tag: `gorm:"not_null"` - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty" gorm:"not_null"` + ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Store) Reset() { *x = Store{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Store) String() string { @@ -55,7 +52,7 @@ func (*Store) ProtoMessage() {} func (x *Store) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -85,10 +82,7 @@ func (x *Store) GetProjectId() string { } type Library struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -99,15 +93,15 @@ type Library struct { // credential the library returns. // @inject_tag: `gorm:"default:null"` CredentialType string `protobuf:"bytes,3,opt,name=credential_type,json=credentialType,proto3" json:"credential_type,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Library) Reset() { *x = Library{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Library) String() string { @@ -118,7 +112,7 @@ func (*Library) ProtoMessage() {} func (x *Library) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -155,22 +149,19 @@ func (x *Library) GetCredentialType() string { } type Credential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` - PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` + PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Credential) Reset() { *x = Credential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Credential) String() string { @@ -181,7 +172,7 @@ func (*Credential) ProtoMessage() {} func (x *Credential) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -204,25 +195,22 @@ func (x *Credential) GetPublicId() string { } type Static struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` // The store_id of the owning store and must be set. // @inject_tag: `gorm:"not_null"` - StoreId string `protobuf:"bytes,2,opt,name=store_id,json=storeId,proto3" json:"store_id,omitempty" gorm:"not_null"` + StoreId string `protobuf:"bytes,2,opt,name=store_id,json=storeId,proto3" json:"store_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Static) Reset() { *x = Static{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Static) String() string { @@ -233,7 +221,7 @@ func (*Static) ProtoMessage() {} func (x *Static) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -263,25 +251,22 @@ func (x *Static) GetStoreId() string { } type Dynamic struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` // The library_id of the owning library and must be set. // @inject_tag: `gorm:"not_null"` - LibraryId string `protobuf:"bytes,2,opt,name=library_id,json=libraryId,proto3" json:"library_id,omitempty" gorm:"not_null"` + LibraryId string `protobuf:"bytes,2,opt,name=library_id,json=libraryId,proto3" json:"library_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Dynamic) Reset() { *x = Dynamic{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Dynamic) String() string { @@ -292,7 +277,7 @@ func (*Dynamic) ProtoMessage() {} func (x *Dynamic) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_store_v1_credential_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -392,68 +377,6 @@ func file_controller_storage_credential_store_v1_credential_proto_init() { if File_controller_storage_credential_store_v1_credential_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_credential_store_v1_credential_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Store); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_credential_store_v1_credential_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Library); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_credential_store_v1_credential_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*Credential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_credential_store_v1_credential_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*Static); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_credential_store_v1_credential_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*Dynamic); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/credential/vault/store/vault.pb.go b/internal/credential/vault/store/vault.pb.go index f96a3a0fff..485c17722a 100644 --- a/internal/credential/vault/store/vault.pb.go +++ b/internal/credential/vault/store/vault.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/credential/vault/store/v1/vault.proto @@ -29,10 +29,7 @@ const ( ) type CredentialStore struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -84,16 +81,16 @@ type CredentialStore struct { TlsSkipVerify bool `protobuf:"varint,13,opt,name=tls_skip_verify,json=tlsSkipVerify,proto3" json:"tls_skip_verify,omitempty" gorm:"default:false"` // worker_filter is optional. Filters to the worker(s) who can handle Vault requests for this cred store // @inject_tag: `gorm:"default:null"` - WorkerFilter string `protobuf:"bytes,14,opt,name=worker_filter,json=workerFilter,proto3" json:"worker_filter,omitempty" gorm:"default:null"` + WorkerFilter string `protobuf:"bytes,14,opt,name=worker_filter,json=workerFilter,proto3" json:"worker_filter,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CredentialStore) Reset() { *x = CredentialStore{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CredentialStore) String() string { @@ -104,7 +101,7 @@ func (*CredentialStore) ProtoMessage() {} func (x *CredentialStore) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -218,10 +215,7 @@ func (x *CredentialStore) GetWorkerFilter() string { } type Token struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // token_hmac is the hmac-sha256 value of the token. The hmac key is the // blake2b-256 value of the token accessor. // @inject_tag: `gorm:"primary_key"` @@ -267,16 +261,16 @@ type Token struct { // The status of the token. // It must be set. // @inject_tag: `gorm:"not_null"` - Status string `protobuf:"bytes,11,opt,name=status,proto3" json:"status,omitempty" gorm:"not_null"` + Status string `protobuf:"bytes,11,opt,name=status,proto3" json:"status,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Token) Reset() { *x = Token{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Token) String() string { @@ -287,7 +281,7 @@ func (*Token) ProtoMessage() {} func (x *Token) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -373,10 +367,7 @@ func (x *Token) GetStatus() string { } type ClientCertificate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // store_id is the ID of the owning vault credential store. A vault // credential store can have 0 or 1 client certificate. // @inject_tag: `gorm:"primary_key"` @@ -401,16 +392,16 @@ type ClientCertificate struct { // The key_id of the kms database key used for encrypting this entry. // It must be set. // @inject_tag: `gorm:"not_null"` - KeyId string `protobuf:"bytes,10,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + KeyId string `protobuf:"bytes,10,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ClientCertificate) Reset() { *x = ClientCertificate{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ClientCertificate) String() string { @@ -421,7 +412,7 @@ func (*ClientCertificate) ProtoMessage() {} func (x *ClientCertificate) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -479,10 +470,7 @@ func (x *ClientCertificate) GetKeyId() string { } type CredentialLibrary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -521,15 +509,15 @@ type CredentialLibrary struct { // credential the library returns. // @inject_tag: `gorm:"default:null"` CredentialType string `protobuf:"bytes,11,opt,name=credential_type,json=credentialType,proto3" json:"credential_type,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CredentialLibrary) Reset() { *x = CredentialLibrary{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CredentialLibrary) String() string { @@ -540,7 +528,7 @@ func (*CredentialLibrary) ProtoMessage() {} func (x *CredentialLibrary) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -633,10 +621,7 @@ func (x *CredentialLibrary) GetCredentialType() string { } type SSHCertificateCredentialLibrary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -694,15 +679,15 @@ type SSHCertificateCredentialLibrary struct { // api field in addition to the username. // @inject_tag: `gorm:"default:null"` AdditionalValidPrincipals string `protobuf:"bytes,17,opt,name=additional_valid_principals,json=additionalValidPrincipals,proto3" json:"additional_valid_principals,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SSHCertificateCredentialLibrary) Reset() { *x = SSHCertificateCredentialLibrary{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SSHCertificateCredentialLibrary) String() string { @@ -713,7 +698,7 @@ func (*SSHCertificateCredentialLibrary) ProtoMessage() {} func (x *SSHCertificateCredentialLibrary) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -848,10 +833,7 @@ func (x *SSHCertificateCredentialLibrary) GetAdditionalValidPrincipals() string } type Credential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -900,16 +882,16 @@ type Credential struct { // The status of the credential. // It must be set. // @inject_tag: `gorm:"not_null"` - Status string `protobuf:"bytes,12,opt,name=status,proto3" json:"status,omitempty" gorm:"not_null"` + Status string `protobuf:"bytes,12,opt,name=status,proto3" json:"status,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Credential) Reset() { *x = Credential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Credential) String() string { @@ -920,7 +902,7 @@ func (*Credential) ProtoMessage() {} func (x *Credential) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1020,10 +1002,7 @@ func (x *Credential) GetStatus() string { } type UsernamePasswordOverride struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // library_id of the owning vault credential library. // @inject_tag: `gorm:"primary_key"` LibraryId string `protobuf:"bytes,1,opt,name=library_id,json=libraryId,proto3" json:"library_id,omitempty" gorm:"primary_key"` @@ -1045,15 +1024,15 @@ type UsernamePasswordOverride struct { // // @inject_tag: `gorm:"default:null"` PasswordAttribute string `protobuf:"bytes,3,opt,name=password_attribute,json=passwordAttribute,proto3" json:"password_attribute,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UsernamePasswordOverride) Reset() { *x = UsernamePasswordOverride{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UsernamePasswordOverride) String() string { @@ -1064,7 +1043,7 @@ func (*UsernamePasswordOverride) ProtoMessage() {} func (x *UsernamePasswordOverride) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1101,10 +1080,7 @@ func (x *UsernamePasswordOverride) GetPasswordAttribute() string { } type SshPrivateKeyOverride struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // library_id of the owning vault credential library. // @inject_tag: `gorm:"primary_key"` LibraryId string `protobuf:"bytes,1,opt,name=library_id,json=libraryId,proto3" json:"library_id,omitempty" gorm:"primary_key"` @@ -1136,15 +1112,15 @@ type SshPrivateKeyOverride struct { // // @inject_tag: `gorm:"default:null"` PrivateKeyPassphraseAttribute string `protobuf:"bytes,4,opt,name=private_key_passphrase_attribute,json=privateKeyPassphraseAttribute,proto3" json:"private_key_passphrase_attribute,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SshPrivateKeyOverride) Reset() { *x = SshPrivateKeyOverride{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SshPrivateKeyOverride) String() string { @@ -1155,7 +1131,7 @@ func (*SshPrivateKeyOverride) ProtoMessage() {} func (x *SshPrivateKeyOverride) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1552,104 +1528,6 @@ func file_controller_storage_credential_vault_store_v1_vault_proto_init() { if File_controller_storage_credential_vault_store_v1_vault_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*CredentialStore); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Token); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ClientCertificate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*CredentialLibrary); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*SSHCertificateCredentialLibrary); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*Credential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UsernamePasswordOverride); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_credential_vault_store_v1_vault_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*SshPrivateKeyOverride); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/db/db_test/db_test.pb.go b/internal/db/db_test/db_test.pb.go index 816d8041d1..3e9cb1b1f8 100644 --- a/internal/db/db_test/db_test.pb.go +++ b/internal/db/db_test/db_test.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/db/db_test/v1/db_test.proto @@ -30,10 +30,7 @@ const ( // TestUser for gorm test user model type StoreTestUser struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: gorm:"primary_key" Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"primary_key"` // create_time from the RDBMS @@ -53,16 +50,16 @@ type StoreTestUser struct { // @inject_tag: `gorm:"default:null"` Email string `protobuf:"bytes,7,opt,name=email,proto3" json:"email,omitempty" gorm:"default:null"` // @inject_tag: `gorm:"default:null"` - Version uint32 `protobuf:"varint,8,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + Version uint32 `protobuf:"varint,8,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StoreTestUser) Reset() { *x = StoreTestUser{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StoreTestUser) String() string { @@ -73,7 +70,7 @@ func (*StoreTestUser) ProtoMessage() {} func (x *StoreTestUser) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -146,10 +143,7 @@ func (x *StoreTestUser) GetVersion() uint32 { // TestCar for gorm test car model type StoreTestCar struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: gorm:"primary_key" Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"primary_key"` // create_time from the RDBMS @@ -167,16 +161,16 @@ type StoreTestCar struct { // @inject_tag: `gorm:"default:null"` Model string `protobuf:"bytes,6,opt,name=model,proto3" json:"model,omitempty" gorm:"default:null"` // @inject_tag: `gorm:"default:null"` - Mpg int32 `protobuf:"varint,7,opt,name=mpg,proto3" json:"mpg,omitempty" gorm:"default:null"` + Mpg int32 `protobuf:"varint,7,opt,name=mpg,proto3" json:"mpg,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StoreTestCar) Reset() { *x = StoreTestCar{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StoreTestCar) String() string { @@ -187,7 +181,7 @@ func (*StoreTestCar) ProtoMessage() {} func (x *StoreTestCar) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -253,10 +247,7 @@ func (x *StoreTestCar) GetMpg() int32 { // TestRental for gorm test rental model type StoreTestRental struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: gorm:"primary_key" Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"primary_key"` // create_time from the RDBMS @@ -274,16 +265,16 @@ type StoreTestRental struct { // @inject_tag: `gorm:"default:null"` UserId uint32 `protobuf:"varint,6,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty" gorm:"default:null"` // @inject_tag: `gorm:"default:null"` - CarId uint32 `protobuf:"varint,7,opt,name=car_id,json=carId,proto3" json:"car_id,omitempty" gorm:"default:null"` + CarId uint32 `protobuf:"varint,7,opt,name=car_id,json=carId,proto3" json:"car_id,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StoreTestRental) Reset() { *x = StoreTestRental{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StoreTestRental) String() string { @@ -294,7 +285,7 @@ func (*StoreTestRental) ProtoMessage() {} func (x *StoreTestRental) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -361,10 +352,7 @@ func (x *StoreTestRental) GetCarId() uint32 { // StoreTestScooter used in the db tests only and provides a gorm resource with // a private id. type StoreTestScooter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: gorm:"primary_key" Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"primary_key"` // create_time from the RDBMS @@ -379,16 +367,16 @@ type StoreTestScooter struct { // @inject_tag: `gorm:"default:null"` Model string `protobuf:"bytes,6,opt,name=model,proto3" json:"model,omitempty" gorm:"default:null"` // @inject_tag: `gorm:"default:null"` - Mpg int32 `protobuf:"varint,7,opt,name=mpg,proto3" json:"mpg,omitempty" gorm:"default:null"` + Mpg int32 `protobuf:"varint,7,opt,name=mpg,proto3" json:"mpg,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StoreTestScooter) Reset() { *x = StoreTestScooter{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StoreTestScooter) String() string { @@ -399,7 +387,7 @@ func (*StoreTestScooter) ProtoMessage() {} func (x *StoreTestScooter) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -459,23 +447,20 @@ func (x *StoreTestScooter) GetMpg() int32 { // StoreTestAccessory used in the db tests only and provides a gorm resource with // an id that's not a private or public id type StoreTestAccessory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: gorm:"primary_key" AccessoryId uint32 `protobuf:"varint,1,opt,name=accessory_id,json=accessoryId,proto3" json:"accessory_id,omitempty" gorm:"primary_key"` // @inject_tag: `gorm:"default:not_null"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" gorm:"default:not_null"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" gorm:"default:not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StoreTestAccessory) Reset() { *x = StoreTestAccessory{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StoreTestAccessory) String() string { @@ -486,7 +471,7 @@ func (*StoreTestAccessory) ProtoMessage() {} func (x *StoreTestAccessory) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -518,25 +503,22 @@ func (x *StoreTestAccessory) GetDescription() string { // StoreTestScooterAccessory used in the db tests only and provides a gorm // resource with multiple pks type StoreTestScooterAccessory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: gorm:"primary_key" AccessoryId uint32 `protobuf:"varint,1,opt,name=accessory_id,json=accessoryId,proto3" json:"accessory_id,omitempty" gorm:"primary_key"` // @inject_tag: gorm:"primary_key" ScooterId uint32 `protobuf:"varint,2,opt,name=scooter_id,json=scooterId,proto3" json:"scooter_id,omitempty" gorm:"primary_key"` // @inject_tag: `gorm:"default:null"` - Review string `protobuf:"bytes,3,opt,name=review,proto3" json:"review,omitempty" gorm:"default:null"` + Review string `protobuf:"bytes,3,opt,name=review,proto3" json:"review,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StoreTestScooterAccessory) Reset() { *x = StoreTestScooterAccessory{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StoreTestScooterAccessory) String() string { @@ -547,7 +529,7 @@ func (*StoreTestScooterAccessory) ProtoMessage() {} func (x *StoreTestScooterAccessory) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -729,80 +711,6 @@ func file_controller_storage_db_db_test_v1_db_test_proto_init() { if File_controller_storage_db_db_test_v1_db_test_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*StoreTestUser); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*StoreTestCar); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*StoreTestRental); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*StoreTestScooter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*StoreTestAccessory); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_db_db_test_v1_db_test_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*StoreTestScooterAccessory); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/db/timestamp/timestamp.pb.go b/internal/db/timestamp/timestamp.pb.go index 3a5656a19a..ea21083e49 100644 --- a/internal/db/timestamp/timestamp.pb.go +++ b/internal/db/timestamp/timestamp.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/timestamp/v1/timestamp.proto @@ -30,20 +30,17 @@ const ( // https://golang.org/pkg/database/sql/#Scanner // https://golang.org/pkg/database/sql/driver/#Valuer type Timestamp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` unknownFields protoimpl.UnknownFields - - Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Timestamp) Reset() { *x = Timestamp{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_timestamp_v1_timestamp_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_timestamp_v1_timestamp_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Timestamp) String() string { @@ -54,7 +51,7 @@ func (*Timestamp) ProtoMessage() {} func (x *Timestamp) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_timestamp_v1_timestamp_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -129,20 +126,6 @@ func file_controller_storage_timestamp_v1_timestamp_proto_init() { if File_controller_storage_timestamp_v1_timestamp_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_timestamp_v1_timestamp_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Timestamp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/empty_msg.pb.go b/internal/gen/controller/api/empty_msg.pb.go index 5201a2038c..e5a9a03783 100644 --- a/internal/gen/controller/api/empty_msg.pb.go +++ b/internal/gen/controller/api/empty_msg.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/v1/empty_msg.proto @@ -25,18 +25,16 @@ const ( // EmptyResponse represents an empty response type EmptyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EmptyResponse) Reset() { *x = EmptyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_v1_empty_msg_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_v1_empty_msg_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EmptyResponse) String() string { @@ -47,7 +45,7 @@ func (*EmptyResponse) ProtoMessage() {} func (x *EmptyResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_v1_empty_msg_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -105,20 +103,6 @@ func file_controller_api_v1_empty_msg_proto_init() { if File_controller_api_v1_empty_msg_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_v1_empty_msg_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*EmptyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/error.pb.go b/internal/gen/controller/api/error.pb.go index a90d8a248a..a6d175e80c 100644 --- a/internal/gen/controller/api/error.pb.go +++ b/internal/gen/controller/api/error.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/v1/error.proto @@ -25,23 +25,20 @@ const ( // Error information relevant to an error that was wrapped by the backend. type WrappedError struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A string indicating what operation was being run when the wrapped error occurred. Op string `protobuf:"bytes,1,opt,name=op,proto3" json:"op,omitempty"` // The wrapped error message. - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WrappedError) Reset() { *x = WrappedError{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_v1_error_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_v1_error_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WrappedError) String() string { @@ -52,7 +49,7 @@ func (*WrappedError) ProtoMessage() {} func (x *WrappedError) ProtoReflect() protoreflect.Message { mi := &file_controller_api_v1_error_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -83,23 +80,20 @@ func (x *WrappedError) GetMessage() string { // Additional details regarding a specific error. type ErrorDetails struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Request-field-specific error details. RequestFields []*FieldError `protobuf:"bytes,1,rep,name=request_fields,proto3" json:"request_fields,omitempty"` // The errors that were wrapped in the backend for this returned error. WrappedErrors []*WrappedError `protobuf:"bytes,2,rep,name=wrapped_errors,proto3" json:"wrapped_errors,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ErrorDetails) Reset() { *x = ErrorDetails{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_v1_error_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_v1_error_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ErrorDetails) String() string { @@ -110,7 +104,7 @@ func (*ErrorDetails) ProtoMessage() {} func (x *ErrorDetails) ProtoReflect() protoreflect.Message { mi := &file_controller_api_v1_error_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -141,23 +135,20 @@ func (x *ErrorDetails) GetWrappedErrors() []*WrappedError { // FieldErrors contains error information on a per field basis. type FieldError struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the field. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // The description of the error. - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FieldError) Reset() { *x = FieldError{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_v1_error_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_v1_error_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FieldError) String() string { @@ -168,7 +159,7 @@ func (*FieldError) ProtoMessage() {} func (x *FieldError) ProtoReflect() protoreflect.Message { mi := &file_controller_api_v1_error_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -199,10 +190,7 @@ func (x *FieldError) GetDescription() string { // Error is returned by the JSON API when an error occurs. type Error struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The kind of error this is. Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // An string indicating what operation was being run when the error was returned. @@ -210,16 +198,16 @@ type Error struct { // A human-readable explanation specific to this occurrence of the error. Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` // Additional metadata regarding the error. Depending on the error, different fields are populated. - Details *ErrorDetails `protobuf:"bytes,4,opt,name=details,proto3" json:"details,omitempty"` + Details *ErrorDetails `protobuf:"bytes,4,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Error) Reset() { *x = Error{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_v1_error_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_v1_error_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Error) String() string { @@ -230,7 +218,7 @@ func (*Error) ProtoMessage() {} func (x *Error) ProtoReflect() protoreflect.Message { mi := &file_controller_api_v1_error_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -347,56 +335,6 @@ func file_controller_api_v1_error_proto_init() { if File_controller_api_v1_error_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_v1_error_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*WrappedError); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_v1_error_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*ErrorDetails); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_v1_error_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*FieldError); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_v1_error_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*Error); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/account_service.pb.go b/internal/gen/controller/api/services/account_service.pb.go index 2a7eb6580b..6915b431c6 100644 --- a/internal/gen/controller/api/services/account_service.pb.go +++ b/internal/gen/controller/api/services/account_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/account_service.proto @@ -29,21 +29,18 @@ const ( ) type GetAccountRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the account that should be retrieved. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetAccountRequest) Reset() { *x = GetAccountRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_account_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_account_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAccountRequest) String() string { @@ -54,7 +51,7 @@ func (*GetAccountRequest) ProtoMessage() {} func (x *GetAccountRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_account_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -77,20 +74,17 @@ func (x *GetAccountRequest) GetId() string { } type GetAccountResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *accounts.Account `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *accounts.Account `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetAccountResponse) Reset() { *x = GetAccountResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_account_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_account_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAccountResponse) String() string { @@ -101,7 +95,7 @@ func (*GetAccountResponse) ProtoMessage() {} func (x *GetAccountResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_account_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -124,10 +118,7 @@ func (x *GetAccountResponse) GetItem() *accounts.Account { } type ListAccountsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the auth method whose accounts should be listed. AuthMethodId string `protobuf:"bytes,1,opt,name=auth_method_id,proto3" json:"auth_method_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // You can specify that the filter should only return items that match. @@ -142,16 +133,16 @@ type ListAccountsRequest struct { // If you do not set a page size, Boundary uses the configured default page size. // If the page_size is greater than the default page size configured, // Boundary truncates the page size to this number. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListAccountsRequest) Reset() { *x = ListAccountsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_account_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_account_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListAccountsRequest) String() string { @@ -162,7 +153,7 @@ func (*ListAccountsRequest) ProtoMessage() {} func (x *ListAccountsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_account_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -206,10 +197,7 @@ func (x *ListAccountsRequest) GetPageSize() uint32 { } type ListAccountsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The list of accounts. Items []*accounts.Account `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". @@ -231,16 +219,16 @@ type ListAccountsResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListAccountsResponse) Reset() { *x = ListAccountsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_account_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_account_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListAccountsResponse) String() string { @@ -251,7 +239,7 @@ func (*ListAccountsResponse) ProtoMessage() {} func (x *ListAccountsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_account_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -316,20 +304,17 @@ func (x *ListAccountsResponse) GetEstItemCount() uint32 { } type CreateAccountRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *accounts.Account `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *accounts.Account `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateAccountRequest) Reset() { *x = CreateAccountRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_account_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_account_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateAccountRequest) String() string { @@ -340,7 +325,7 @@ func (*CreateAccountRequest) ProtoMessage() {} func (x *CreateAccountRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_account_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -363,21 +348,18 @@ func (x *CreateAccountRequest) GetItem() *accounts.Account { } type CreateAccountResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *accounts.Account `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *accounts.Account `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateAccountResponse) Reset() { *x = CreateAccountResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_account_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_account_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateAccountResponse) String() string { @@ -388,7 +370,7 @@ func (*CreateAccountResponse) ProtoMessage() {} func (x *CreateAccountResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_account_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -418,24 +400,21 @@ func (x *CreateAccountResponse) GetItem() *accounts.Account { } type UpdateAccountRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the account that should be updated. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // A subset of the account that contains the fields to update. - Item *accounts.Account `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + Item *accounts.Account `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateAccountRequest) Reset() { *x = UpdateAccountRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_account_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_account_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateAccountRequest) String() string { @@ -446,7 +425,7 @@ func (*UpdateAccountRequest) ProtoMessage() {} func (x *UpdateAccountRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_account_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -483,20 +462,17 @@ func (x *UpdateAccountRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateAccountResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *accounts.Account `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *accounts.Account `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateAccountResponse) Reset() { *x = UpdateAccountResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_account_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_account_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateAccountResponse) String() string { @@ -507,7 +483,7 @@ func (*UpdateAccountResponse) ProtoMessage() {} func (x *UpdateAccountResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_account_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -530,21 +506,18 @@ func (x *UpdateAccountResponse) GetItem() *accounts.Account { } type DeleteAccountRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the account to delete. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteAccountRequest) Reset() { *x = DeleteAccountRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_account_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_account_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteAccountRequest) String() string { @@ -555,7 +528,7 @@ func (*DeleteAccountRequest) ProtoMessage() {} func (x *DeleteAccountRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_account_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -578,18 +551,16 @@ func (x *DeleteAccountRequest) GetId() string { } type DeleteAccountResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteAccountResponse) Reset() { *x = DeleteAccountResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_account_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_account_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteAccountResponse) String() string { @@ -600,7 +571,7 @@ func (*DeleteAccountResponse) ProtoMessage() {} func (x *DeleteAccountResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_account_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -616,26 +587,23 @@ func (*DeleteAccountResponse) Descriptor() ([]byte, []int) { } type SetPasswordRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the account for which the password should be set. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` // The password that should be set. - Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty" class:"secret"` // @gotags: `class:"secret"` + Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty" class:"secret"` // @gotags: `class:"secret"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetPasswordRequest) Reset() { *x = SetPasswordRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_account_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_account_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetPasswordRequest) String() string { @@ -646,7 +614,7 @@ func (*SetPasswordRequest) ProtoMessage() {} func (x *SetPasswordRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_account_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -683,20 +651,17 @@ func (x *SetPasswordRequest) GetPassword() string { } type SetPasswordResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *accounts.Account `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *accounts.Account `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetPasswordResponse) Reset() { *x = SetPasswordResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_account_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_account_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetPasswordResponse) String() string { @@ -707,7 +672,7 @@ func (*SetPasswordResponse) ProtoMessage() {} func (x *SetPasswordResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_account_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -730,10 +695,7 @@ func (x *SetPasswordResponse) GetItem() *accounts.Account { } type ChangePasswordRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the account for which the password should be changed. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. @@ -742,16 +704,16 @@ type ChangePasswordRequest struct { // The current password for the account. CurrentPassword string `protobuf:"bytes,3,opt,name=current_password,proto3" json:"current_password,omitempty" class:"secret"` // @gotags: `class:"secret"` // The new password that should be set. - NewPassword string `protobuf:"bytes,4,opt,name=new_password,proto3" json:"new_password,omitempty" class:"secret"` // @gotags: `class:"secret"` + NewPassword string `protobuf:"bytes,4,opt,name=new_password,proto3" json:"new_password,omitempty" class:"secret"` // @gotags: `class:"secret"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ChangePasswordRequest) Reset() { *x = ChangePasswordRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_account_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_account_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ChangePasswordRequest) String() string { @@ -762,7 +724,7 @@ func (*ChangePasswordRequest) ProtoMessage() {} func (x *ChangePasswordRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_account_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -806,20 +768,17 @@ func (x *ChangePasswordRequest) GetNewPassword() string { } type ChangePasswordResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *accounts.Account `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *accounts.Account `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ChangePasswordResponse) Reset() { *x = ChangePasswordResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_account_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_account_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ChangePasswordResponse) String() string { @@ -830,7 +789,7 @@ func (*ChangePasswordResponse) ProtoMessage() {} func (x *ChangePasswordResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_account_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1149,176 +1108,6 @@ func file_controller_api_services_v1_account_service_proto_init() { if File_controller_api_services_v1_account_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_account_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetAccountRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_account_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetAccountResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_account_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListAccountsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_account_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListAccountsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_account_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateAccountRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_account_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateAccountResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_account_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateAccountRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_account_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateAccountResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_account_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteAccountRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_account_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteAccountResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_account_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*SetPasswordRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_account_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*SetPasswordResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_account_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*ChangePasswordRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_account_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*ChangePasswordResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/alias_service.pb.go b/internal/gen/controller/api/services/alias_service.pb.go index eecdc18695..310950aa9b 100644 --- a/internal/gen/controller/api/services/alias_service.pb.go +++ b/internal/gen/controller/api/services/alias_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/alias_service.proto @@ -29,21 +29,18 @@ const ( ) type GetAliasRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the alias to retrieve. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetAliasRequest) Reset() { *x = GetAliasRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAliasRequest) String() string { @@ -54,7 +51,7 @@ func (*GetAliasRequest) ProtoMessage() {} func (x *GetAliasRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -77,20 +74,17 @@ func (x *GetAliasRequest) GetId() string { } type GetAliasResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *aliases.Alias `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *aliases.Alias `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetAliasResponse) Reset() { *x = GetAliasResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAliasResponse) String() string { @@ -101,7 +95,7 @@ func (*GetAliasResponse) ProtoMessage() {} func (x *GetAliasResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -124,10 +118,7 @@ func (x *GetAliasResponse) GetItem() *aliases.Alias { } type ListAliasesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the scope in which to list aliases ScopeId string `protobuf:"bytes,1,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Whether to recursively list aliases in the provided scope's child scopes. @@ -144,16 +135,16 @@ type ListAliasesRequest struct { // If you do not set a page size, Boundary uses the configured default page size. // If the page_size is greater than the default page size configured, // Boundary truncates the page size to this number. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListAliasesRequest) Reset() { *x = ListAliasesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListAliasesRequest) String() string { @@ -164,7 +155,7 @@ func (*ListAliasesRequest) ProtoMessage() {} func (x *ListAliasesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -215,10 +206,7 @@ func (x *ListAliasesRequest) GetPageSize() uint32 { } type ListAliasesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The list of aliases. Items []*aliases.Alias `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". @@ -240,16 +228,16 @@ type ListAliasesResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListAliasesResponse) Reset() { *x = ListAliasesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListAliasesResponse) String() string { @@ -260,7 +248,7 @@ func (*ListAliasesResponse) ProtoMessage() {} func (x *ListAliasesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -325,20 +313,17 @@ func (x *ListAliasesResponse) GetEstItemCount() uint32 { } type CreateAliasRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *aliases.Alias `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *aliases.Alias `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateAliasRequest) Reset() { *x = CreateAliasRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateAliasRequest) String() string { @@ -349,7 +334,7 @@ func (*CreateAliasRequest) ProtoMessage() {} func (x *CreateAliasRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -372,21 +357,18 @@ func (x *CreateAliasRequest) GetItem() *aliases.Alias { } type CreateAliasResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *aliases.Alias `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *aliases.Alias `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateAliasResponse) Reset() { *x = CreateAliasResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateAliasResponse) String() string { @@ -397,7 +379,7 @@ func (*CreateAliasResponse) ProtoMessage() {} func (x *CreateAliasResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -427,24 +409,21 @@ func (x *CreateAliasResponse) GetItem() *aliases.Alias { } type UpdateAliasRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the alias to update. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // A subset of the alias that contains the fields to update. - Item *aliases.Alias `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + Item *aliases.Alias `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateAliasRequest) Reset() { *x = UpdateAliasRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateAliasRequest) String() string { @@ -455,7 +434,7 @@ func (*UpdateAliasRequest) ProtoMessage() {} func (x *UpdateAliasRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -492,20 +471,17 @@ func (x *UpdateAliasRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateAliasResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *aliases.Alias `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *aliases.Alias `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateAliasResponse) Reset() { *x = UpdateAliasResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateAliasResponse) String() string { @@ -516,7 +492,7 @@ func (*UpdateAliasResponse) ProtoMessage() {} func (x *UpdateAliasResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -539,21 +515,18 @@ func (x *UpdateAliasResponse) GetItem() *aliases.Alias { } type DeleteAliasRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the alias to delete. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteAliasRequest) Reset() { *x = DeleteAliasRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteAliasRequest) String() string { @@ -564,7 +537,7 @@ func (*DeleteAliasRequest) ProtoMessage() {} func (x *DeleteAliasRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -587,18 +560,16 @@ func (x *DeleteAliasRequest) GetId() string { } type DeleteAliasResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteAliasResponse) Reset() { *x = DeleteAliasResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteAliasResponse) String() string { @@ -609,7 +580,7 @@ func (*DeleteAliasResponse) ProtoMessage() {} func (x *DeleteAliasResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_alias_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -854,128 +825,6 @@ func file_controller_api_services_v1_alias_service_proto_init() { if File_controller_api_services_v1_alias_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_alias_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetAliasRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_alias_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetAliasResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_alias_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListAliasesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_alias_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListAliasesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_alias_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateAliasRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_alias_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateAliasResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_alias_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateAliasRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_alias_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateAliasResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_alias_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteAliasRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_alias_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteAliasResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/auth_method_service.pb.go b/internal/gen/controller/api/services/auth_method_service.pb.go index 43e0ee98d2..1c1a4ea890 100644 --- a/internal/gen/controller/api/services/auth_method_service.pb.go +++ b/internal/gen/controller/api/services/auth_method_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/auth_method_service.proto @@ -32,21 +32,18 @@ const ( ) type GetAuthMethodRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // ID of the auth method being requested. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetAuthMethodRequest) Reset() { *x = GetAuthMethodRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAuthMethodRequest) String() string { @@ -57,7 +54,7 @@ func (*GetAuthMethodRequest) ProtoMessage() {} func (x *GetAuthMethodRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -80,20 +77,17 @@ func (x *GetAuthMethodRequest) GetId() string { } type GetAuthMethodResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *authmethods.AuthMethod `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *authmethods.AuthMethod `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetAuthMethodResponse) Reset() { *x = GetAuthMethodResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAuthMethodResponse) String() string { @@ -104,7 +98,7 @@ func (*GetAuthMethodResponse) ProtoMessage() {} func (x *GetAuthMethodResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -127,10 +121,7 @@ func (x *GetAuthMethodResponse) GetItem() *authmethods.AuthMethod { } type ListAuthMethodsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The scope ID in which to list auth methods. ScopeId string `protobuf:"bytes,1,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Whether to recursively list auth methods in the provided scope's child scopes. @@ -147,16 +138,16 @@ type ListAuthMethodsRequest struct { // If you do not set a page size, Boundary uses the configured default page size. // If the page_size is greater than the default page size configured, // Boundary truncates the page size to this number. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListAuthMethodsRequest) Reset() { *x = ListAuthMethodsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListAuthMethodsRequest) String() string { @@ -167,7 +158,7 @@ func (*ListAuthMethodsRequest) ProtoMessage() {} func (x *ListAuthMethodsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -218,10 +209,7 @@ func (x *ListAuthMethodsRequest) GetPageSize() uint32 { } type ListAuthMethodsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The items returned in this page. Items []*authmethods.AuthMethod `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". @@ -243,16 +231,16 @@ type ListAuthMethodsResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListAuthMethodsResponse) Reset() { *x = ListAuthMethodsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListAuthMethodsResponse) String() string { @@ -263,7 +251,7 @@ func (*ListAuthMethodsResponse) ProtoMessage() {} func (x *ListAuthMethodsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -328,20 +316,17 @@ func (x *ListAuthMethodsResponse) GetEstItemCount() uint32 { } type CreateAuthMethodRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *authmethods.AuthMethod `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *authmethods.AuthMethod `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateAuthMethodRequest) Reset() { *x = CreateAuthMethodRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateAuthMethodRequest) String() string { @@ -352,7 +337,7 @@ func (*CreateAuthMethodRequest) ProtoMessage() {} func (x *CreateAuthMethodRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -375,21 +360,18 @@ func (x *CreateAuthMethodRequest) GetItem() *authmethods.AuthMethod { } type CreateAuthMethodResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *authmethods.AuthMethod `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *authmethods.AuthMethod `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateAuthMethodResponse) Reset() { *x = CreateAuthMethodResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateAuthMethodResponse) String() string { @@ -400,7 +382,7 @@ func (*CreateAuthMethodResponse) ProtoMessage() {} func (x *CreateAuthMethodResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -430,24 +412,21 @@ func (x *CreateAuthMethodResponse) GetItem() *authmethods.AuthMethod { } type UpdateAuthMethodRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the auth method that should be updated Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // A subset of the auth method containing the fields to update. - Item *authmethods.AuthMethod `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + Item *authmethods.AuthMethod `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateAuthMethodRequest) Reset() { *x = UpdateAuthMethodRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateAuthMethodRequest) String() string { @@ -458,7 +437,7 @@ func (*UpdateAuthMethodRequest) ProtoMessage() {} func (x *UpdateAuthMethodRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -495,20 +474,17 @@ func (x *UpdateAuthMethodRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateAuthMethodResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *authmethods.AuthMethod `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *authmethods.AuthMethod `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateAuthMethodResponse) Reset() { *x = UpdateAuthMethodResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateAuthMethodResponse) String() string { @@ -519,7 +495,7 @@ func (*UpdateAuthMethodResponse) ProtoMessage() {} func (x *UpdateAuthMethodResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -542,21 +518,18 @@ func (x *UpdateAuthMethodResponse) GetItem() *authmethods.AuthMethod { } type DeleteAuthMethodRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the auth method to delete. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteAuthMethodRequest) Reset() { *x = DeleteAuthMethodRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteAuthMethodRequest) String() string { @@ -567,7 +540,7 @@ func (*DeleteAuthMethodRequest) ProtoMessage() {} func (x *DeleteAuthMethodRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -590,18 +563,16 @@ func (x *DeleteAuthMethodRequest) GetId() string { } type DeleteAuthMethodResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteAuthMethodResponse) Reset() { *x = DeleteAuthMethodResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteAuthMethodResponse) String() string { @@ -612,7 +583,7 @@ func (*DeleteAuthMethodResponse) ProtoMessage() {} func (x *DeleteAuthMethodResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -629,25 +600,22 @@ func (*DeleteAuthMethodResponse) Descriptor() ([]byte, []int) { // Attributes specific to changing the state of an OIDC auth method. type OidcChangeStateAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // state must be `inactive`, `active-private`, or `active-public` State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty" class:"public"` // @gotags: `class:"public"` // This flag is only useful for an OIDC auth method. It should not be used // unless the OIDC provider's config is incorrectly set and is stopping the // activation of this auth method. DisableDiscoveredConfigValidation bool `protobuf:"varint,2,opt,name=disable_discovered_config_validation,proto3" json:"disable_discovered_config_validation,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OidcChangeStateAttributes) Reset() { *x = OidcChangeStateAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OidcChangeStateAttributes) String() string { @@ -658,7 +626,7 @@ func (*OidcChangeStateAttributes) ProtoMessage() {} func (x *OidcChangeStateAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -688,28 +656,25 @@ func (x *OidcChangeStateAttributes) GetDisableDiscoveredConfigValidation() bool } type ChangeStateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *ChangeStateRequest_Attributes // *ChangeStateRequest_OidcChangeStateAttributes - Attrs isChangeStateRequest_Attrs `protobuf_oneof:"attrs"` + Attrs isChangeStateRequest_Attrs `protobuf_oneof:"attrs"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ChangeStateRequest) Reset() { *x = ChangeStateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ChangeStateRequest) String() string { @@ -720,7 +685,7 @@ func (*ChangeStateRequest) ProtoMessage() {} func (x *ChangeStateRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -749,23 +714,27 @@ func (x *ChangeStateRequest) GetVersion() uint32 { return 0 } -func (m *ChangeStateRequest) GetAttrs() isChangeStateRequest_Attrs { - if m != nil { - return m.Attrs +func (x *ChangeStateRequest) GetAttrs() isChangeStateRequest_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *ChangeStateRequest) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*ChangeStateRequest_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*ChangeStateRequest_Attributes); ok { + return x.Attributes + } } return nil } func (x *ChangeStateRequest) GetOidcChangeStateAttributes() *OidcChangeStateAttributes { - if x, ok := x.GetAttrs().(*ChangeStateRequest_OidcChangeStateAttributes); ok { - return x.OidcChangeStateAttributes + if x != nil { + if x, ok := x.Attrs.(*ChangeStateRequest_OidcChangeStateAttributes); ok { + return x.OidcChangeStateAttributes + } } return nil } @@ -788,20 +757,17 @@ func (*ChangeStateRequest_Attributes) isChangeStateRequest_Attrs() {} func (*ChangeStateRequest_OidcChangeStateAttributes) isChangeStateRequest_Attrs() {} type ChangeStateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *authmethods.AuthMethod `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *authmethods.AuthMethod `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ChangeStateResponse) Reset() { *x = ChangeStateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ChangeStateResponse) String() string { @@ -812,7 +778,7 @@ func (*ChangeStateResponse) ProtoMessage() {} func (x *ChangeStateResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -838,21 +804,18 @@ func (x *ChangeStateResponse) GetItem() *authmethods.AuthMethod { // This message isn't directly referenced anywhere but is used here to define the expected // field names and types. type PasswordLoginAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + LoginName string `protobuf:"bytes,1,opt,name=login_name,proto3" json:"login_name,omitempty" class:"sensitive"` // @gotags: `class:"sensitive"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty" class:"secret"` // @gotags: `class:"secret"` unknownFields protoimpl.UnknownFields - - LoginName string `protobuf:"bytes,1,opt,name=login_name,proto3" json:"login_name,omitempty" class:"sensitive"` // @gotags: `class:"sensitive"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty" class:"secret"` // @gotags: `class:"secret"` + sizeCache protoimpl.SizeCache } func (x *PasswordLoginAttributes) Reset() { *x = PasswordLoginAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PasswordLoginAttributes) String() string { @@ -863,7 +826,7 @@ func (*PasswordLoginAttributes) ProtoMessage() {} func (x *PasswordLoginAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -895,23 +858,20 @@ func (x *PasswordLoginAttributes) GetPassword() string { // The layout of the struct for "attributes" field in AuthenticateRequest for a OIDC type's start command. This message isn't directly referenced anywhere but is used here to define the expected field // names and types. type OidcStartAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // An object which will be marshaled as JSON and roundtripped in the token command call. RoundtripPayload *structpb.Struct `protobuf:"bytes,1,opt,name=roundtrip_payload,proto3" json:"roundtrip_payload,omitempty"` // Cached marshaled payload. This is not ingressed from the client; anything found will be thrown out. CachedRoundtripPayload string `protobuf:"bytes,2,opt,name=cached_roundtrip_payload,json=cachedRoundtripPayload,proto3" json:"cached_roundtrip_payload,omitempty" class:"sensitive"` // @gotags: `class:"sensitive"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OidcStartAttributes) Reset() { *x = OidcStartAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OidcStartAttributes) String() string { @@ -922,7 +882,7 @@ func (*OidcStartAttributes) ProtoMessage() {} func (x *OidcStartAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -955,21 +915,18 @@ func (x *OidcStartAttributes) GetCachedRoundtripPayload() string { // ldap type. This message isn't directly referenced anywhere but is used here // to define the expected field names and types. type LdapLoginAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + LoginName string `protobuf:"bytes,10,opt,name=login_name,proto3" json:"login_name,omitempty" class:"sensitive"` // @gotags: `class:"sensitive"` + Password string `protobuf:"bytes,20,opt,name=password,proto3" json:"password,omitempty" class:"secret"` // @gotags: `class:"secret"` unknownFields protoimpl.UnknownFields - - LoginName string `protobuf:"bytes,10,opt,name=login_name,proto3" json:"login_name,omitempty" class:"sensitive"` // @gotags: `class:"sensitive"` - Password string `protobuf:"bytes,20,opt,name=password,proto3" json:"password,omitempty" class:"secret"` // @gotags: `class:"secret"` + sizeCache protoimpl.SizeCache } func (x *LdapLoginAttributes) Reset() { *x = LdapLoginAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LdapLoginAttributes) String() string { @@ -980,7 +937,7 @@ func (*LdapLoginAttributes) ProtoMessage() {} func (x *LdapLoginAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1010,10 +967,7 @@ func (x *LdapLoginAttributes) GetPassword() string { } type AuthenticateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the auth method in the system that should be used for authentication. AuthMethodId string `protobuf:"bytes,1,opt,name=auth_method_id,proto3" json:"auth_method_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // This can be "cookie" or "token". If not provided, "token" will be used. "cookie" activates a split-cookie method where the token is split partially between http-only and regular cookies in order @@ -1024,7 +978,7 @@ type AuthenticateRequest struct { // This can be "cookie" or "token". If not provided, "token" will be used. "cookie" activates a split-cookie method where the token is split partially between http-only and regular cookies in order // to keep it safe from rogue JS in the browser. Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *AuthenticateRequest_Attributes // *AuthenticateRequest_PasswordLoginAttributes @@ -1034,16 +988,16 @@ type AuthenticateRequest struct { // *AuthenticateRequest_LdapLoginAttributes Attrs isAuthenticateRequest_Attrs `protobuf_oneof:"attrs"` // The command to perform. One of "login", "callback", or "token". - Command string `protobuf:"bytes,5,opt,name=command,proto3" json:"command,omitempty" class:"public"` // @gotags: `class:"public"` + Command string `protobuf:"bytes,5,opt,name=command,proto3" json:"command,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthenticateRequest) Reset() { *x = AuthenticateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthenticateRequest) String() string { @@ -1054,7 +1008,7 @@ func (*AuthenticateRequest) ProtoMessage() {} func (x *AuthenticateRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1091,51 +1045,63 @@ func (x *AuthenticateRequest) GetType() string { return "" } -func (m *AuthenticateRequest) GetAttrs() isAuthenticateRequest_Attrs { - if m != nil { - return m.Attrs +func (x *AuthenticateRequest) GetAttrs() isAuthenticateRequest_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *AuthenticateRequest) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*AuthenticateRequest_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*AuthenticateRequest_Attributes); ok { + return x.Attributes + } } return nil } func (x *AuthenticateRequest) GetPasswordLoginAttributes() *PasswordLoginAttributes { - if x, ok := x.GetAttrs().(*AuthenticateRequest_PasswordLoginAttributes); ok { - return x.PasswordLoginAttributes + if x != nil { + if x, ok := x.Attrs.(*AuthenticateRequest_PasswordLoginAttributes); ok { + return x.PasswordLoginAttributes + } } return nil } func (x *AuthenticateRequest) GetOidcStartAttributes() *OidcStartAttributes { - if x, ok := x.GetAttrs().(*AuthenticateRequest_OidcStartAttributes); ok { - return x.OidcStartAttributes + if x != nil { + if x, ok := x.Attrs.(*AuthenticateRequest_OidcStartAttributes); ok { + return x.OidcStartAttributes + } } return nil } func (x *AuthenticateRequest) GetOidcAuthMethodAuthenticateCallbackRequest() *authmethods.OidcAuthMethodAuthenticateCallbackRequest { - if x, ok := x.GetAttrs().(*AuthenticateRequest_OidcAuthMethodAuthenticateCallbackRequest); ok { - return x.OidcAuthMethodAuthenticateCallbackRequest + if x != nil { + if x, ok := x.Attrs.(*AuthenticateRequest_OidcAuthMethodAuthenticateCallbackRequest); ok { + return x.OidcAuthMethodAuthenticateCallbackRequest + } } return nil } func (x *AuthenticateRequest) GetOidcAuthMethodAuthenticateTokenRequest() *authmethods.OidcAuthMethodAuthenticateTokenRequest { - if x, ok := x.GetAttrs().(*AuthenticateRequest_OidcAuthMethodAuthenticateTokenRequest); ok { - return x.OidcAuthMethodAuthenticateTokenRequest + if x != nil { + if x, ok := x.Attrs.(*AuthenticateRequest_OidcAuthMethodAuthenticateTokenRequest); ok { + return x.OidcAuthMethodAuthenticateTokenRequest + } } return nil } func (x *AuthenticateRequest) GetLdapLoginAttributes() *LdapLoginAttributes { - if x, ok := x.GetAttrs().(*AuthenticateRequest_LdapLoginAttributes); ok { - return x.LdapLoginAttributes + if x != nil { + if x, ok := x.Attrs.(*AuthenticateRequest_LdapLoginAttributes); ok { + return x.LdapLoginAttributes + } } return nil } @@ -1191,13 +1157,10 @@ func (*AuthenticateRequest_OidcAuthMethodAuthenticateTokenRequest) isAuthenticat func (*AuthenticateRequest_LdapLoginAttributes) isAuthenticateRequest_Attrs() {} type AuthenticateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The type of the token returned. Either "cookie" or "token". Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *AuthenticateResponse_Attributes // *AuthenticateResponse_OidcAuthMethodAuthenticateStartResponse @@ -1206,16 +1169,16 @@ type AuthenticateResponse struct { // *AuthenticateResponse_AuthTokenResponse Attrs isAuthenticateResponse_Attrs `protobuf_oneof:"attrs"` // The command that was performed. - Command string `protobuf:"bytes,5,opt,name=command,proto3" json:"command,omitempty" class:"public"` // @gotags: `class:"public"` + Command string `protobuf:"bytes,5,opt,name=command,proto3" json:"command,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthenticateResponse) Reset() { *x = AuthenticateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthenticateResponse) String() string { @@ -1226,7 +1189,7 @@ func (*AuthenticateResponse) ProtoMessage() {} func (x *AuthenticateResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_auth_method_service_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1248,44 +1211,54 @@ func (x *AuthenticateResponse) GetType() string { return "" } -func (m *AuthenticateResponse) GetAttrs() isAuthenticateResponse_Attrs { - if m != nil { - return m.Attrs +func (x *AuthenticateResponse) GetAttrs() isAuthenticateResponse_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *AuthenticateResponse) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*AuthenticateResponse_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*AuthenticateResponse_Attributes); ok { + return x.Attributes + } } return nil } func (x *AuthenticateResponse) GetOidcAuthMethodAuthenticateStartResponse() *authmethods.OidcAuthMethodAuthenticateStartResponse { - if x, ok := x.GetAttrs().(*AuthenticateResponse_OidcAuthMethodAuthenticateStartResponse); ok { - return x.OidcAuthMethodAuthenticateStartResponse + if x != nil { + if x, ok := x.Attrs.(*AuthenticateResponse_OidcAuthMethodAuthenticateStartResponse); ok { + return x.OidcAuthMethodAuthenticateStartResponse + } } return nil } func (x *AuthenticateResponse) GetOidcAuthMethodAuthenticateCallbackResponse() *authmethods.OidcAuthMethodAuthenticateCallbackResponse { - if x, ok := x.GetAttrs().(*AuthenticateResponse_OidcAuthMethodAuthenticateCallbackResponse); ok { - return x.OidcAuthMethodAuthenticateCallbackResponse + if x != nil { + if x, ok := x.Attrs.(*AuthenticateResponse_OidcAuthMethodAuthenticateCallbackResponse); ok { + return x.OidcAuthMethodAuthenticateCallbackResponse + } } return nil } func (x *AuthenticateResponse) GetOidcAuthMethodAuthenticateTokenResponse() *authmethods.OidcAuthMethodAuthenticateTokenResponse { - if x, ok := x.GetAttrs().(*AuthenticateResponse_OidcAuthMethodAuthenticateTokenResponse); ok { - return x.OidcAuthMethodAuthenticateTokenResponse + if x != nil { + if x, ok := x.Attrs.(*AuthenticateResponse_OidcAuthMethodAuthenticateTokenResponse); ok { + return x.OidcAuthMethodAuthenticateTokenResponse + } } return nil } func (x *AuthenticateResponse) GetAuthTokenResponse() *authtokens.AuthToken { - if x, ok := x.GetAttrs().(*AuthenticateResponse_AuthTokenResponse); ok { - return x.AuthTokenResponse + if x != nil { + if x, ok := x.Attrs.(*AuthenticateResponse_AuthTokenResponse); ok { + return x.AuthTokenResponse + } } return nil } @@ -1975,224 +1948,6 @@ func file_controller_api_services_v1_auth_method_service_proto_init() { if File_controller_api_services_v1_auth_method_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_auth_method_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetAuthMethodRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetAuthMethodResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListAuthMethodsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListAuthMethodsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateAuthMethodRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateAuthMethodResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateAuthMethodRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateAuthMethodResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteAuthMethodRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteAuthMethodResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*OidcChangeStateAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*ChangeStateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*ChangeStateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*PasswordLoginAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*OidcStartAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*LdapLoginAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*AuthenticateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_auth_method_service_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*AuthenticateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_services_v1_auth_method_service_proto_msgTypes[11].OneofWrappers = []any{ (*ChangeStateRequest_Attributes)(nil), (*ChangeStateRequest_OidcChangeStateAttributes)(nil), diff --git a/internal/gen/controller/api/services/authtokens_service.pb.go b/internal/gen/controller/api/services/authtokens_service.pb.go index b5596e679b..5428b24f57 100644 --- a/internal/gen/controller/api/services/authtokens_service.pb.go +++ b/internal/gen/controller/api/services/authtokens_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/authtokens_service.proto @@ -27,20 +27,17 @@ const ( ) type GetAuthTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *GetAuthTokenRequest) Reset() { *x = GetAuthTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAuthTokenRequest) String() string { @@ -51,7 +48,7 @@ func (*GetAuthTokenRequest) ProtoMessage() {} func (x *GetAuthTokenRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -74,20 +71,17 @@ func (x *GetAuthTokenRequest) GetId() string { } type GetAuthTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *authtokens.AuthToken `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *authtokens.AuthToken `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetAuthTokenResponse) Reset() { *x = GetAuthTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAuthTokenResponse) String() string { @@ -98,7 +92,7 @@ func (*GetAuthTokenResponse) ProtoMessage() {} func (x *GetAuthTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -121,12 +115,9 @@ func (x *GetAuthTokenResponse) GetItem() *authtokens.AuthToken { } type ListAuthTokensRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public"` // @gotags: `class:"public"` - Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public"` // @gotags: `class:"public"` + Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public"` // @gotags: `class:"public"` // You can specify that the filter should only return items that match. // Refer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information. Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` @@ -139,16 +130,16 @@ type ListAuthTokensRequest struct { // If you do not set a page size, Boundary uses the configured default page size. // If the page_size is greater than the default page size configured, // Boundary truncates the page size to this number. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListAuthTokensRequest) Reset() { *x = ListAuthTokensRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListAuthTokensRequest) String() string { @@ -159,7 +150,7 @@ func (*ListAuthTokensRequest) ProtoMessage() {} func (x *ListAuthTokensRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -210,10 +201,7 @@ func (x *ListAuthTokensRequest) GetPageSize() uint32 { } type ListAuthTokensResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Items []*authtokens.AuthToken `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". // Delta signifies that this is part of a paginated result @@ -234,16 +222,16 @@ type ListAuthTokensResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListAuthTokensResponse) Reset() { *x = ListAuthTokensResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListAuthTokensResponse) String() string { @@ -254,7 +242,7 @@ func (*ListAuthTokensResponse) ProtoMessage() {} func (x *ListAuthTokensResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -319,20 +307,17 @@ func (x *ListAuthTokensResponse) GetEstItemCount() uint32 { } type DeleteAuthTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *DeleteAuthTokenRequest) Reset() { *x = DeleteAuthTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteAuthTokenRequest) String() string { @@ -343,7 +328,7 @@ func (*DeleteAuthTokenRequest) ProtoMessage() {} func (x *DeleteAuthTokenRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -366,18 +351,16 @@ func (x *DeleteAuthTokenRequest) GetId() string { } type DeleteAuthTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteAuthTokenResponse) Reset() { *x = DeleteAuthTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteAuthTokenResponse) String() string { @@ -388,7 +371,7 @@ func (*DeleteAuthTokenResponse) ProtoMessage() {} func (x *DeleteAuthTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_authtokens_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -566,80 +549,6 @@ func file_controller_api_services_v1_authtokens_service_proto_init() { if File_controller_api_services_v1_authtokens_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_authtokens_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetAuthTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_authtokens_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetAuthTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_authtokens_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListAuthTokensRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_authtokens_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListAuthTokensResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_authtokens_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*DeleteAuthTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_authtokens_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*DeleteAuthTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/billing_service.pb.go b/internal/gen/controller/api/services/billing_service.pb.go index 55b310fc0b..51af4ced84 100644 --- a/internal/gen/controller/api/services/billing_service.pb.go +++ b/internal/gen/controller/api/services/billing_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/billing_service.proto @@ -27,23 +27,20 @@ const ( ) type MonthlyActiveUsersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // An optional start time of the billing period to query, in the format of YYYY-MM. StartTime string `protobuf:"bytes,1,opt,name=start_time,proto3" json:"start_time,omitempty" class:"public"` // @gotags: class:"public" // An optional end time of the billing period to query, in the format of YYYY-MM. - EndTime string `protobuf:"bytes,2,opt,name=end_time,proto3" json:"end_time,omitempty" class:"public"` // @gotags: class:"public" + EndTime string `protobuf:"bytes,2,opt,name=end_time,proto3" json:"end_time,omitempty" class:"public"` // @gotags: class:"public" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MonthlyActiveUsersRequest) Reset() { *x = MonthlyActiveUsersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_billing_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_billing_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MonthlyActiveUsersRequest) String() string { @@ -54,7 +51,7 @@ func (*MonthlyActiveUsersRequest) ProtoMessage() {} func (x *MonthlyActiveUsersRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_billing_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -84,20 +81,17 @@ func (x *MonthlyActiveUsersRequest) GetEndTime() string { } type MonthlyActiveUsersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Items []*billing.ActiveUsers `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` unknownFields protoimpl.UnknownFields - - Items []*billing.ActiveUsers `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MonthlyActiveUsersResponse) Reset() { *x = MonthlyActiveUsersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_billing_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_billing_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MonthlyActiveUsersResponse) String() string { @@ -108,7 +102,7 @@ func (*MonthlyActiveUsersResponse) ProtoMessage() {} func (x *MonthlyActiveUsersResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_billing_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -222,32 +216,6 @@ func file_controller_api_services_v1_billing_service_proto_init() { if File_controller_api_services_v1_billing_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_billing_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*MonthlyActiveUsersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_billing_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*MonthlyActiveUsersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/credential_library_service.pb.go b/internal/gen/controller/api/services/credential_library_service.pb.go index 0007d07078..7989a714e9 100644 --- a/internal/gen/controller/api/services/credential_library_service.pb.go +++ b/internal/gen/controller/api/services/credential_library_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/credential_library_service.proto @@ -29,20 +29,17 @@ const ( ) type GetCredentialLibraryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *GetCredentialLibraryRequest) Reset() { *x = GetCredentialLibraryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCredentialLibraryRequest) String() string { @@ -53,7 +50,7 @@ func (*GetCredentialLibraryRequest) ProtoMessage() {} func (x *GetCredentialLibraryRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,20 +73,17 @@ func (x *GetCredentialLibraryRequest) GetId() string { } type GetCredentialLibraryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *credentiallibraries.CredentialLibrary `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *credentiallibraries.CredentialLibrary `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCredentialLibraryResponse) Reset() { *x = GetCredentialLibraryResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCredentialLibraryResponse) String() string { @@ -100,7 +94,7 @@ func (*GetCredentialLibraryResponse) ProtoMessage() {} func (x *GetCredentialLibraryResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,11 +117,8 @@ func (x *GetCredentialLibraryResponse) GetItem() *credentiallibraries.Credential } type ListCredentialLibrariesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CredentialStoreId string `protobuf:"bytes,1,opt,name=credential_store_id,json=scope_id,proto3" json:"credential_store_id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + CredentialStoreId string `protobuf:"bytes,1,opt,name=credential_store_id,json=scope_id,proto3" json:"credential_store_id,omitempty" class:"public"` // @gotags: `class:"public"` // You can specify that the filter should only return items that match. // Refer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information. Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` @@ -140,16 +131,16 @@ type ListCredentialLibrariesRequest struct { // If you do not set a page size, Boundary uses the configured default page size. // If the page_size is greater than the default page size configured, // Boundary truncates the page size to this number. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListCredentialLibrariesRequest) Reset() { *x = ListCredentialLibrariesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListCredentialLibrariesRequest) String() string { @@ -160,7 +151,7 @@ func (*ListCredentialLibrariesRequest) ProtoMessage() {} func (x *ListCredentialLibrariesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -204,10 +195,7 @@ func (x *ListCredentialLibrariesRequest) GetPageSize() uint32 { } type ListCredentialLibrariesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The items returned in this page. Items []*credentiallibraries.CredentialLibrary `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". @@ -229,16 +217,16 @@ type ListCredentialLibrariesResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListCredentialLibrariesResponse) Reset() { *x = ListCredentialLibrariesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListCredentialLibrariesResponse) String() string { @@ -249,7 +237,7 @@ func (*ListCredentialLibrariesResponse) ProtoMessage() {} func (x *ListCredentialLibrariesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -314,20 +302,17 @@ func (x *ListCredentialLibrariesResponse) GetEstItemCount() uint32 { } type CreateCredentialLibraryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *credentiallibraries.CredentialLibrary `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *credentiallibraries.CredentialLibrary `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateCredentialLibraryRequest) Reset() { *x = CreateCredentialLibraryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateCredentialLibraryRequest) String() string { @@ -338,7 +323,7 @@ func (*CreateCredentialLibraryRequest) ProtoMessage() {} func (x *CreateCredentialLibraryRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -361,21 +346,18 @@ func (x *CreateCredentialLibraryRequest) GetItem() *credentiallibraries.Credenti } type CreateCredentialLibraryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public"` // @gotags: `class:"public"` + Item *credentiallibraries.CredentialLibrary `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public"` // @gotags: `class:"public"` - Item *credentiallibraries.CredentialLibrary `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateCredentialLibraryResponse) Reset() { *x = CreateCredentialLibraryResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateCredentialLibraryResponse) String() string { @@ -386,7 +368,7 @@ func (*CreateCredentialLibraryResponse) ProtoMessage() {} func (x *CreateCredentialLibraryResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -416,22 +398,19 @@ func (x *CreateCredentialLibraryResponse) GetItem() *credentiallibraries.Credent } type UpdateCredentialLibraryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + Item *credentiallibraries.CredentialLibrary `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` - Item *credentiallibraries.CredentialLibrary `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateCredentialLibraryRequest) Reset() { *x = UpdateCredentialLibraryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateCredentialLibraryRequest) String() string { @@ -442,7 +421,7 @@ func (*UpdateCredentialLibraryRequest) ProtoMessage() {} func (x *UpdateCredentialLibraryRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -479,20 +458,17 @@ func (x *UpdateCredentialLibraryRequest) GetUpdateMask() *fieldmaskpb.FieldMask } type UpdateCredentialLibraryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *credentiallibraries.CredentialLibrary `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *credentiallibraries.CredentialLibrary `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateCredentialLibraryResponse) Reset() { *x = UpdateCredentialLibraryResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateCredentialLibraryResponse) String() string { @@ -503,7 +479,7 @@ func (*UpdateCredentialLibraryResponse) ProtoMessage() {} func (x *UpdateCredentialLibraryResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -526,20 +502,17 @@ func (x *UpdateCredentialLibraryResponse) GetItem() *credentiallibraries.Credent } type DeleteCredentialLibraryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *DeleteCredentialLibraryRequest) Reset() { *x = DeleteCredentialLibraryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteCredentialLibraryRequest) String() string { @@ -550,7 +523,7 @@ func (*DeleteCredentialLibraryRequest) ProtoMessage() {} func (x *DeleteCredentialLibraryRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -573,18 +546,16 @@ func (x *DeleteCredentialLibraryRequest) GetId() string { } type DeleteCredentialLibraryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteCredentialLibraryResponse) Reset() { *x = DeleteCredentialLibraryResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteCredentialLibraryResponse) String() string { @@ -595,7 +566,7 @@ func (*DeleteCredentialLibraryResponse) ProtoMessage() {} func (x *DeleteCredentialLibraryResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_library_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -888,128 +859,6 @@ func file_controller_api_services_v1_credential_library_service_proto_init() { if File_controller_api_services_v1_credential_library_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_credential_library_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetCredentialLibraryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_library_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetCredentialLibraryResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_library_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListCredentialLibrariesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_library_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListCredentialLibrariesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_library_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateCredentialLibraryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_library_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateCredentialLibraryResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_library_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateCredentialLibraryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_library_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateCredentialLibraryResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_library_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteCredentialLibraryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_library_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteCredentialLibraryResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/credential_service.pb.go b/internal/gen/controller/api/services/credential_service.pb.go index cad2aa1187..32d051c583 100644 --- a/internal/gen/controller/api/services/credential_service.pb.go +++ b/internal/gen/controller/api/services/credential_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/credential_service.proto @@ -29,20 +29,17 @@ const ( ) type GetCredentialRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *GetCredentialRequest) Reset() { *x = GetCredentialRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCredentialRequest) String() string { @@ -53,7 +50,7 @@ func (*GetCredentialRequest) ProtoMessage() {} func (x *GetCredentialRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,20 +73,17 @@ func (x *GetCredentialRequest) GetId() string { } type GetCredentialResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *credentials.Credential `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *credentials.Credential `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCredentialResponse) Reset() { *x = GetCredentialResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCredentialResponse) String() string { @@ -100,7 +94,7 @@ func (*GetCredentialResponse) ProtoMessage() {} func (x *GetCredentialResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,11 +117,8 @@ func (x *GetCredentialResponse) GetItem() *credentials.Credential { } type ListCredentialsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CredentialStoreId string `protobuf:"bytes,1,opt,name=credential_store_id,json=scope_id,proto3" json:"credential_store_id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + CredentialStoreId string `protobuf:"bytes,1,opt,name=credential_store_id,json=scope_id,proto3" json:"credential_store_id,omitempty" class:"public"` // @gotags: `class:"public"` // You can specify that the filter should only return items that match. // Refer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information. Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` @@ -140,16 +131,16 @@ type ListCredentialsRequest struct { // If you do not set a page size, Boundary uses the configured default page size. // If the page_size is greater than the default page size configured, // Boundary truncates the page size to this number. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListCredentialsRequest) Reset() { *x = ListCredentialsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListCredentialsRequest) String() string { @@ -160,7 +151,7 @@ func (*ListCredentialsRequest) ProtoMessage() {} func (x *ListCredentialsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -204,10 +195,7 @@ func (x *ListCredentialsRequest) GetPageSize() uint32 { } type ListCredentialsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The items returned in this page. Items []*credentials.Credential `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". @@ -229,16 +217,16 @@ type ListCredentialsResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListCredentialsResponse) Reset() { *x = ListCredentialsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListCredentialsResponse) String() string { @@ -249,7 +237,7 @@ func (*ListCredentialsResponse) ProtoMessage() {} func (x *ListCredentialsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -314,20 +302,17 @@ func (x *ListCredentialsResponse) GetEstItemCount() uint32 { } type CreateCredentialRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *credentials.Credential `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *credentials.Credential `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateCredentialRequest) Reset() { *x = CreateCredentialRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateCredentialRequest) String() string { @@ -338,7 +323,7 @@ func (*CreateCredentialRequest) ProtoMessage() {} func (x *CreateCredentialRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -361,21 +346,18 @@ func (x *CreateCredentialRequest) GetItem() *credentials.Credential { } type CreateCredentialResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public"` // @gotags: `class:"public"` + Item *credentials.Credential `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public"` // @gotags: `class:"public"` - Item *credentials.Credential `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateCredentialResponse) Reset() { *x = CreateCredentialResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateCredentialResponse) String() string { @@ -386,7 +368,7 @@ func (*CreateCredentialResponse) ProtoMessage() {} func (x *CreateCredentialResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -416,22 +398,19 @@ func (x *CreateCredentialResponse) GetItem() *credentials.Credential { } type UpdateCredentialRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + Item *credentials.Credential `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` - Item *credentials.Credential `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateCredentialRequest) Reset() { *x = UpdateCredentialRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateCredentialRequest) String() string { @@ -442,7 +421,7 @@ func (*UpdateCredentialRequest) ProtoMessage() {} func (x *UpdateCredentialRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -479,20 +458,17 @@ func (x *UpdateCredentialRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateCredentialResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *credentials.Credential `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *credentials.Credential `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateCredentialResponse) Reset() { *x = UpdateCredentialResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateCredentialResponse) String() string { @@ -503,7 +479,7 @@ func (*UpdateCredentialResponse) ProtoMessage() {} func (x *UpdateCredentialResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -526,20 +502,17 @@ func (x *UpdateCredentialResponse) GetItem() *credentials.Credential { } type DeleteCredentialRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *DeleteCredentialRequest) Reset() { *x = DeleteCredentialRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteCredentialRequest) String() string { @@ -550,7 +523,7 @@ func (*DeleteCredentialRequest) ProtoMessage() {} func (x *DeleteCredentialRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -573,18 +546,16 @@ func (x *DeleteCredentialRequest) GetId() string { } type DeleteCredentialResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteCredentialResponse) Reset() { *x = DeleteCredentialResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteCredentialResponse) String() string { @@ -595,7 +566,7 @@ func (*DeleteCredentialResponse) ProtoMessage() {} func (x *DeleteCredentialResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -855,128 +826,6 @@ func file_controller_api_services_v1_credential_service_proto_init() { if File_controller_api_services_v1_credential_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_credential_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetCredentialRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetCredentialResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListCredentialsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListCredentialsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateCredentialRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateCredentialResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateCredentialRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateCredentialResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteCredentialRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteCredentialResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/credential_store_service.pb.go b/internal/gen/controller/api/services/credential_store_service.pb.go index d55ba95944..f4ed7ea5c7 100644 --- a/internal/gen/controller/api/services/credential_store_service.pb.go +++ b/internal/gen/controller/api/services/credential_store_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/credential_store_service.proto @@ -29,20 +29,17 @@ const ( ) type GetCredentialStoreRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *GetCredentialStoreRequest) Reset() { *x = GetCredentialStoreRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCredentialStoreRequest) String() string { @@ -53,7 +50,7 @@ func (*GetCredentialStoreRequest) ProtoMessage() {} func (x *GetCredentialStoreRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,20 +73,17 @@ func (x *GetCredentialStoreRequest) GetId() string { } type GetCredentialStoreResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *credentialstores.CredentialStore `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *credentialstores.CredentialStore `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCredentialStoreResponse) Reset() { *x = GetCredentialStoreResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCredentialStoreResponse) String() string { @@ -100,7 +94,7 @@ func (*GetCredentialStoreResponse) ProtoMessage() {} func (x *GetCredentialStoreResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,12 +117,9 @@ func (x *GetCredentialStoreResponse) GetItem() *credentialstores.CredentialStore } type ListCredentialStoresRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public"` // @gotags: `class:"public"` - Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public"` // @gotags: `class:"public"` + Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public"` // @gotags: `class:"public"` // You can specify that the filter should only return items that match. // Refer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information. Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` @@ -141,16 +132,16 @@ type ListCredentialStoresRequest struct { // If you do not set a page size, Boundary uses the configured default page size. // If the page_size is greater than the default page size configured, // Boundary truncates the page size to this number. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListCredentialStoresRequest) Reset() { *x = ListCredentialStoresRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListCredentialStoresRequest) String() string { @@ -161,7 +152,7 @@ func (*ListCredentialStoresRequest) ProtoMessage() {} func (x *ListCredentialStoresRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -212,10 +203,7 @@ func (x *ListCredentialStoresRequest) GetPageSize() uint32 { } type ListCredentialStoresResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The items returned in this page. Items []*credentialstores.CredentialStore `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". @@ -237,16 +225,16 @@ type ListCredentialStoresResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListCredentialStoresResponse) Reset() { *x = ListCredentialStoresResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListCredentialStoresResponse) String() string { @@ -257,7 +245,7 @@ func (*ListCredentialStoresResponse) ProtoMessage() {} func (x *ListCredentialStoresResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -322,20 +310,17 @@ func (x *ListCredentialStoresResponse) GetEstItemCount() uint32 { } type CreateCredentialStoreRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *credentialstores.CredentialStore `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *credentialstores.CredentialStore `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateCredentialStoreRequest) Reset() { *x = CreateCredentialStoreRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateCredentialStoreRequest) String() string { @@ -346,7 +331,7 @@ func (*CreateCredentialStoreRequest) ProtoMessage() {} func (x *CreateCredentialStoreRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -369,21 +354,18 @@ func (x *CreateCredentialStoreRequest) GetItem() *credentialstores.CredentialSto } type CreateCredentialStoreResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public"` // @gotags: `class:"public"` + Item *credentialstores.CredentialStore `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public"` // @gotags: `class:"public"` - Item *credentialstores.CredentialStore `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateCredentialStoreResponse) Reset() { *x = CreateCredentialStoreResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateCredentialStoreResponse) String() string { @@ -394,7 +376,7 @@ func (*CreateCredentialStoreResponse) ProtoMessage() {} func (x *CreateCredentialStoreResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -424,22 +406,19 @@ func (x *CreateCredentialStoreResponse) GetItem() *credentialstores.CredentialSt } type UpdateCredentialStoreRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + Item *credentialstores.CredentialStore `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` - Item *credentialstores.CredentialStore `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateCredentialStoreRequest) Reset() { *x = UpdateCredentialStoreRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateCredentialStoreRequest) String() string { @@ -450,7 +429,7 @@ func (*UpdateCredentialStoreRequest) ProtoMessage() {} func (x *UpdateCredentialStoreRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -487,20 +466,17 @@ func (x *UpdateCredentialStoreRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateCredentialStoreResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *credentialstores.CredentialStore `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *credentialstores.CredentialStore `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateCredentialStoreResponse) Reset() { *x = UpdateCredentialStoreResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateCredentialStoreResponse) String() string { @@ -511,7 +487,7 @@ func (*UpdateCredentialStoreResponse) ProtoMessage() {} func (x *UpdateCredentialStoreResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -534,20 +510,17 @@ func (x *UpdateCredentialStoreResponse) GetItem() *credentialstores.CredentialSt } type DeleteCredentialStoreRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *DeleteCredentialStoreRequest) Reset() { *x = DeleteCredentialStoreRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteCredentialStoreRequest) String() string { @@ -558,7 +531,7 @@ func (*DeleteCredentialStoreRequest) ProtoMessage() {} func (x *DeleteCredentialStoreRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -581,18 +554,16 @@ func (x *DeleteCredentialStoreRequest) GetId() string { } type DeleteCredentialStoreResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteCredentialStoreResponse) Reset() { *x = DeleteCredentialStoreResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteCredentialStoreResponse) String() string { @@ -603,7 +574,7 @@ func (*DeleteCredentialStoreResponse) ProtoMessage() {} func (x *DeleteCredentialStoreResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_credential_store_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -882,128 +853,6 @@ func file_controller_api_services_v1_credential_store_service_proto_init() { if File_controller_api_services_v1_credential_store_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_credential_store_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetCredentialStoreRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_store_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetCredentialStoreResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_store_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListCredentialStoresRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_store_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListCredentialStoresResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_store_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateCredentialStoreRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_store_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateCredentialStoreResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_store_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateCredentialStoreRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_store_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateCredentialStoreResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_store_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteCredentialStoreRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_credential_store_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteCredentialStoreResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/doc.pb.go b/internal/gen/controller/api/services/doc.pb.go index e66ec2058b..070258b53d 100644 --- a/internal/gen/controller/api/services/doc.pb.go +++ b/internal/gen/controller/api/services/doc.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/doc.proto diff --git a/internal/gen/controller/api/services/group_service.pb.go b/internal/gen/controller/api/services/group_service.pb.go index 85a542faf1..f367ca86b4 100644 --- a/internal/gen/controller/api/services/group_service.pb.go +++ b/internal/gen/controller/api/services/group_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/group_service.proto @@ -28,20 +28,17 @@ const ( ) type GetGroupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *GetGroupRequest) Reset() { *x = GetGroupRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetGroupRequest) String() string { @@ -52,7 +49,7 @@ func (*GetGroupRequest) ProtoMessage() {} func (x *GetGroupRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -75,20 +72,17 @@ func (x *GetGroupRequest) GetId() string { } type GetGroupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *groups.Group `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *groups.Group `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetGroupResponse) Reset() { *x = GetGroupResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetGroupResponse) String() string { @@ -99,7 +93,7 @@ func (*GetGroupResponse) ProtoMessage() {} func (x *GetGroupResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -122,12 +116,9 @@ func (x *GetGroupResponse) GetItem() *groups.Group { } type ListGroupsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // You can specify that the filter should only return items that match. // Refer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information. Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` @@ -140,16 +131,16 @@ type ListGroupsRequest struct { // If unset, the default page size configured will be used. // If the page_size is greater than the default page configured, // the page size will be truncated to this number. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListGroupsRequest) Reset() { *x = ListGroupsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListGroupsRequest) String() string { @@ -160,7 +151,7 @@ func (*ListGroupsRequest) ProtoMessage() {} func (x *ListGroupsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -211,11 +202,8 @@ func (x *ListGroupsRequest) GetPageSize() uint32 { } type ListGroupsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Items []*groups.Group `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Items []*groups.Group `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". // Delta signifies that this is part of a paginated result // or an update to a previously completed pagination. @@ -235,16 +223,16 @@ type ListGroupsResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListGroupsResponse) Reset() { *x = ListGroupsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListGroupsResponse) String() string { @@ -255,7 +243,7 @@ func (*ListGroupsResponse) ProtoMessage() {} func (x *ListGroupsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -320,20 +308,17 @@ func (x *ListGroupsResponse) GetEstItemCount() uint32 { } type CreateGroupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *groups.Group `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *groups.Group `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateGroupRequest) Reset() { *x = CreateGroupRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateGroupRequest) String() string { @@ -344,7 +329,7 @@ func (*CreateGroupRequest) ProtoMessage() {} func (x *CreateGroupRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -367,21 +352,18 @@ func (x *CreateGroupRequest) GetItem() *groups.Group { } type CreateGroupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *groups.Group `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *groups.Group `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateGroupResponse) Reset() { *x = CreateGroupResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateGroupResponse) String() string { @@ -392,7 +374,7 @@ func (*CreateGroupResponse) ProtoMessage() {} func (x *CreateGroupResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -422,22 +404,19 @@ func (x *CreateGroupResponse) GetItem() *groups.Group { } type UpdateGroupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *groups.Group `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *groups.Group `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateGroupRequest) Reset() { *x = UpdateGroupRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateGroupRequest) String() string { @@ -448,7 +427,7 @@ func (*UpdateGroupRequest) ProtoMessage() {} func (x *UpdateGroupRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -485,20 +464,17 @@ func (x *UpdateGroupRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateGroupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *groups.Group `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *groups.Group `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateGroupResponse) Reset() { *x = UpdateGroupResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateGroupResponse) String() string { @@ -509,7 +485,7 @@ func (*UpdateGroupResponse) ProtoMessage() {} func (x *UpdateGroupResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -532,20 +508,17 @@ func (x *UpdateGroupResponse) GetItem() *groups.Group { } type DeleteGroupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *DeleteGroupRequest) Reset() { *x = DeleteGroupRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteGroupRequest) String() string { @@ -556,7 +529,7 @@ func (*DeleteGroupRequest) ProtoMessage() {} func (x *DeleteGroupRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -579,18 +552,16 @@ func (x *DeleteGroupRequest) GetId() string { } type DeleteGroupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteGroupResponse) Reset() { *x = DeleteGroupResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteGroupResponse) String() string { @@ -601,7 +572,7 @@ func (*DeleteGroupResponse) ProtoMessage() {} func (x *DeleteGroupResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -617,24 +588,21 @@ func (*DeleteGroupResponse) Descriptor() ([]byte, []int) { } type AddGroupMembersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - MemberIds []string `protobuf:"bytes,3,rep,name=member_ids,proto3" json:"member_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + MemberIds []string `protobuf:"bytes,3,rep,name=member_ids,proto3" json:"member_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AddGroupMembersRequest) Reset() { *x = AddGroupMembersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddGroupMembersRequest) String() string { @@ -645,7 +613,7 @@ func (*AddGroupMembersRequest) ProtoMessage() {} func (x *AddGroupMembersRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -682,20 +650,17 @@ func (x *AddGroupMembersRequest) GetMemberIds() []string { } type AddGroupMembersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *groups.Group `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *groups.Group `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AddGroupMembersResponse) Reset() { *x = AddGroupMembersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddGroupMembersResponse) String() string { @@ -706,7 +671,7 @@ func (*AddGroupMembersResponse) ProtoMessage() {} func (x *AddGroupMembersResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -729,24 +694,21 @@ func (x *AddGroupMembersResponse) GetItem() *groups.Group { } type SetGroupMembersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - MemberIds []string `protobuf:"bytes,3,rep,name=member_ids,proto3" json:"member_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + MemberIds []string `protobuf:"bytes,3,rep,name=member_ids,proto3" json:"member_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetGroupMembersRequest) Reset() { *x = SetGroupMembersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetGroupMembersRequest) String() string { @@ -757,7 +719,7 @@ func (*SetGroupMembersRequest) ProtoMessage() {} func (x *SetGroupMembersRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -794,20 +756,17 @@ func (x *SetGroupMembersRequest) GetMemberIds() []string { } type SetGroupMembersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *groups.Group `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *groups.Group `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetGroupMembersResponse) Reset() { *x = SetGroupMembersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetGroupMembersResponse) String() string { @@ -818,7 +777,7 @@ func (*SetGroupMembersResponse) ProtoMessage() {} func (x *SetGroupMembersResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -841,24 +800,21 @@ func (x *SetGroupMembersResponse) GetItem() *groups.Group { } type RemoveGroupMembersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - MemberIds []string `protobuf:"bytes,3,rep,name=member_ids,proto3" json:"member_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + MemberIds []string `protobuf:"bytes,3,rep,name=member_ids,proto3" json:"member_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoveGroupMembersRequest) Reset() { *x = RemoveGroupMembersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveGroupMembersRequest) String() string { @@ -869,7 +825,7 @@ func (*RemoveGroupMembersRequest) ProtoMessage() {} func (x *RemoveGroupMembersRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -906,20 +862,17 @@ func (x *RemoveGroupMembersRequest) GetMemberIds() []string { } type RemoveGroupMembersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *groups.Group `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *groups.Group `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveGroupMembersResponse) Reset() { *x = RemoveGroupMembersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_group_service_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_group_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveGroupMembersResponse) String() string { @@ -930,7 +883,7 @@ func (*RemoveGroupMembersResponse) ProtoMessage() {} func (x *RemoveGroupMembersResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_group_service_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1271,200 +1224,6 @@ func file_controller_api_services_v1_group_service_proto_init() { if File_controller_api_services_v1_group_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_group_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetGroupRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetGroupResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListGroupsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListGroupsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateGroupRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateGroupResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateGroupRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateGroupResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteGroupRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteGroupResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*AddGroupMembersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*AddGroupMembersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*SetGroupMembersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*SetGroupMembersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*RemoveGroupMembersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_group_service_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*RemoveGroupMembersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/host_catalog_service.pb.go b/internal/gen/controller/api/services/host_catalog_service.pb.go index 78b1fab948..854082992e 100644 --- a/internal/gen/controller/api/services/host_catalog_service.pb.go +++ b/internal/gen/controller/api/services/host_catalog_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/host_catalog_service.proto @@ -29,20 +29,17 @@ const ( ) type GetHostCatalogRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *GetHostCatalogRequest) Reset() { *x = GetHostCatalogRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetHostCatalogRequest) String() string { @@ -53,7 +50,7 @@ func (*GetHostCatalogRequest) ProtoMessage() {} func (x *GetHostCatalogRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,20 +73,17 @@ func (x *GetHostCatalogRequest) GetId() string { } type GetHostCatalogResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *hostcatalogs.HostCatalog `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *hostcatalogs.HostCatalog `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetHostCatalogResponse) Reset() { *x = GetHostCatalogResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetHostCatalogResponse) String() string { @@ -100,7 +94,7 @@ func (*GetHostCatalogResponse) ProtoMessage() {} func (x *GetHostCatalogResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,12 +117,9 @@ func (x *GetHostCatalogResponse) GetItem() *hostcatalogs.HostCatalog { } type ListHostCatalogsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // You can specify that the filter should only return items that match. // Refer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information. Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` @@ -141,16 +132,16 @@ type ListHostCatalogsRequest struct { // If unset, the default page size configured will be used. // If the page_size is greater than the default page configured, // the page size will be truncated to this number. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListHostCatalogsRequest) Reset() { *x = ListHostCatalogsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListHostCatalogsRequest) String() string { @@ -161,7 +152,7 @@ func (*ListHostCatalogsRequest) ProtoMessage() {} func (x *ListHostCatalogsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -212,10 +203,7 @@ func (x *ListHostCatalogsRequest) GetPageSize() uint32 { } type ListHostCatalogsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Items []*hostcatalogs.HostCatalog `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". // Delta signifies that this is part of a paginated result @@ -236,16 +224,16 @@ type ListHostCatalogsResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListHostCatalogsResponse) Reset() { *x = ListHostCatalogsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListHostCatalogsResponse) String() string { @@ -256,7 +244,7 @@ func (*ListHostCatalogsResponse) ProtoMessage() {} func (x *ListHostCatalogsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -321,23 +309,20 @@ func (x *ListHostCatalogsResponse) GetEstItemCount() uint32 { } type CreateHostCatalogRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Item *hostcatalogs.HostCatalog `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Item *hostcatalogs.HostCatalog `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` // As an alternative to providing the plugin id in the provided HostCatalog, // this field can be used to lookup the plugin using its name. - PluginName string `protobuf:"bytes,2,opt,name=plugin_name,proto3" json:"plugin_name,omitempty" class:"public"` // @gotags: `class:"public"` + PluginName string `protobuf:"bytes,2,opt,name=plugin_name,proto3" json:"plugin_name,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateHostCatalogRequest) Reset() { *x = CreateHostCatalogRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateHostCatalogRequest) String() string { @@ -348,7 +333,7 @@ func (*CreateHostCatalogRequest) ProtoMessage() {} func (x *CreateHostCatalogRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -378,21 +363,18 @@ func (x *CreateHostCatalogRequest) GetPluginName() string { } type CreateHostCatalogResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *hostcatalogs.HostCatalog `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *hostcatalogs.HostCatalog `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateHostCatalogResponse) Reset() { *x = CreateHostCatalogResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateHostCatalogResponse) String() string { @@ -403,7 +385,7 @@ func (*CreateHostCatalogResponse) ProtoMessage() {} func (x *CreateHostCatalogResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -433,22 +415,19 @@ func (x *CreateHostCatalogResponse) GetItem() *hostcatalogs.HostCatalog { } type UpdateHostCatalogRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *hostcatalogs.HostCatalog `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *hostcatalogs.HostCatalog `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateHostCatalogRequest) Reset() { *x = UpdateHostCatalogRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateHostCatalogRequest) String() string { @@ -459,7 +438,7 @@ func (*UpdateHostCatalogRequest) ProtoMessage() {} func (x *UpdateHostCatalogRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -496,20 +475,17 @@ func (x *UpdateHostCatalogRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateHostCatalogResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *hostcatalogs.HostCatalog `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *hostcatalogs.HostCatalog `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateHostCatalogResponse) Reset() { *x = UpdateHostCatalogResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateHostCatalogResponse) String() string { @@ -520,7 +496,7 @@ func (*UpdateHostCatalogResponse) ProtoMessage() {} func (x *UpdateHostCatalogResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -543,20 +519,17 @@ func (x *UpdateHostCatalogResponse) GetItem() *hostcatalogs.HostCatalog { } type DeleteHostCatalogRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *DeleteHostCatalogRequest) Reset() { *x = DeleteHostCatalogRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteHostCatalogRequest) String() string { @@ -567,7 +540,7 @@ func (*DeleteHostCatalogRequest) ProtoMessage() {} func (x *DeleteHostCatalogRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -590,18 +563,16 @@ func (x *DeleteHostCatalogRequest) GetId() string { } type DeleteHostCatalogResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteHostCatalogResponse) Reset() { *x = DeleteHostCatalogResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteHostCatalogResponse) String() string { @@ -612,7 +583,7 @@ func (*DeleteHostCatalogResponse) ProtoMessage() {} func (x *DeleteHostCatalogResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_catalog_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -878,128 +849,6 @@ func file_controller_api_services_v1_host_catalog_service_proto_init() { if File_controller_api_services_v1_host_catalog_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_host_catalog_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetHostCatalogRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_catalog_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetHostCatalogResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_catalog_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListHostCatalogsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_catalog_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListHostCatalogsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_catalog_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateHostCatalogRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_catalog_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateHostCatalogResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_catalog_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateHostCatalogRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_catalog_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateHostCatalogResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_catalog_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteHostCatalogRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_catalog_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteHostCatalogResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/host_service.pb.go b/internal/gen/controller/api/services/host_service.pb.go index 62e9a2d5f1..83790cfd0b 100644 --- a/internal/gen/controller/api/services/host_service.pb.go +++ b/internal/gen/controller/api/services/host_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/host_service.proto @@ -29,20 +29,17 @@ const ( ) type GetHostRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *GetHostRequest) Reset() { *x = GetHostRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetHostRequest) String() string { @@ -53,7 +50,7 @@ func (*GetHostRequest) ProtoMessage() {} func (x *GetHostRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,20 +73,17 @@ func (x *GetHostRequest) GetId() string { } type GetHostResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *hosts.Host `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *hosts.Host `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetHostResponse) Reset() { *x = GetHostResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetHostResponse) String() string { @@ -100,7 +94,7 @@ func (*GetHostResponse) ProtoMessage() {} func (x *GetHostResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,11 +117,8 @@ func (x *GetHostResponse) GetItem() *hosts.Host { } type ListHostsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - HostCatalogId string `protobuf:"bytes,1,opt,name=host_catalog_id,proto3" json:"host_catalog_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + HostCatalogId string `protobuf:"bytes,1,opt,name=host_catalog_id,proto3" json:"host_catalog_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // You can specify that the filter should only return items that match. // Refer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information. Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` @@ -140,16 +131,16 @@ type ListHostsRequest struct { // If unset, the default page size configured will be used. // If the page_size is greater than the default page configured, // the page size will be truncated to this number. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListHostsRequest) Reset() { *x = ListHostsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListHostsRequest) String() string { @@ -160,7 +151,7 @@ func (*ListHostsRequest) ProtoMessage() {} func (x *ListHostsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -204,11 +195,8 @@ func (x *ListHostsRequest) GetPageSize() uint32 { } type ListHostsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Items []*hosts.Host `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Items []*hosts.Host `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". // Delta signifies that this is part of a paginated result // or an update to a previously completed pagination. @@ -228,16 +216,16 @@ type ListHostsResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListHostsResponse) Reset() { *x = ListHostsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListHostsResponse) String() string { @@ -248,7 +236,7 @@ func (*ListHostsResponse) ProtoMessage() {} func (x *ListHostsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -313,20 +301,17 @@ func (x *ListHostsResponse) GetEstItemCount() uint32 { } type CreateHostRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *hosts.Host `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *hosts.Host `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateHostRequest) Reset() { *x = CreateHostRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateHostRequest) String() string { @@ -337,7 +322,7 @@ func (*CreateHostRequest) ProtoMessage() {} func (x *CreateHostRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -360,21 +345,18 @@ func (x *CreateHostRequest) GetItem() *hosts.Host { } type CreateHostResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *hosts.Host `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *hosts.Host `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateHostResponse) Reset() { *x = CreateHostResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateHostResponse) String() string { @@ -385,7 +367,7 @@ func (*CreateHostResponse) ProtoMessage() {} func (x *CreateHostResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -415,22 +397,19 @@ func (x *CreateHostResponse) GetItem() *hosts.Host { } type UpdateHostRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *hosts.Host `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *hosts.Host `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateHostRequest) Reset() { *x = UpdateHostRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateHostRequest) String() string { @@ -441,7 +420,7 @@ func (*UpdateHostRequest) ProtoMessage() {} func (x *UpdateHostRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -478,20 +457,17 @@ func (x *UpdateHostRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateHostResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *hosts.Host `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *hosts.Host `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateHostResponse) Reset() { *x = UpdateHostResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateHostResponse) String() string { @@ -502,7 +478,7 @@ func (*UpdateHostResponse) ProtoMessage() {} func (x *UpdateHostResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -525,20 +501,17 @@ func (x *UpdateHostResponse) GetItem() *hosts.Host { } type DeleteHostRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *DeleteHostRequest) Reset() { *x = DeleteHostRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteHostRequest) String() string { @@ -549,7 +522,7 @@ func (*DeleteHostRequest) ProtoMessage() {} func (x *DeleteHostRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -572,18 +545,16 @@ func (x *DeleteHostRequest) GetId() string { } type DeleteHostResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteHostResponse) Reset() { *x = DeleteHostResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteHostResponse) String() string { @@ -594,7 +565,7 @@ func (*DeleteHostResponse) ProtoMessage() {} func (x *DeleteHostResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -832,128 +803,6 @@ func file_controller_api_services_v1_host_service_proto_init() { if File_controller_api_services_v1_host_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_host_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetHostRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetHostResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListHostsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListHostsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateHostRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateHostResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateHostRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateHostResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteHostRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteHostResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/host_set_service.pb.go b/internal/gen/controller/api/services/host_set_service.pb.go index 900340f4d7..74a1c163a4 100644 --- a/internal/gen/controller/api/services/host_set_service.pb.go +++ b/internal/gen/controller/api/services/host_set_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/host_set_service.proto @@ -29,20 +29,17 @@ const ( ) type GetHostSetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *GetHostSetRequest) Reset() { *x = GetHostSetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetHostSetRequest) String() string { @@ -53,7 +50,7 @@ func (*GetHostSetRequest) ProtoMessage() {} func (x *GetHostSetRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,20 +73,17 @@ func (x *GetHostSetRequest) GetId() string { } type GetHostSetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *hostsets.HostSet `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *hostsets.HostSet `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetHostSetResponse) Reset() { *x = GetHostSetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetHostSetResponse) String() string { @@ -100,7 +94,7 @@ func (*GetHostSetResponse) ProtoMessage() {} func (x *GetHostSetResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,11 +117,8 @@ func (x *GetHostSetResponse) GetItem() *hostsets.HostSet { } type ListHostSetsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - HostCatalogId string `protobuf:"bytes,1,opt,name=host_catalog_id,proto3" json:"host_catalog_id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + HostCatalogId string `protobuf:"bytes,1,opt,name=host_catalog_id,proto3" json:"host_catalog_id,omitempty" class:"public"` // @gotags: `class:"public"` // You can specify that the filter should only return items that match. // Refer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information. Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` @@ -140,16 +131,16 @@ type ListHostSetsRequest struct { // If unset, the default page size configured will be used. // If the page_size is greater than the default page configured, // the page size will be truncated to this number.. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListHostSetsRequest) Reset() { *x = ListHostSetsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListHostSetsRequest) String() string { @@ -160,7 +151,7 @@ func (*ListHostSetsRequest) ProtoMessage() {} func (x *ListHostSetsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -204,11 +195,8 @@ func (x *ListHostSetsRequest) GetPageSize() uint32 { } type ListHostSetsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Items []*hostsets.HostSet `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Items []*hostsets.HostSet `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". // Delta signifies that this is part of a paginated result // or an update to a previously completed pagination. @@ -228,16 +216,16 @@ type ListHostSetsResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListHostSetsResponse) Reset() { *x = ListHostSetsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListHostSetsResponse) String() string { @@ -248,7 +236,7 @@ func (*ListHostSetsResponse) ProtoMessage() {} func (x *ListHostSetsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -313,20 +301,17 @@ func (x *ListHostSetsResponse) GetEstItemCount() uint32 { } type CreateHostSetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *hostsets.HostSet `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *hostsets.HostSet `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateHostSetRequest) Reset() { *x = CreateHostSetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateHostSetRequest) String() string { @@ -337,7 +322,7 @@ func (*CreateHostSetRequest) ProtoMessage() {} func (x *CreateHostSetRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -360,21 +345,18 @@ func (x *CreateHostSetRequest) GetItem() *hostsets.HostSet { } type CreateHostSetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public"` // @gotags: `class:"public"` + Item *hostsets.HostSet `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public"` // @gotags: `class:"public"` - Item *hostsets.HostSet `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateHostSetResponse) Reset() { *x = CreateHostSetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateHostSetResponse) String() string { @@ -385,7 +367,7 @@ func (*CreateHostSetResponse) ProtoMessage() {} func (x *CreateHostSetResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -415,22 +397,19 @@ func (x *CreateHostSetResponse) GetItem() *hostsets.HostSet { } type UpdateHostSetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + Item *hostsets.HostSet `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` - Item *hostsets.HostSet `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateHostSetRequest) Reset() { *x = UpdateHostSetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateHostSetRequest) String() string { @@ -441,7 +420,7 @@ func (*UpdateHostSetRequest) ProtoMessage() {} func (x *UpdateHostSetRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -478,20 +457,17 @@ func (x *UpdateHostSetRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateHostSetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *hostsets.HostSet `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *hostsets.HostSet `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateHostSetResponse) Reset() { *x = UpdateHostSetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateHostSetResponse) String() string { @@ -502,7 +478,7 @@ func (*UpdateHostSetResponse) ProtoMessage() {} func (x *UpdateHostSetResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -525,20 +501,17 @@ func (x *UpdateHostSetResponse) GetItem() *hostsets.HostSet { } type DeleteHostSetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *DeleteHostSetRequest) Reset() { *x = DeleteHostSetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteHostSetRequest) String() string { @@ -549,7 +522,7 @@ func (*DeleteHostSetRequest) ProtoMessage() {} func (x *DeleteHostSetRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -572,18 +545,16 @@ func (x *DeleteHostSetRequest) GetId() string { } type DeleteHostSetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteHostSetResponse) Reset() { *x = DeleteHostSetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteHostSetResponse) String() string { @@ -594,7 +565,7 @@ func (*DeleteHostSetResponse) ProtoMessage() {} func (x *DeleteHostSetResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -610,25 +581,22 @@ func (*DeleteHostSetResponse) Descriptor() ([]byte, []int) { } type AddHostSetHostsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` // A list of Host IDs which will be added to this Host Set. Each Host referenced here must be a child of the same Host Catalog of which this Host Set is a child. - HostIds []string `protobuf:"bytes,3,rep,name=host_ids,proto3" json:"host_ids,omitempty" class:"public"` // @gotags: `class:"public"` + HostIds []string `protobuf:"bytes,3,rep,name=host_ids,proto3" json:"host_ids,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AddHostSetHostsRequest) Reset() { *x = AddHostSetHostsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddHostSetHostsRequest) String() string { @@ -639,7 +607,7 @@ func (*AddHostSetHostsRequest) ProtoMessage() {} func (x *AddHostSetHostsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -676,20 +644,17 @@ func (x *AddHostSetHostsRequest) GetHostIds() []string { } type AddHostSetHostsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *hostsets.HostSet `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *hostsets.HostSet `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AddHostSetHostsResponse) Reset() { *x = AddHostSetHostsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddHostSetHostsResponse) String() string { @@ -700,7 +665,7 @@ func (*AddHostSetHostsResponse) ProtoMessage() {} func (x *AddHostSetHostsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -723,25 +688,22 @@ func (x *AddHostSetHostsResponse) GetItem() *hostsets.HostSet { } type SetHostSetHostsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` // A list of Host IDs which will be set on this Host Set. Each Host referenced here must be a child of the same Host Catalog of which this Host Set is a child. - HostIds []string `protobuf:"bytes,3,rep,name=host_ids,proto3" json:"host_ids,omitempty" class:"public"` // @gotags: `class:"public"` + HostIds []string `protobuf:"bytes,3,rep,name=host_ids,proto3" json:"host_ids,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetHostSetHostsRequest) Reset() { *x = SetHostSetHostsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetHostSetHostsRequest) String() string { @@ -752,7 +714,7 @@ func (*SetHostSetHostsRequest) ProtoMessage() {} func (x *SetHostSetHostsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -789,20 +751,17 @@ func (x *SetHostSetHostsRequest) GetHostIds() []string { } type SetHostSetHostsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *hostsets.HostSet `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *hostsets.HostSet `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetHostSetHostsResponse) Reset() { *x = SetHostSetHostsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetHostSetHostsResponse) String() string { @@ -813,7 +772,7 @@ func (*SetHostSetHostsResponse) ProtoMessage() {} func (x *SetHostSetHostsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -836,25 +795,22 @@ func (x *SetHostSetHostsResponse) GetItem() *hostsets.HostSet { } type RemoveHostSetHostsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` // A list of Host IDs which will be removed from this Host Set. - HostIds []string `protobuf:"bytes,3,rep,name=host_ids,proto3" json:"host_ids,omitempty" class:"public"` // @gotags: `class:"public"` + HostIds []string `protobuf:"bytes,3,rep,name=host_ids,proto3" json:"host_ids,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoveHostSetHostsRequest) Reset() { *x = RemoveHostSetHostsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveHostSetHostsRequest) String() string { @@ -865,7 +821,7 @@ func (*RemoveHostSetHostsRequest) ProtoMessage() {} func (x *RemoveHostSetHostsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -902,20 +858,17 @@ func (x *RemoveHostSetHostsRequest) GetHostIds() []string { } type RemoveHostSetHostsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *hostsets.HostSet `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *hostsets.HostSet `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveHostSetHostsResponse) Reset() { *x = RemoveHostSetHostsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveHostSetHostsResponse) String() string { @@ -926,7 +879,7 @@ func (*RemoveHostSetHostsResponse) ProtoMessage() {} func (x *RemoveHostSetHostsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_host_set_service_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1274,200 +1227,6 @@ func file_controller_api_services_v1_host_set_service_proto_init() { if File_controller_api_services_v1_host_set_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_host_set_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetHostSetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetHostSetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListHostSetsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListHostSetsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateHostSetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateHostSetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateHostSetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateHostSetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteHostSetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteHostSetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*AddHostSetHostsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*AddHostSetHostsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*SetHostSetHostsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*SetHostSetHostsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*RemoveHostSetHostsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_host_set_service_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*RemoveHostSetHostsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/list.pb.go b/internal/gen/controller/api/services/list.pb.go index 61a6232b5c..0fcc77910b 100644 --- a/internal/gen/controller/api/services/list.pb.go +++ b/internal/gen/controller/api/services/list.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/list.proto @@ -137,10 +137,7 @@ func (ResourceType) EnumDescriptor() ([]byte, []int) { // is never exposed to the user directly, // only in its marshaled form. type ListToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // when the token was created CreateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` // the resource type listed @@ -151,21 +148,21 @@ type ListToken struct { // The subtype of the token. It changes // between different stages of the pagination. // - // Types that are assignable to Token: + // Types that are valid to be assigned to Token: // // *ListToken_PaginationToken // *ListToken_StartRefreshToken // *ListToken_RefreshToken - Token isListToken_Token `protobuf_oneof:"token"` + Token isListToken_Token `protobuf_oneof:"token"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListToken) Reset() { *x = ListToken{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_list_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_list_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListToken) String() string { @@ -176,7 +173,7 @@ func (*ListToken) ProtoMessage() {} func (x *ListToken) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_list_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -212,30 +209,36 @@ func (x *ListToken) GetGrantsHash() []byte { return nil } -func (m *ListToken) GetToken() isListToken_Token { - if m != nil { - return m.Token +func (x *ListToken) GetToken() isListToken_Token { + if x != nil { + return x.Token } return nil } func (x *ListToken) GetPaginationToken() *PaginationToken { - if x, ok := x.GetToken().(*ListToken_PaginationToken); ok { - return x.PaginationToken + if x != nil { + if x, ok := x.Token.(*ListToken_PaginationToken); ok { + return x.PaginationToken + } } return nil } func (x *ListToken) GetStartRefreshToken() *StartRefreshToken { - if x, ok := x.GetToken().(*ListToken_StartRefreshToken); ok { - return x.StartRefreshToken + if x != nil { + if x, ok := x.Token.(*ListToken_StartRefreshToken); ok { + return x.StartRefreshToken + } } return nil } func (x *ListToken) GetRefreshToken() *RefreshToken { - if x, ok := x.GetToken().(*ListToken_RefreshToken); ok { - return x.RefreshToken + if x != nil { + if x, ok := x.Token.(*ListToken_RefreshToken); ok { + return x.RefreshToken + } } return nil } @@ -271,25 +274,22 @@ func (*ListToken_RefreshToken) isListToken_Token() {} // PaginationToken describes the list token subtype // used during the initial pagination phase. type PaginationToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The public ID of the last item that was included // in the page which this token was returned with. LastItemId string `protobuf:"bytes,1,opt,name=last_item_id,json=lastItemId,proto3" json:"last_item_id,omitempty"` // The create time of the last item that was included // in the page which this token was returned with. LastItemCreateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_item_create_time,json=lastItemCreateTime,proto3" json:"last_item_create_time,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PaginationToken) Reset() { *x = PaginationToken{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_list_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_list_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PaginationToken) String() string { @@ -300,7 +300,7 @@ func (*PaginationToken) ProtoMessage() {} func (x *PaginationToken) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_list_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -333,10 +333,7 @@ func (x *PaginationToken) GetLastItemCreateTime() *timestamppb.Timestamp { // used at the end of any pagination phase, both the // initial and any refresh phases. type StartRefreshToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The end time of the phase previous to this one, // which should be used as the lower bound for the // new refresh phase. @@ -344,15 +341,15 @@ type StartRefreshToken struct { // The timestamp of the transaction that last listed the deleted IDs, // for use as a lower bound in the next deleted IDs list. PreviousDeletedIdsTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=previous_deleted_ids_time,json=previousDeletedIdsTime,proto3" json:"previous_deleted_ids_time,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StartRefreshToken) Reset() { *x = StartRefreshToken{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_list_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_list_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StartRefreshToken) String() string { @@ -363,7 +360,7 @@ func (*StartRefreshToken) ProtoMessage() {} func (x *StartRefreshToken) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_list_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -395,10 +392,7 @@ func (x *StartRefreshToken) GetPreviousDeletedIdsTime() *timestamppb.Timestamp { // RefreshToken describes the list token subtype used // between pages in a refresh pagination phase. type RefreshToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The upper bound for the timestamp comparisons in // this refresh phase. This is equal to the time that // the first request in this phase was processed. @@ -420,15 +414,15 @@ type RefreshToken struct { // The update time of the last item that was included // in the page which this token was returned with. LastItemUpdateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_item_update_time,json=lastItemUpdateTime,proto3" json:"last_item_update_time,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RefreshToken) Reset() { *x = RefreshToken{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_list_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_list_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RefreshToken) String() string { @@ -439,7 +433,7 @@ func (*RefreshToken) ProtoMessage() {} func (x *RefreshToken) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_list_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -666,56 +660,6 @@ func file_controller_api_services_v1_list_proto_init() { if File_controller_api_services_v1_list_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_list_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*ListToken); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_list_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*PaginationToken); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_list_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*StartRefreshToken); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_list_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*RefreshToken); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_services_v1_list_proto_msgTypes[0].OneofWrappers = []any{ (*ListToken_PaginationToken)(nil), (*ListToken_StartRefreshToken)(nil), diff --git a/internal/gen/controller/api/services/managed_group_service.pb.go b/internal/gen/controller/api/services/managed_group_service.pb.go index a424e96c87..e8951aec17 100644 --- a/internal/gen/controller/api/services/managed_group_service.pb.go +++ b/internal/gen/controller/api/services/managed_group_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/managed_group_service.proto @@ -29,20 +29,17 @@ const ( ) type GetManagedGroupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *GetManagedGroupRequest) Reset() { *x = GetManagedGroupRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetManagedGroupRequest) String() string { @@ -53,7 +50,7 @@ func (*GetManagedGroupRequest) ProtoMessage() {} func (x *GetManagedGroupRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,20 +73,17 @@ func (x *GetManagedGroupRequest) GetId() string { } type GetManagedGroupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *managedgroups.ManagedGroup `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *managedgroups.ManagedGroup `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetManagedGroupResponse) Reset() { *x = GetManagedGroupResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetManagedGroupResponse) String() string { @@ -100,7 +94,7 @@ func (*GetManagedGroupResponse) ProtoMessage() {} func (x *GetManagedGroupResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,11 +117,8 @@ func (x *GetManagedGroupResponse) GetItem() *managedgroups.ManagedGroup { } type ListManagedGroupsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AuthMethodId string `protobuf:"bytes,1,opt,name=auth_method_id,proto3" json:"auth_method_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + AuthMethodId string `protobuf:"bytes,1,opt,name=auth_method_id,proto3" json:"auth_method_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // You can specify that the filter should only return items that match. // Refer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information. Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` @@ -140,16 +131,16 @@ type ListManagedGroupsRequest struct { // If unset, the default page size configured will be used. // If the page_size is greater than the default page configured, // the page size will be truncated to this number.. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListManagedGroupsRequest) Reset() { *x = ListManagedGroupsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListManagedGroupsRequest) String() string { @@ -160,7 +151,7 @@ func (*ListManagedGroupsRequest) ProtoMessage() {} func (x *ListManagedGroupsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -204,10 +195,7 @@ func (x *ListManagedGroupsRequest) GetPageSize() uint32 { } type ListManagedGroupsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Items []*managedgroups.ManagedGroup `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". // Delta signifies that this is part of a paginated result @@ -228,16 +216,16 @@ type ListManagedGroupsResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListManagedGroupsResponse) Reset() { *x = ListManagedGroupsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListManagedGroupsResponse) String() string { @@ -248,7 +236,7 @@ func (*ListManagedGroupsResponse) ProtoMessage() {} func (x *ListManagedGroupsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -313,20 +301,17 @@ func (x *ListManagedGroupsResponse) GetEstItemCount() uint32 { } type CreateManagedGroupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *managedgroups.ManagedGroup `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *managedgroups.ManagedGroup `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateManagedGroupRequest) Reset() { *x = CreateManagedGroupRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateManagedGroupRequest) String() string { @@ -337,7 +322,7 @@ func (*CreateManagedGroupRequest) ProtoMessage() {} func (x *CreateManagedGroupRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -360,21 +345,18 @@ func (x *CreateManagedGroupRequest) GetItem() *managedgroups.ManagedGroup { } type CreateManagedGroupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public"` // @gotags: `class:"public"` + Item *managedgroups.ManagedGroup `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public"` // @gotags: `class:"public"` - Item *managedgroups.ManagedGroup `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateManagedGroupResponse) Reset() { *x = CreateManagedGroupResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateManagedGroupResponse) String() string { @@ -385,7 +367,7 @@ func (*CreateManagedGroupResponse) ProtoMessage() {} func (x *CreateManagedGroupResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -415,22 +397,19 @@ func (x *CreateManagedGroupResponse) GetItem() *managedgroups.ManagedGroup { } type UpdateManagedGroupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *managedgroups.ManagedGroup `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *managedgroups.ManagedGroup `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateManagedGroupRequest) Reset() { *x = UpdateManagedGroupRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateManagedGroupRequest) String() string { @@ -441,7 +420,7 @@ func (*UpdateManagedGroupRequest) ProtoMessage() {} func (x *UpdateManagedGroupRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -478,20 +457,17 @@ func (x *UpdateManagedGroupRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateManagedGroupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *managedgroups.ManagedGroup `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *managedgroups.ManagedGroup `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateManagedGroupResponse) Reset() { *x = UpdateManagedGroupResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateManagedGroupResponse) String() string { @@ -502,7 +478,7 @@ func (*UpdateManagedGroupResponse) ProtoMessage() {} func (x *UpdateManagedGroupResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -525,20 +501,17 @@ func (x *UpdateManagedGroupResponse) GetItem() *managedgroups.ManagedGroup { } type DeleteManagedGroupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *DeleteManagedGroupRequest) Reset() { *x = DeleteManagedGroupRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteManagedGroupRequest) String() string { @@ -549,7 +522,7 @@ func (*DeleteManagedGroupRequest) ProtoMessage() {} func (x *DeleteManagedGroupRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -572,18 +545,16 @@ func (x *DeleteManagedGroupRequest) GetId() string { } type DeleteManagedGroupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteManagedGroupResponse) Reset() { *x = DeleteManagedGroupResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteManagedGroupResponse) String() string { @@ -594,7 +565,7 @@ func (*DeleteManagedGroupResponse) ProtoMessage() {} func (x *DeleteManagedGroupResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_managed_group_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -862,128 +833,6 @@ func file_controller_api_services_v1_managed_group_service_proto_init() { if File_controller_api_services_v1_managed_group_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_managed_group_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetManagedGroupRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_managed_group_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetManagedGroupResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_managed_group_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListManagedGroupsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_managed_group_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListManagedGroupsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_managed_group_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateManagedGroupRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_managed_group_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateManagedGroupResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_managed_group_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateManagedGroupRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_managed_group_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateManagedGroupResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_managed_group_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteManagedGroupRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_managed_group_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteManagedGroupResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/policy_service.pb.go b/internal/gen/controller/api/services/policy_service.pb.go index 2a41567792..4235029fb3 100644 --- a/internal/gen/controller/api/services/policy_service.pb.go +++ b/internal/gen/controller/api/services/policy_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/policy_service.proto @@ -29,20 +29,17 @@ const ( ) type GetPolicyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *GetPolicyRequest) Reset() { *x = GetPolicyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPolicyRequest) String() string { @@ -53,7 +50,7 @@ func (*GetPolicyRequest) ProtoMessage() {} func (x *GetPolicyRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,20 +73,17 @@ func (x *GetPolicyRequest) GetId() string { } type GetPolicyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *policies.Policy `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *policies.Policy `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetPolicyResponse) Reset() { *x = GetPolicyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPolicyResponse) String() string { @@ -100,7 +94,7 @@ func (*GetPolicyResponse) ProtoMessage() {} func (x *GetPolicyResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,13 +117,10 @@ func (x *GetPolicyResponse) GetItem() *policies.Policy { } type ListPoliciesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Recursive bool `protobuf:"varint,2,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Recursive bool `protobuf:"varint,2,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` // An opaque token that Boundary uses to continue an existing iteration or // request updated items. If you do not specify a token, pagination // starts from the beginning. To learn more about list pagination @@ -139,16 +130,16 @@ type ListPoliciesRequest struct { // If unset, the default page size configured will be used. // If the page_size is greater than the default page configured, // the page size will be truncated to this number.. - PageSize uint32 `protobuf:"varint,5,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,5,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListPoliciesRequest) Reset() { *x = ListPoliciesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListPoliciesRequest) String() string { @@ -159,7 +150,7 @@ func (*ListPoliciesRequest) ProtoMessage() {} func (x *ListPoliciesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -210,11 +201,8 @@ func (x *ListPoliciesRequest) GetPageSize() uint32 { } type ListPoliciesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Items []*policies.Policy `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Items []*policies.Policy `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". // Delta signifies that this is part of a paginated result // or an update to a previously completed pagination. @@ -234,16 +222,16 @@ type ListPoliciesResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListPoliciesResponse) Reset() { *x = ListPoliciesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListPoliciesResponse) String() string { @@ -254,7 +242,7 @@ func (*ListPoliciesResponse) ProtoMessage() {} func (x *ListPoliciesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -319,20 +307,17 @@ func (x *ListPoliciesResponse) GetEstItemCount() uint32 { } type CreatePolicyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *policies.Policy `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *policies.Policy `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreatePolicyRequest) Reset() { *x = CreatePolicyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreatePolicyRequest) String() string { @@ -343,7 +328,7 @@ func (*CreatePolicyRequest) ProtoMessage() {} func (x *CreatePolicyRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -366,21 +351,18 @@ func (x *CreatePolicyRequest) GetItem() *policies.Policy { } type CreatePolicyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *policies.Policy `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *policies.Policy `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreatePolicyResponse) Reset() { *x = CreatePolicyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreatePolicyResponse) String() string { @@ -391,7 +373,7 @@ func (*CreatePolicyResponse) ProtoMessage() {} func (x *CreatePolicyResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -421,22 +403,19 @@ func (x *CreatePolicyResponse) GetItem() *policies.Policy { } type UpdatePolicyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *policies.Policy `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *policies.Policy `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdatePolicyRequest) Reset() { *x = UpdatePolicyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdatePolicyRequest) String() string { @@ -447,7 +426,7 @@ func (*UpdatePolicyRequest) ProtoMessage() {} func (x *UpdatePolicyRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -484,20 +463,17 @@ func (x *UpdatePolicyRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdatePolicyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *policies.Policy `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *policies.Policy `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdatePolicyResponse) Reset() { *x = UpdatePolicyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdatePolicyResponse) String() string { @@ -508,7 +484,7 @@ func (*UpdatePolicyResponse) ProtoMessage() {} func (x *UpdatePolicyResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -531,20 +507,17 @@ func (x *UpdatePolicyResponse) GetItem() *policies.Policy { } type DeletePolicyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *DeletePolicyRequest) Reset() { *x = DeletePolicyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeletePolicyRequest) String() string { @@ -555,7 +528,7 @@ func (*DeletePolicyRequest) ProtoMessage() {} func (x *DeletePolicyRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -578,18 +551,16 @@ func (x *DeletePolicyRequest) GetId() string { } type DeletePolicyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeletePolicyResponse) Reset() { *x = DeletePolicyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeletePolicyResponse) String() string { @@ -600,7 +571,7 @@ func (*DeletePolicyResponse) ProtoMessage() {} func (x *DeletePolicyResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_policy_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -846,128 +817,6 @@ func file_controller_api_services_v1_policy_service_proto_init() { if File_controller_api_services_v1_policy_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_policy_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetPolicyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_policy_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetPolicyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_policy_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListPoliciesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_policy_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListPoliciesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_policy_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreatePolicyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_policy_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreatePolicyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_policy_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdatePolicyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_policy_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdatePolicyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_policy_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeletePolicyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_policy_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeletePolicyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/role_service.pb.go b/internal/gen/controller/api/services/role_service.pb.go index c3e9e107ec..d93320a58c 100644 --- a/internal/gen/controller/api/services/role_service.pb.go +++ b/internal/gen/controller/api/services/role_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/role_service.proto @@ -28,20 +28,17 @@ const ( ) type GetRoleRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *GetRoleRequest) Reset() { *x = GetRoleRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRoleRequest) String() string { @@ -52,7 +49,7 @@ func (*GetRoleRequest) ProtoMessage() {} func (x *GetRoleRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -75,20 +72,17 @@ func (x *GetRoleRequest) GetId() string { } type GetRoleResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetRoleResponse) Reset() { *x = GetRoleResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRoleResponse) String() string { @@ -99,7 +93,7 @@ func (*GetRoleResponse) ProtoMessage() {} func (x *GetRoleResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -122,12 +116,9 @@ func (x *GetRoleResponse) GetItem() *roles.Role { } type ListRolesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // You can specify that the filter should only return items that match. // Refer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information. Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` @@ -140,16 +131,16 @@ type ListRolesRequest struct { // If unset, the default page size configured will be used. // If the page_size is greater than the default page configured, // the page size will be truncated to this number.. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListRolesRequest) Reset() { *x = ListRolesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListRolesRequest) String() string { @@ -160,7 +151,7 @@ func (*ListRolesRequest) ProtoMessage() {} func (x *ListRolesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -211,11 +202,8 @@ func (x *ListRolesRequest) GetPageSize() uint32 { } type ListRolesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Items []*roles.Role `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Items []*roles.Role `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". // Delta signifies that this is part of a paginated result // or an update to a previously completed pagination. @@ -235,16 +223,16 @@ type ListRolesResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListRolesResponse) Reset() { *x = ListRolesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListRolesResponse) String() string { @@ -255,7 +243,7 @@ func (*ListRolesResponse) ProtoMessage() {} func (x *ListRolesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -320,20 +308,17 @@ func (x *ListRolesResponse) GetEstItemCount() uint32 { } type CreateRoleRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateRoleRequest) Reset() { *x = CreateRoleRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateRoleRequest) String() string { @@ -344,7 +329,7 @@ func (*CreateRoleRequest) ProtoMessage() {} func (x *CreateRoleRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -367,21 +352,18 @@ func (x *CreateRoleRequest) GetItem() *roles.Role { } type CreateRoleResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` + Item *roles.Role `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` - Item *roles.Role `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateRoleResponse) Reset() { *x = CreateRoleResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateRoleResponse) String() string { @@ -392,7 +374,7 @@ func (*CreateRoleResponse) ProtoMessage() {} func (x *CreateRoleResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -422,22 +404,19 @@ func (x *CreateRoleResponse) GetItem() *roles.Role { } type UpdateRoleRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *roles.Role `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *roles.Role `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateRoleRequest) Reset() { *x = UpdateRoleRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateRoleRequest) String() string { @@ -448,7 +427,7 @@ func (*UpdateRoleRequest) ProtoMessage() {} func (x *UpdateRoleRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -485,20 +464,17 @@ func (x *UpdateRoleRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateRoleResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateRoleResponse) Reset() { *x = UpdateRoleResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateRoleResponse) String() string { @@ -509,7 +485,7 @@ func (*UpdateRoleResponse) ProtoMessage() {} func (x *UpdateRoleResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -532,20 +508,17 @@ func (x *UpdateRoleResponse) GetItem() *roles.Role { } type DeleteRoleRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *DeleteRoleRequest) Reset() { *x = DeleteRoleRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteRoleRequest) String() string { @@ -556,7 +529,7 @@ func (*DeleteRoleRequest) ProtoMessage() {} func (x *DeleteRoleRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -579,18 +552,16 @@ func (x *DeleteRoleRequest) GetId() string { } type DeleteRoleResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteRoleResponse) Reset() { *x = DeleteRoleResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteRoleResponse) String() string { @@ -601,7 +572,7 @@ func (*DeleteRoleResponse) ProtoMessage() {} func (x *DeleteRoleResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -617,24 +588,21 @@ func (*DeleteRoleResponse) Descriptor() ([]byte, []int) { } type AddRolePrincipalsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - PrincipalIds []string `protobuf:"bytes,3,rep,name=principal_ids,proto3" json:"principal_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + PrincipalIds []string `protobuf:"bytes,3,rep,name=principal_ids,proto3" json:"principal_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AddRolePrincipalsRequest) Reset() { *x = AddRolePrincipalsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddRolePrincipalsRequest) String() string { @@ -645,7 +613,7 @@ func (*AddRolePrincipalsRequest) ProtoMessage() {} func (x *AddRolePrincipalsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -682,20 +650,17 @@ func (x *AddRolePrincipalsRequest) GetPrincipalIds() []string { } type AddRolePrincipalsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AddRolePrincipalsResponse) Reset() { *x = AddRolePrincipalsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddRolePrincipalsResponse) String() string { @@ -706,7 +671,7 @@ func (*AddRolePrincipalsResponse) ProtoMessage() {} func (x *AddRolePrincipalsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -729,24 +694,21 @@ func (x *AddRolePrincipalsResponse) GetItem() *roles.Role { } type SetRolePrincipalsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - PrincipalIds []string `protobuf:"bytes,3,rep,name=principal_ids,proto3" json:"principal_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + PrincipalIds []string `protobuf:"bytes,3,rep,name=principal_ids,proto3" json:"principal_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetRolePrincipalsRequest) Reset() { *x = SetRolePrincipalsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetRolePrincipalsRequest) String() string { @@ -757,7 +719,7 @@ func (*SetRolePrincipalsRequest) ProtoMessage() {} func (x *SetRolePrincipalsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -794,20 +756,17 @@ func (x *SetRolePrincipalsRequest) GetPrincipalIds() []string { } type SetRolePrincipalsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetRolePrincipalsResponse) Reset() { *x = SetRolePrincipalsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetRolePrincipalsResponse) String() string { @@ -818,7 +777,7 @@ func (*SetRolePrincipalsResponse) ProtoMessage() {} func (x *SetRolePrincipalsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -841,24 +800,21 @@ func (x *SetRolePrincipalsResponse) GetItem() *roles.Role { } type RemoveRolePrincipalsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - PrincipalIds []string `protobuf:"bytes,3,rep,name=principal_ids,proto3" json:"principal_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + PrincipalIds []string `protobuf:"bytes,3,rep,name=principal_ids,proto3" json:"principal_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoveRolePrincipalsRequest) Reset() { *x = RemoveRolePrincipalsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveRolePrincipalsRequest) String() string { @@ -869,7 +825,7 @@ func (*RemoveRolePrincipalsRequest) ProtoMessage() {} func (x *RemoveRolePrincipalsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -906,20 +862,17 @@ func (x *RemoveRolePrincipalsRequest) GetPrincipalIds() []string { } type RemoveRolePrincipalsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveRolePrincipalsResponse) Reset() { *x = RemoveRolePrincipalsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveRolePrincipalsResponse) String() string { @@ -930,7 +883,7 @@ func (*RemoveRolePrincipalsResponse) ProtoMessage() {} func (x *RemoveRolePrincipalsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -953,24 +906,21 @@ func (x *RemoveRolePrincipalsResponse) GetItem() *roles.Role { } type AddRoleGrantsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - GrantStrings []string `protobuf:"bytes,3,rep,name=grant_strings,proto3" json:"grant_strings,omitempty" class:"public"` // @gotags: `class:"public"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + GrantStrings []string `protobuf:"bytes,3,rep,name=grant_strings,proto3" json:"grant_strings,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AddRoleGrantsRequest) Reset() { *x = AddRoleGrantsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddRoleGrantsRequest) String() string { @@ -981,7 +931,7 @@ func (*AddRoleGrantsRequest) ProtoMessage() {} func (x *AddRoleGrantsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1018,20 +968,17 @@ func (x *AddRoleGrantsRequest) GetGrantStrings() []string { } type AddRoleGrantsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AddRoleGrantsResponse) Reset() { *x = AddRoleGrantsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddRoleGrantsResponse) String() string { @@ -1042,7 +989,7 @@ func (*AddRoleGrantsResponse) ProtoMessage() {} func (x *AddRoleGrantsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1065,24 +1012,21 @@ func (x *AddRoleGrantsResponse) GetItem() *roles.Role { } type SetRoleGrantsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - GrantStrings []string `protobuf:"bytes,3,rep,name=grant_strings,proto3" json:"grant_strings,omitempty" class:"public"` // @gotags: `class:"public"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + GrantStrings []string `protobuf:"bytes,3,rep,name=grant_strings,proto3" json:"grant_strings,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetRoleGrantsRequest) Reset() { *x = SetRoleGrantsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetRoleGrantsRequest) String() string { @@ -1093,7 +1037,7 @@ func (*SetRoleGrantsRequest) ProtoMessage() {} func (x *SetRoleGrantsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1130,20 +1074,17 @@ func (x *SetRoleGrantsRequest) GetGrantStrings() []string { } type SetRoleGrantsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetRoleGrantsResponse) Reset() { *x = SetRoleGrantsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetRoleGrantsResponse) String() string { @@ -1154,7 +1095,7 @@ func (*SetRoleGrantsResponse) ProtoMessage() {} func (x *SetRoleGrantsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1177,24 +1118,21 @@ func (x *SetRoleGrantsResponse) GetItem() *roles.Role { } type RemoveRoleGrantsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - GrantStrings []string `protobuf:"bytes,3,rep,name=grant_strings,proto3" json:"grant_strings,omitempty" class:"public"` // @gotags: `class:"public"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + GrantStrings []string `protobuf:"bytes,3,rep,name=grant_strings,proto3" json:"grant_strings,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoveRoleGrantsRequest) Reset() { *x = RemoveRoleGrantsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveRoleGrantsRequest) String() string { @@ -1205,7 +1143,7 @@ func (*RemoveRoleGrantsRequest) ProtoMessage() {} func (x *RemoveRoleGrantsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1242,20 +1180,17 @@ func (x *RemoveRoleGrantsRequest) GetGrantStrings() []string { } type RemoveRoleGrantsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveRoleGrantsResponse) Reset() { *x = RemoveRoleGrantsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveRoleGrantsResponse) String() string { @@ -1266,7 +1201,7 @@ func (*RemoveRoleGrantsResponse) ProtoMessage() {} func (x *RemoveRoleGrantsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1289,24 +1224,21 @@ func (x *RemoveRoleGrantsResponse) GetItem() *roles.Role { } type AddRoleGrantScopesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` GrantScopeIds []string `protobuf:"bytes,3,rep,name=grant_scope_ids,proto3" json:"grant_scope_ids,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AddRoleGrantScopesRequest) Reset() { *x = AddRoleGrantScopesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddRoleGrantScopesRequest) String() string { @@ -1317,7 +1249,7 @@ func (*AddRoleGrantScopesRequest) ProtoMessage() {} func (x *AddRoleGrantScopesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1354,20 +1286,17 @@ func (x *AddRoleGrantScopesRequest) GetGrantScopeIds() []string { } type AddRoleGrantScopesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AddRoleGrantScopesResponse) Reset() { *x = AddRoleGrantScopesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddRoleGrantScopesResponse) String() string { @@ -1378,7 +1307,7 @@ func (*AddRoleGrantScopesResponse) ProtoMessage() {} func (x *AddRoleGrantScopesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1401,24 +1330,21 @@ func (x *AddRoleGrantScopesResponse) GetItem() *roles.Role { } type SetRoleGrantScopesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` GrantScopeIds []string `protobuf:"bytes,3,rep,name=grant_scope_ids,proto3" json:"grant_scope_ids,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetRoleGrantScopesRequest) Reset() { *x = SetRoleGrantScopesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetRoleGrantScopesRequest) String() string { @@ -1429,7 +1355,7 @@ func (*SetRoleGrantScopesRequest) ProtoMessage() {} func (x *SetRoleGrantScopesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1466,20 +1392,17 @@ func (x *SetRoleGrantScopesRequest) GetGrantScopeIds() []string { } type SetRoleGrantScopesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetRoleGrantScopesResponse) Reset() { *x = SetRoleGrantScopesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetRoleGrantScopesResponse) String() string { @@ -1490,7 +1413,7 @@ func (*SetRoleGrantScopesResponse) ProtoMessage() {} func (x *SetRoleGrantScopesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1513,24 +1436,21 @@ func (x *SetRoleGrantScopesResponse) GetItem() *roles.Role { } type RemoveRoleGrantScopesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` GrantScopeIds []string `protobuf:"bytes,3,rep,name=grant_scope_ids,proto3" json:"grant_scope_ids,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoveRoleGrantScopesRequest) Reset() { *x = RemoveRoleGrantScopesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveRoleGrantScopesRequest) String() string { @@ -1541,7 +1461,7 @@ func (*RemoveRoleGrantScopesRequest) ProtoMessage() {} func (x *RemoveRoleGrantScopesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1578,20 +1498,17 @@ func (x *RemoveRoleGrantScopesRequest) GetGrantScopeIds() []string { } type RemoveRoleGrantScopesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *roles.Role `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveRoleGrantScopesResponse) Reset() { *x = RemoveRoleGrantScopesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_role_service_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_role_service_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveRoleGrantScopesResponse) String() string { @@ -1602,7 +1519,7 @@ func (*RemoveRoleGrantScopesResponse) ProtoMessage() {} func (x *RemoveRoleGrantScopesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_role_service_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2134,344 +2051,6 @@ func file_controller_api_services_v1_role_service_proto_init() { if File_controller_api_services_v1_role_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_role_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetRoleRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetRoleResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListRolesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListRolesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateRoleRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateRoleResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateRoleRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateRoleResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRoleRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRoleResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*AddRolePrincipalsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*AddRolePrincipalsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*SetRolePrincipalsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*SetRolePrincipalsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*RemoveRolePrincipalsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*RemoveRolePrincipalsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*AddRoleGrantsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*AddRoleGrantsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*SetRoleGrantsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*SetRoleGrantsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*RemoveRoleGrantsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*RemoveRoleGrantsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*AddRoleGrantScopesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*AddRoleGrantScopesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*SetRoleGrantScopesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*SetRoleGrantScopesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*RemoveRoleGrantScopesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_role_service_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*RemoveRoleGrantScopesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/scope_service.pb.go b/internal/gen/controller/api/services/scope_service.pb.go index 1aca3a518b..55d318c401 100644 --- a/internal/gen/controller/api/services/scope_service.pb.go +++ b/internal/gen/controller/api/services/scope_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/scope_service.proto @@ -28,20 +28,17 @@ const ( ) type GetScopeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *GetScopeRequest) Reset() { *x = GetScopeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetScopeRequest) String() string { @@ -52,7 +49,7 @@ func (*GetScopeRequest) ProtoMessage() {} func (x *GetScopeRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -75,20 +72,17 @@ func (x *GetScopeRequest) GetId() string { } type GetScopeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *scopes.Scope `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *scopes.Scope `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetScopeResponse) Reset() { *x = GetScopeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetScopeResponse) String() string { @@ -99,7 +93,7 @@ func (*GetScopeResponse) ProtoMessage() {} func (x *GetScopeResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -122,12 +116,9 @@ func (x *GetScopeResponse) GetItem() *scopes.Scope { } type ListScopesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // You can specify that the filter should only return items that match. // Refer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information. Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` @@ -139,16 +130,16 @@ type ListScopesRequest struct { // If you do not set a page size, Boundary uses the configured default page size. // If the page_size is greater than the default page size configured, // Boundary truncates the page size to this number. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListScopesRequest) Reset() { *x = ListScopesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListScopesRequest) String() string { @@ -159,7 +150,7 @@ func (*ListScopesRequest) ProtoMessage() {} func (x *ListScopesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -210,10 +201,7 @@ func (x *ListScopesRequest) GetPageSize() uint32 { } type ListScopesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The items returned in this page. Items []*scopes.Scope `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". @@ -235,16 +223,16 @@ type ListScopesResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListScopesResponse) Reset() { *x = ListScopesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListScopesResponse) String() string { @@ -255,7 +243,7 @@ func (*ListScopesResponse) ProtoMessage() {} func (x *ListScopesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -320,22 +308,19 @@ func (x *ListScopesResponse) GetEstItemCount() uint32 { } type CreateScopeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SkipAdminRoleCreation bool `protobuf:"varint,1,opt,name=skip_admin_role_creation,json=skipAdminRoleCreation,proto3" json:"skip_admin_role_creation,omitempty" class:"public"` // @gotags: `class:"public"` - SkipDefaultRoleCreation bool `protobuf:"varint,2,opt,name=skip_default_role_creation,json=skipDefaultRoleCreation,proto3" json:"skip_default_role_creation,omitempty" class:"public"` // @gotags: `class:"public"` - Item *scopes.Scope `protobuf:"bytes,3,opt,name=item,proto3" json:"item,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + SkipAdminRoleCreation bool `protobuf:"varint,1,opt,name=skip_admin_role_creation,json=skipAdminRoleCreation,proto3" json:"skip_admin_role_creation,omitempty" class:"public"` // @gotags: `class:"public"` + SkipDefaultRoleCreation bool `protobuf:"varint,2,opt,name=skip_default_role_creation,json=skipDefaultRoleCreation,proto3" json:"skip_default_role_creation,omitempty" class:"public"` // @gotags: `class:"public"` + Item *scopes.Scope `protobuf:"bytes,3,opt,name=item,proto3" json:"item,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateScopeRequest) Reset() { *x = CreateScopeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateScopeRequest) String() string { @@ -346,7 +331,7 @@ func (*CreateScopeRequest) ProtoMessage() {} func (x *CreateScopeRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -383,21 +368,18 @@ func (x *CreateScopeRequest) GetItem() *scopes.Scope { } type CreateScopeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *scopes.Scope `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *scopes.Scope `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateScopeResponse) Reset() { *x = CreateScopeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateScopeResponse) String() string { @@ -408,7 +390,7 @@ func (*CreateScopeResponse) ProtoMessage() {} func (x *CreateScopeResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -438,22 +420,19 @@ func (x *CreateScopeResponse) GetItem() *scopes.Scope { } type UpdateScopeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *scopes.Scope `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *scopes.Scope `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateScopeRequest) Reset() { *x = UpdateScopeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateScopeRequest) String() string { @@ -464,7 +443,7 @@ func (*UpdateScopeRequest) ProtoMessage() {} func (x *UpdateScopeRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -501,20 +480,17 @@ func (x *UpdateScopeRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateScopeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *scopes.Scope `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *scopes.Scope `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateScopeResponse) Reset() { *x = UpdateScopeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateScopeResponse) String() string { @@ -525,7 +501,7 @@ func (*UpdateScopeResponse) ProtoMessage() {} func (x *UpdateScopeResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -548,20 +524,17 @@ func (x *UpdateScopeResponse) GetItem() *scopes.Scope { } type DeleteScopeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *DeleteScopeRequest) Reset() { *x = DeleteScopeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteScopeRequest) String() string { @@ -572,7 +545,7 @@ func (*DeleteScopeRequest) ProtoMessage() {} func (x *DeleteScopeRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -595,18 +568,16 @@ func (x *DeleteScopeRequest) GetId() string { } type DeleteScopeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteScopeResponse) Reset() { *x = DeleteScopeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteScopeResponse) String() string { @@ -617,7 +588,7 @@ func (*DeleteScopeResponse) ProtoMessage() {} func (x *DeleteScopeResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -633,20 +604,17 @@ func (*DeleteScopeResponse) Descriptor() ([]byte, []int) { } type ListKeysRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *ListKeysRequest) Reset() { *x = ListKeysRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListKeysRequest) String() string { @@ -657,7 +625,7 @@ func (*ListKeysRequest) ProtoMessage() {} func (x *ListKeysRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -680,20 +648,17 @@ func (x *ListKeysRequest) GetId() string { } type ListKeysResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Items []*scopes.Key `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` unknownFields protoimpl.UnknownFields - - Items []*scopes.Key `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListKeysResponse) Reset() { *x = ListKeysResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListKeysResponse) String() string { @@ -704,7 +669,7 @@ func (*ListKeysResponse) ProtoMessage() {} func (x *ListKeysResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -727,21 +692,18 @@ func (x *ListKeysResponse) GetItems() []*scopes.Key { } type RotateKeysRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public"` // @gotags: `class:"public"` + Rewrap bool `protobuf:"varint,2,opt,name=rewrap,proto3" json:"rewrap,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public"` // @gotags: `class:"public"` - Rewrap bool `protobuf:"varint,2,opt,name=rewrap,proto3" json:"rewrap,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *RotateKeysRequest) Reset() { *x = RotateKeysRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RotateKeysRequest) String() string { @@ -752,7 +714,7 @@ func (*RotateKeysRequest) ProtoMessage() {} func (x *RotateKeysRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -782,18 +744,16 @@ func (x *RotateKeysRequest) GetRewrap() bool { } type RotateKeysResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RotateKeysResponse) Reset() { *x = RotateKeysResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RotateKeysResponse) String() string { @@ -804,7 +764,7 @@ func (*RotateKeysResponse) ProtoMessage() {} func (x *RotateKeysResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -820,20 +780,17 @@ func (*RotateKeysResponse) Descriptor() ([]byte, []int) { } type ListKeyVersionDestructionJobsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *ListKeyVersionDestructionJobsRequest) Reset() { *x = ListKeyVersionDestructionJobsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListKeyVersionDestructionJobsRequest) String() string { @@ -844,7 +801,7 @@ func (*ListKeyVersionDestructionJobsRequest) ProtoMessage() {} func (x *ListKeyVersionDestructionJobsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -867,20 +824,17 @@ func (x *ListKeyVersionDestructionJobsRequest) GetScopeId() string { } type ListKeyVersionDestructionJobsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Items []*scopes.KeyVersionDestructionJob `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` unknownFields protoimpl.UnknownFields - - Items []*scopes.KeyVersionDestructionJob `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListKeyVersionDestructionJobsResponse) Reset() { *x = ListKeyVersionDestructionJobsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListKeyVersionDestructionJobsResponse) String() string { @@ -891,7 +845,7 @@ func (*ListKeyVersionDestructionJobsResponse) ProtoMessage() {} func (x *ListKeyVersionDestructionJobsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -914,21 +868,18 @@ func (x *ListKeyVersionDestructionJobsResponse) GetItems() []*scopes.KeyVersionD } type DestroyKeyVersionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public"` // @gotags: `class:"public"` + KeyVersionId string `protobuf:"bytes,2,opt,name=key_version_id,json=keyVersionId,proto3" json:"key_version_id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public"` // @gotags: `class:"public"` - KeyVersionId string `protobuf:"bytes,2,opt,name=key_version_id,json=keyVersionId,proto3" json:"key_version_id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *DestroyKeyVersionRequest) Reset() { *x = DestroyKeyVersionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DestroyKeyVersionRequest) String() string { @@ -939,7 +890,7 @@ func (*DestroyKeyVersionRequest) ProtoMessage() {} func (x *DestroyKeyVersionRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -969,23 +920,20 @@ func (x *DestroyKeyVersionRequest) GetKeyVersionId() string { } type DestroyKeyVersionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Destruction state. One of "pending" or "completed". // Use GET /v1/scopes/{scope_id}:list-key-version-destruction-jobs // to monitor pending destruction jobs. - State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty" class:"public"` // @gotags: `class:"public"` + State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DestroyKeyVersionResponse) Reset() { *x = DestroyKeyVersionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DestroyKeyVersionResponse) String() string { @@ -996,7 +944,7 @@ func (*DestroyKeyVersionResponse) ProtoMessage() {} func (x *DestroyKeyVersionResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1019,24 +967,21 @@ func (x *DestroyKeyVersionResponse) GetState() string { } type AttachStoragePolicyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - StoragePolicyId string `protobuf:"bytes,2,opt,name=storage_policy_id,json=storagePolicyId,proto3" json:"storage_policy_id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + StoragePolicyId string `protobuf:"bytes,2,opt,name=storage_policy_id,json=storagePolicyId,proto3" json:"storage_policy_id,omitempty" class:"public"` // @gotags: `class:"public"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. - Version uint32 `protobuf:"varint,3,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + Version uint32 `protobuf:"varint,3,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AttachStoragePolicyRequest) Reset() { *x = AttachStoragePolicyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AttachStoragePolicyRequest) String() string { @@ -1047,7 +992,7 @@ func (*AttachStoragePolicyRequest) ProtoMessage() {} func (x *AttachStoragePolicyRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1084,20 +1029,17 @@ func (x *AttachStoragePolicyRequest) GetVersion() uint32 { } type AttachStoragePolicyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *scopes.Scope `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *scopes.Scope `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AttachStoragePolicyResponse) Reset() { *x = AttachStoragePolicyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AttachStoragePolicyResponse) String() string { @@ -1108,7 +1050,7 @@ func (*AttachStoragePolicyResponse) ProtoMessage() {} func (x *AttachStoragePolicyResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1131,23 +1073,20 @@ func (x *AttachStoragePolicyResponse) GetItem() *scopes.Scope { } type DetachStoragePolicyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DetachStoragePolicyRequest) Reset() { *x = DetachStoragePolicyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DetachStoragePolicyRequest) String() string { @@ -1158,7 +1097,7 @@ func (*DetachStoragePolicyRequest) ProtoMessage() {} func (x *DetachStoragePolicyRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1188,20 +1127,17 @@ func (x *DetachStoragePolicyRequest) GetVersion() uint32 { } type DetachStoragePolicyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *scopes.Scope `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *scopes.Scope `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DetachStoragePolicyResponse) Reset() { *x = DetachStoragePolicyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DetachStoragePolicyResponse) String() string { @@ -1212,7 +1148,7 @@ func (*DetachStoragePolicyResponse) ProtoMessage() {} func (x *DetachStoragePolicyResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_scope_service_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1658,272 +1594,6 @@ func file_controller_api_services_v1_scope_service_proto_init() { if File_controller_api_services_v1_scope_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_scope_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetScopeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetScopeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListScopesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListScopesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateScopeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateScopeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateScopeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateScopeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteScopeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteScopeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*ListKeysRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*ListKeysResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*RotateKeysRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*RotateKeysResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*ListKeyVersionDestructionJobsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*ListKeyVersionDestructionJobsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*DestroyKeyVersionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*DestroyKeyVersionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*AttachStoragePolicyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*AttachStoragePolicyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*DetachStoragePolicyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_scope_service_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*DetachStoragePolicyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/session_recording_service.pb.go b/internal/gen/controller/api/services/session_recording_service.pb.go index 4555440dcf..b469bbef54 100644 --- a/internal/gen/controller/api/services/session_recording_service.pb.go +++ b/internal/gen/controller/api/services/session_recording_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/session_recording_service.proto @@ -28,21 +28,18 @@ const ( ) type GetSessionRecordingRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the Session recording, or the ID of the Session that was recorded. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSessionRecordingRequest) Reset() { *x = GetSessionRecordingRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSessionRecordingRequest) String() string { @@ -53,7 +50,7 @@ func (*GetSessionRecordingRequest) ProtoMessage() {} func (x *GetSessionRecordingRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,21 +73,18 @@ func (x *GetSessionRecordingRequest) GetId() string { } type GetSessionRecordingResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The requested recording. - Item *session_recordings.SessionRecording `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + Item *session_recordings.SessionRecording `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSessionRecordingResponse) Reset() { *x = GetSessionRecordingResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSessionRecordingResponse) String() string { @@ -101,7 +95,7 @@ func (*GetSessionRecordingResponse) ProtoMessage() {} func (x *GetSessionRecordingResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -124,10 +118,7 @@ func (x *GetSessionRecordingResponse) GetItem() *session_recordings.SessionRecor } type ListSessionRecordingsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The scope in which to list session recordings. // Must be set unless recursive is set. ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" @@ -144,16 +135,16 @@ type ListSessionRecordingsRequest struct { // If you do not set a page size, Boundary uses the configured default page size. // If the page_size is greater than the default page size configured, // Boundary truncates the page size to this number. - PageSize uint32 `protobuf:"varint,4,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + PageSize uint32 `protobuf:"varint,4,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListSessionRecordingsRequest) Reset() { *x = ListSessionRecordingsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListSessionRecordingsRequest) String() string { @@ -164,7 +155,7 @@ func (*ListSessionRecordingsRequest) ProtoMessage() {} func (x *ListSessionRecordingsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -208,10 +199,7 @@ func (x *ListSessionRecordingsRequest) GetPageSize() uint32 { } type ListSessionRecordingsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The items returned in this page. Items []*session_recordings.SessionRecording `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". @@ -233,16 +221,16 @@ type ListSessionRecordingsResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListSessionRecordingsResponse) Reset() { *x = ListSessionRecordingsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListSessionRecordingsResponse) String() string { @@ -253,7 +241,7 @@ func (*ListSessionRecordingsResponse) ProtoMessage() {} func (x *ListSessionRecordingsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -318,10 +306,7 @@ func (x *ListSessionRecordingsResponse) GetEstItemCount() uint32 { } type DownloadRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the resource that should be downloaded. Supported types: // - Session ID and Session recording ID for Session recordings // - Connection ID and Connection recording ID for Connection recordings @@ -329,16 +314,16 @@ type DownloadRequest struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The format of the response. The only supported mime type is "application/x-asciicast". // Defaults to "application/x-asciicast" if not set. - MimeType string `protobuf:"bytes,2,opt,name=mime_type,proto3" json:"mime_type,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + MimeType string `protobuf:"bytes,2,opt,name=mime_type,proto3" json:"mime_type,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DownloadRequest) Reset() { *x = DownloadRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DownloadRequest) String() string { @@ -349,7 +334,7 @@ func (*DownloadRequest) ProtoMessage() {} func (x *DownloadRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -379,21 +364,18 @@ func (x *DownloadRequest) GetMimeType() string { } type ReApplyStoragePolicyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The Session Recording ID - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReApplyStoragePolicyRequest) Reset() { *x = ReApplyStoragePolicyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ReApplyStoragePolicyRequest) String() string { @@ -404,7 +386,7 @@ func (*ReApplyStoragePolicyRequest) ProtoMessage() {} func (x *ReApplyStoragePolicyRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -427,21 +409,18 @@ func (x *ReApplyStoragePolicyRequest) GetId() string { } type ReApplyStoragePolicyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The requested recording. - Item *session_recordings.SessionRecording `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + Item *session_recordings.SessionRecording `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReApplyStoragePolicyResponse) Reset() { *x = ReApplyStoragePolicyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ReApplyStoragePolicyResponse) String() string { @@ -452,7 +431,7 @@ func (*ReApplyStoragePolicyResponse) ProtoMessage() {} func (x *ReApplyStoragePolicyResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -475,20 +454,17 @@ func (x *ReApplyStoragePolicyResponse) GetItem() *session_recordings.SessionReco } type DeleteSessionRecordingRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + sizeCache protoimpl.SizeCache } func (x *DeleteSessionRecordingRequest) Reset() { *x = DeleteSessionRecordingRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteSessionRecordingRequest) String() string { @@ -499,7 +475,7 @@ func (*DeleteSessionRecordingRequest) ProtoMessage() {} func (x *DeleteSessionRecordingRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -522,18 +498,16 @@ func (x *DeleteSessionRecordingRequest) GetId() string { } type DeleteSessionRecordingResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteSessionRecordingResponse) Reset() { *x = DeleteSessionRecordingResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteSessionRecordingResponse) String() string { @@ -544,7 +518,7 @@ func (*DeleteSessionRecordingResponse) ProtoMessage() {} func (x *DeleteSessionRecordingResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_recording_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -848,116 +822,6 @@ func file_controller_api_services_v1_session_recording_service_proto_init() { if File_controller_api_services_v1_session_recording_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_session_recording_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetSessionRecordingRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_session_recording_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetSessionRecordingResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_session_recording_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListSessionRecordingsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_session_recording_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListSessionRecordingsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_session_recording_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*DownloadRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_session_recording_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*ReApplyStoragePolicyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_session_recording_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*ReApplyStoragePolicyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_session_recording_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*DeleteSessionRecordingRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_session_recording_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteSessionRecordingResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/session_service.pb.go b/internal/gen/controller/api/services/session_service.pb.go index e7492977df..6dadc88098 100644 --- a/internal/gen/controller/api/services/session_service.pb.go +++ b/internal/gen/controller/api/services/session_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/session_service.proto @@ -27,20 +27,17 @@ const ( ) type GetSessionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *GetSessionRequest) Reset() { *x = GetSessionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSessionRequest) String() string { @@ -51,7 +48,7 @@ func (*GetSessionRequest) ProtoMessage() {} func (x *GetSessionRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -74,20 +71,17 @@ func (x *GetSessionRequest) GetId() string { } type GetSessionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *sessions.Session `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *sessions.Session `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSessionResponse) Reset() { *x = GetSessionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSessionResponse) String() string { @@ -98,7 +92,7 @@ func (*GetSessionResponse) ProtoMessage() {} func (x *GetSessionResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -121,12 +115,9 @@ func (x *GetSessionResponse) GetItem() *sessions.Session { } type ListSessionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // You can specify that the filter should only return items that match. // Refer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information. Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` @@ -148,16 +139,16 @@ type ListSessionsRequest struct { // If unset, the default page size configured will be used. // If the page_size is greater than the default page configured, // the page size will be truncated to this number.. - PageSize uint32 `protobuf:"varint,60,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,60,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListSessionsRequest) Reset() { *x = ListSessionsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListSessionsRequest) String() string { @@ -168,7 +159,7 @@ func (*ListSessionsRequest) ProtoMessage() {} func (x *ListSessionsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -227,11 +218,8 @@ func (x *ListSessionsRequest) GetPageSize() uint32 { } type ListSessionsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Items []*sessions.Session `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Items []*sessions.Session `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". // Delta signifies that this is part of a paginated result // or an update to a previously completed pagination. @@ -251,16 +239,16 @@ type ListSessionsResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListSessionsResponse) Reset() { *x = ListSessionsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListSessionsResponse) String() string { @@ -271,7 +259,7 @@ func (*ListSessionsResponse) ProtoMessage() {} func (x *ListSessionsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -336,21 +324,18 @@ func (x *ListSessionsResponse) GetEstItemCount() uint32 { } type CancelSessionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *CancelSessionRequest) Reset() { *x = CancelSessionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CancelSessionRequest) String() string { @@ -361,7 +346,7 @@ func (*CancelSessionRequest) ProtoMessage() {} func (x *CancelSessionRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -391,20 +376,17 @@ func (x *CancelSessionRequest) GetVersion() uint32 { } type CancelSessionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *sessions.Session `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *sessions.Session `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CancelSessionResponse) Reset() { *x = CancelSessionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_session_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_session_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CancelSessionResponse) String() string { @@ -415,7 +397,7 @@ func (*CancelSessionResponse) ProtoMessage() {} func (x *CancelSessionResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_session_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -609,80 +591,6 @@ func file_controller_api_services_v1_session_service_proto_init() { if File_controller_api_services_v1_session_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_session_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetSessionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_session_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetSessionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_session_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListSessionsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_session_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListSessionsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_session_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CancelSessionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_session_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CancelSessionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/storage_bucket_service.pb.go b/internal/gen/controller/api/services/storage_bucket_service.pb.go index b6445fcc51..560876dc02 100644 --- a/internal/gen/controller/api/services/storage_bucket_service.pb.go +++ b/internal/gen/controller/api/services/storage_bucket_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/storage_bucket_service.proto @@ -29,20 +29,17 @@ const ( ) type GetStorageBucketRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *GetStorageBucketRequest) Reset() { *x = GetStorageBucketRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetStorageBucketRequest) String() string { @@ -53,7 +50,7 @@ func (*GetStorageBucketRequest) ProtoMessage() {} func (x *GetStorageBucketRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,20 +73,17 @@ func (x *GetStorageBucketRequest) GetId() string { } type GetStorageBucketResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *storagebuckets.StorageBucket `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *storagebuckets.StorageBucket `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetStorageBucketResponse) Reset() { *x = GetStorageBucketResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetStorageBucketResponse) String() string { @@ -100,7 +94,7 @@ func (*GetStorageBucketResponse) ProtoMessage() {} func (x *GetStorageBucketResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,12 +117,9 @@ func (x *GetStorageBucketResponse) GetItem() *storagebuckets.StorageBucket { } type ListStorageBucketsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // You can specify that the filter should only return items that match. // Refer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information. Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` @@ -141,16 +132,16 @@ type ListStorageBucketsRequest struct { // If you do not set a page size, Boundary uses the configured default page size. // If the page_size is greater than the default page size configured, // Boundary truncates the page size to this number. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListStorageBucketsRequest) Reset() { *x = ListStorageBucketsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListStorageBucketsRequest) String() string { @@ -161,7 +152,7 @@ func (*ListStorageBucketsRequest) ProtoMessage() {} func (x *ListStorageBucketsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -212,10 +203,7 @@ func (x *ListStorageBucketsRequest) GetPageSize() uint32 { } type ListStorageBucketsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The items returned in this page Items []*storagebuckets.StorageBucket `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". @@ -237,16 +225,16 @@ type ListStorageBucketsResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListStorageBucketsResponse) Reset() { *x = ListStorageBucketsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListStorageBucketsResponse) String() string { @@ -257,7 +245,7 @@ func (*ListStorageBucketsResponse) ProtoMessage() {} func (x *ListStorageBucketsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -322,23 +310,20 @@ func (x *ListStorageBucketsResponse) GetEstItemCount() uint32 { } type CreateStorageBucketRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Item *storagebuckets.StorageBucket `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Item *storagebuckets.StorageBucket `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` // As an alternative to providing the plugin id in the provided StorageBucket, // this field can be used to lookup the plugin using its name. - PluginName string `protobuf:"bytes,2,opt,name=plugin_name,proto3" json:"plugin_name,omitempty" class:"public"` // @gotags: `class:"public"` + PluginName string `protobuf:"bytes,2,opt,name=plugin_name,proto3" json:"plugin_name,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateStorageBucketRequest) Reset() { *x = CreateStorageBucketRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateStorageBucketRequest) String() string { @@ -349,7 +334,7 @@ func (*CreateStorageBucketRequest) ProtoMessage() {} func (x *CreateStorageBucketRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -379,21 +364,18 @@ func (x *CreateStorageBucketRequest) GetPluginName() string { } type CreateStorageBucketResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *storagebuckets.StorageBucket `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *storagebuckets.StorageBucket `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateStorageBucketResponse) Reset() { *x = CreateStorageBucketResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateStorageBucketResponse) String() string { @@ -404,7 +386,7 @@ func (*CreateStorageBucketResponse) ProtoMessage() {} func (x *CreateStorageBucketResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -434,22 +416,19 @@ func (x *CreateStorageBucketResponse) GetItem() *storagebuckets.StorageBucket { } type UpdateStorageBucketRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *storagebuckets.StorageBucket `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *storagebuckets.StorageBucket `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateStorageBucketRequest) Reset() { *x = UpdateStorageBucketRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateStorageBucketRequest) String() string { @@ -460,7 +439,7 @@ func (*UpdateStorageBucketRequest) ProtoMessage() {} func (x *UpdateStorageBucketRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -497,20 +476,17 @@ func (x *UpdateStorageBucketRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateStorageBucketResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *storagebuckets.StorageBucket `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *storagebuckets.StorageBucket `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateStorageBucketResponse) Reset() { *x = UpdateStorageBucketResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateStorageBucketResponse) String() string { @@ -521,7 +497,7 @@ func (*UpdateStorageBucketResponse) ProtoMessage() {} func (x *UpdateStorageBucketResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -544,20 +520,17 @@ func (x *UpdateStorageBucketResponse) GetItem() *storagebuckets.StorageBucket { } type DeleteStorageBucketRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *DeleteStorageBucketRequest) Reset() { *x = DeleteStorageBucketRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteStorageBucketRequest) String() string { @@ -568,7 +541,7 @@ func (*DeleteStorageBucketRequest) ProtoMessage() {} func (x *DeleteStorageBucketRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -591,18 +564,16 @@ func (x *DeleteStorageBucketRequest) GetId() string { } type DeleteStorageBucketResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteStorageBucketResponse) Reset() { *x = DeleteStorageBucketResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteStorageBucketResponse) String() string { @@ -613,7 +584,7 @@ func (*DeleteStorageBucketResponse) ProtoMessage() {} func (x *DeleteStorageBucketResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -884,128 +855,6 @@ func file_controller_api_services_v1_storage_bucket_service_proto_init() { if File_controller_api_services_v1_storage_bucket_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetStorageBucketRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetStorageBucketResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListStorageBucketsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListStorageBucketsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateStorageBucketRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateStorageBucketResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateStorageBucketRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateStorageBucketResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteStorageBucketRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_storage_bucket_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteStorageBucketResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/target_service.pb.go b/internal/gen/controller/api/services/target_service.pb.go index c550fa35a1..0c5b706ee9 100644 --- a/internal/gen/controller/api/services/target_service.pb.go +++ b/internal/gen/controller/api/services/target_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/target_service.proto @@ -29,20 +29,17 @@ const ( ) type GetTargetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *GetTargetRequest) Reset() { *x = GetTargetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetTargetRequest) String() string { @@ -53,7 +50,7 @@ func (*GetTargetRequest) ProtoMessage() {} func (x *GetTargetRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,20 +73,17 @@ func (x *GetTargetRequest) GetId() string { } type GetTargetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTargetResponse) Reset() { *x = GetTargetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetTargetResponse) String() string { @@ -100,7 +94,7 @@ func (*GetTargetResponse) ProtoMessage() {} func (x *GetTargetResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,12 +117,9 @@ func (x *GetTargetResponse) GetItem() *targets.Target { } type ListTargetsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // You can specify that the filter should only return items that match. // Refer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information. Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` @@ -141,16 +132,16 @@ type ListTargetsRequest struct { // If unset, the default page size configured will be used. // If the page_size is greater than the default page configured, // the page size will be truncated to this number.. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListTargetsRequest) Reset() { *x = ListTargetsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListTargetsRequest) String() string { @@ -161,7 +152,7 @@ func (*ListTargetsRequest) ProtoMessage() {} func (x *ListTargetsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -212,11 +203,8 @@ func (x *ListTargetsRequest) GetPageSize() uint32 { } type ListTargetsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Items []*targets.Target `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Items []*targets.Target `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". // Delta signifies that this is part of a paginated result // or an update to a previously completed pagination. @@ -236,16 +224,16 @@ type ListTargetsResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListTargetsResponse) Reset() { *x = ListTargetsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListTargetsResponse) String() string { @@ -256,7 +244,7 @@ func (*ListTargetsResponse) ProtoMessage() {} func (x *ListTargetsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -321,20 +309,17 @@ func (x *ListTargetsResponse) GetEstItemCount() uint32 { } type CreateTargetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateTargetRequest) Reset() { *x = CreateTargetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateTargetRequest) String() string { @@ -345,7 +330,7 @@ func (*CreateTargetRequest) ProtoMessage() {} func (x *CreateTargetRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -368,21 +353,18 @@ func (x *CreateTargetRequest) GetItem() *targets.Target { } type CreateTargetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *targets.Target `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *targets.Target `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateTargetResponse) Reset() { *x = CreateTargetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateTargetResponse) String() string { @@ -393,7 +375,7 @@ func (*CreateTargetResponse) ProtoMessage() {} func (x *CreateTargetResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -423,22 +405,19 @@ func (x *CreateTargetResponse) GetItem() *targets.Target { } type UpdateTargetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *targets.Target `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *targets.Target `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateTargetRequest) Reset() { *x = UpdateTargetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateTargetRequest) String() string { @@ -449,7 +428,7 @@ func (*UpdateTargetRequest) ProtoMessage() {} func (x *UpdateTargetRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -486,20 +465,17 @@ func (x *UpdateTargetRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateTargetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateTargetResponse) Reset() { *x = UpdateTargetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateTargetResponse) String() string { @@ -510,7 +486,7 @@ func (*UpdateTargetResponse) ProtoMessage() {} func (x *UpdateTargetResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -533,20 +509,17 @@ func (x *UpdateTargetResponse) GetItem() *targets.Target { } type DeleteTargetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *DeleteTargetRequest) Reset() { *x = DeleteTargetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteTargetRequest) String() string { @@ -557,7 +530,7 @@ func (*DeleteTargetRequest) ProtoMessage() {} func (x *DeleteTargetRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -580,18 +553,16 @@ func (x *DeleteTargetRequest) GetId() string { } type DeleteTargetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteTargetResponse) Reset() { *x = DeleteTargetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteTargetResponse) String() string { @@ -602,7 +573,7 @@ func (*DeleteTargetResponse) ProtoMessage() {} func (x *DeleteTargetResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -618,24 +589,21 @@ func (*DeleteTargetResponse) Descriptor() ([]byte, []int) { } type AddTargetHostSourcesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` HostSourceIds []string `protobuf:"bytes,3,rep,name=host_source_ids,proto3" json:"host_source_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AddTargetHostSourcesRequest) Reset() { *x = AddTargetHostSourcesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddTargetHostSourcesRequest) String() string { @@ -646,7 +614,7 @@ func (*AddTargetHostSourcesRequest) ProtoMessage() {} func (x *AddTargetHostSourcesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -683,20 +651,17 @@ func (x *AddTargetHostSourcesRequest) GetHostSourceIds() []string { } type AddTargetHostSourcesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AddTargetHostSourcesResponse) Reset() { *x = AddTargetHostSourcesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddTargetHostSourcesResponse) String() string { @@ -707,7 +672,7 @@ func (*AddTargetHostSourcesResponse) ProtoMessage() {} func (x *AddTargetHostSourcesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -730,24 +695,21 @@ func (x *AddTargetHostSourcesResponse) GetItem() *targets.Target { } type SetTargetHostSourcesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` HostSourceIds []string `protobuf:"bytes,3,rep,name=host_source_ids,proto3" json:"host_source_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetTargetHostSourcesRequest) Reset() { *x = SetTargetHostSourcesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetTargetHostSourcesRequest) String() string { @@ -758,7 +720,7 @@ func (*SetTargetHostSourcesRequest) ProtoMessage() {} func (x *SetTargetHostSourcesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -795,20 +757,17 @@ func (x *SetTargetHostSourcesRequest) GetHostSourceIds() []string { } type SetTargetHostSourcesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetTargetHostSourcesResponse) Reset() { *x = SetTargetHostSourcesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetTargetHostSourcesResponse) String() string { @@ -819,7 +778,7 @@ func (*SetTargetHostSourcesResponse) ProtoMessage() {} func (x *SetTargetHostSourcesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -842,24 +801,21 @@ func (x *SetTargetHostSourcesResponse) GetItem() *targets.Target { } type RemoveTargetHostSourcesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` HostSourceIds []string `protobuf:"bytes,3,rep,name=host_source_ids,proto3" json:"host_source_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoveTargetHostSourcesRequest) Reset() { *x = RemoveTargetHostSourcesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveTargetHostSourcesRequest) String() string { @@ -870,7 +826,7 @@ func (*RemoveTargetHostSourcesRequest) ProtoMessage() {} func (x *RemoveTargetHostSourcesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -907,20 +863,17 @@ func (x *RemoveTargetHostSourcesRequest) GetHostSourceIds() []string { } type RemoveTargetHostSourcesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveTargetHostSourcesResponse) Reset() { *x = RemoveTargetHostSourcesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveTargetHostSourcesResponse) String() string { @@ -931,7 +884,7 @@ func (*RemoveTargetHostSourcesResponse) ProtoMessage() {} func (x *RemoveTargetHostSourcesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -954,11 +907,8 @@ func (x *RemoveTargetHostSourcesResponse) GetItem() *targets.Target { } type AddTargetCredentialSourcesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` @@ -968,15 +918,15 @@ type AddTargetCredentialSourcesRequest struct { // connection between the worker and the endpoint. Injected application credentials are // never returned to the user. InjectedApplicationCredentialSourceIds []string `protobuf:"bytes,20,rep,name=injected_application_credential_source_ids,proto3" json:"injected_application_credential_source_ids,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AddTargetCredentialSourcesRequest) Reset() { *x = AddTargetCredentialSourcesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddTargetCredentialSourcesRequest) String() string { @@ -987,7 +937,7 @@ func (*AddTargetCredentialSourcesRequest) ProtoMessage() {} func (x *AddTargetCredentialSourcesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1031,20 +981,17 @@ func (x *AddTargetCredentialSourcesRequest) GetInjectedApplicationCredentialSour } type AddTargetCredentialSourcesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AddTargetCredentialSourcesResponse) Reset() { *x = AddTargetCredentialSourcesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddTargetCredentialSourcesResponse) String() string { @@ -1055,7 +1002,7 @@ func (*AddTargetCredentialSourcesResponse) ProtoMessage() {} func (x *AddTargetCredentialSourcesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1080,11 +1027,8 @@ func (x *AddTargetCredentialSourcesResponse) GetItem() *targets.Target { // Sets the values for credential sources. Any credential_source_id field that // is not set in the request will result in those fields being cleared. type SetTargetCredentialSourcesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` @@ -1094,15 +1038,15 @@ type SetTargetCredentialSourcesRequest struct { // connection between the worker and the endpoint. Injected application credentials are // never returned to the user. InjectedApplicationCredentialSourceIds []string `protobuf:"bytes,20,rep,name=injected_application_credential_source_ids,proto3" json:"injected_application_credential_source_ids,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetTargetCredentialSourcesRequest) Reset() { *x = SetTargetCredentialSourcesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetTargetCredentialSourcesRequest) String() string { @@ -1113,7 +1057,7 @@ func (*SetTargetCredentialSourcesRequest) ProtoMessage() {} func (x *SetTargetCredentialSourcesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1157,20 +1101,17 @@ func (x *SetTargetCredentialSourcesRequest) GetInjectedApplicationCredentialSour } type SetTargetCredentialSourcesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetTargetCredentialSourcesResponse) Reset() { *x = SetTargetCredentialSourcesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetTargetCredentialSourcesResponse) String() string { @@ -1181,7 +1122,7 @@ func (*SetTargetCredentialSourcesResponse) ProtoMessage() {} func (x *SetTargetCredentialSourcesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1204,11 +1145,8 @@ func (x *SetTargetCredentialSourcesResponse) GetItem() *targets.Target { } type RemoveTargetCredentialSourcesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` @@ -1218,15 +1156,15 @@ type RemoveTargetCredentialSourcesRequest struct { // connection between the worker and the endpoint. Injected application credentials are // never returned to the user. InjectedApplicationCredentialSourceIds []string `protobuf:"bytes,20,rep,name=injected_application_credential_source_ids,proto3" json:"injected_application_credential_source_ids,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoveTargetCredentialSourcesRequest) Reset() { *x = RemoveTargetCredentialSourcesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveTargetCredentialSourcesRequest) String() string { @@ -1237,7 +1175,7 @@ func (*RemoveTargetCredentialSourcesRequest) ProtoMessage() {} func (x *RemoveTargetCredentialSourcesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1281,20 +1219,17 @@ func (x *RemoveTargetCredentialSourcesRequest) GetInjectedApplicationCredentialS } type RemoveTargetCredentialSourcesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *targets.Target `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveTargetCredentialSourcesResponse) Reset() { *x = RemoveTargetCredentialSourcesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveTargetCredentialSourcesResponse) String() string { @@ -1305,7 +1240,7 @@ func (*RemoveTargetCredentialSourcesResponse) ProtoMessage() {} func (x *RemoveTargetCredentialSourcesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1328,10 +1263,7 @@ func (x *RemoveTargetCredentialSourcesResponse) GetItem() *targets.Target { } type AuthorizeSessionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the target. Required unless some combination of scope_id/scope_name and name are set. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The name of the target. When using this, scope_id or scope_name must be set. @@ -1341,16 +1273,16 @@ type AuthorizeSessionRequest struct { // The scope name containing the target, if specifying the target by name. ScopeName string `protobuf:"bytes,5,opt,name=scope_name,json=scopeName,proto3" json:"scope_name,omitempty" class:"public"` // @gotags: `class:"public"` // An optional parameter allowing specification of the particular Host within the Target's configured Host Sets to connect to during this Session. - HostId string `protobuf:"bytes,2,opt,name=host_id,proto3" json:"host_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + HostId string `protobuf:"bytes,2,opt,name=host_id,proto3" json:"host_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthorizeSessionRequest) Reset() { *x = AuthorizeSessionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthorizeSessionRequest) String() string { @@ -1361,7 +1293,7 @@ func (*AuthorizeSessionRequest) ProtoMessage() {} func (x *AuthorizeSessionRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1412,20 +1344,17 @@ func (x *AuthorizeSessionRequest) GetHostId() string { } type AuthorizeSessionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *targets.SessionAuthorization `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *targets.SessionAuthorization `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AuthorizeSessionResponse) Reset() { *x = AuthorizeSessionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_target_service_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_target_service_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthorizeSessionResponse) String() string { @@ -1436,7 +1365,7 @@ func (*AuthorizeSessionResponse) ProtoMessage() {} func (x *AuthorizeSessionResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_target_service_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1981,296 +1910,6 @@ func file_controller_api_services_v1_target_service_proto_init() { if File_controller_api_services_v1_target_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_target_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetTargetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetTargetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListTargetsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListTargetsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateTargetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateTargetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateTargetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateTargetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteTargetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteTargetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*AddTargetHostSourcesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*AddTargetHostSourcesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*SetTargetHostSourcesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*SetTargetHostSourcesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*RemoveTargetHostSourcesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*RemoveTargetHostSourcesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*AddTargetCredentialSourcesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*AddTargetCredentialSourcesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*SetTargetCredentialSourcesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*SetTargetCredentialSourcesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*RemoveTargetCredentialSourcesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*RemoveTargetCredentialSourcesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*AuthorizeSessionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_target_service_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*AuthorizeSessionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/user_service.pb.go b/internal/gen/controller/api/services/user_service.pb.go index 631abd86c1..88de9d069e 100644 --- a/internal/gen/controller/api/services/user_service.pb.go +++ b/internal/gen/controller/api/services/user_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/user_service.proto @@ -29,20 +29,17 @@ const ( ) type GetUserRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *GetUserRequest) Reset() { *x = GetUserRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUserRequest) String() string { @@ -53,7 +50,7 @@ func (*GetUserRequest) ProtoMessage() {} func (x *GetUserRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,20 +73,17 @@ func (x *GetUserRequest) GetId() string { } type GetUserResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *users.User `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *users.User `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetUserResponse) Reset() { *x = GetUserResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUserResponse) String() string { @@ -100,7 +94,7 @@ func (*GetUserResponse) ProtoMessage() {} func (x *GetUserResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,13 +117,10 @@ func (x *GetUserResponse) GetItem() *users.User { } type ListUsersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"sensitive"` // @gotags: `class:"sensitive"` + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"sensitive"` // @gotags: `class:"sensitive"` // An opaque token that Boundary uses to continue an existing iteration or // request updated items. If you do not specify a token, pagination // starts from the beginning. To learn more about list pagination @@ -139,16 +130,16 @@ type ListUsersRequest struct { // If unset, the default page size configured will be used. // If the page_size is greater than the default page configured, // the page size will be truncated to this number.. - PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,50,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUsersRequest) Reset() { *x = ListUsersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUsersRequest) String() string { @@ -159,7 +150,7 @@ func (*ListUsersRequest) ProtoMessage() {} func (x *ListUsersRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -210,11 +201,8 @@ func (x *ListUsersRequest) GetPageSize() uint32 { } type ListUsersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Items []*users.User `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Items []*users.User `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". // Delta signifies that this is part of a paginated result // or an update to a previously completed pagination. @@ -234,16 +222,16 @@ type ListUsersResponse struct { // created and deleted between listings. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUsersResponse) Reset() { *x = ListUsersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUsersResponse) String() string { @@ -254,7 +242,7 @@ func (*ListUsersResponse) ProtoMessage() {} func (x *ListUsersResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -319,20 +307,17 @@ func (x *ListUsersResponse) GetEstItemCount() uint32 { } type CreateUserRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *users.User `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *users.User `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateUserRequest) Reset() { *x = CreateUserRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateUserRequest) String() string { @@ -343,7 +328,7 @@ func (*CreateUserRequest) ProtoMessage() {} func (x *CreateUserRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -366,21 +351,18 @@ func (x *CreateUserRequest) GetItem() *users.User { } type CreateUserResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *users.User `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *users.User `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateUserResponse) Reset() { *x = CreateUserResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateUserResponse) String() string { @@ -391,7 +373,7 @@ func (*CreateUserResponse) ProtoMessage() {} func (x *CreateUserResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -421,22 +403,19 @@ func (x *CreateUserResponse) GetItem() *users.User { } type UpdateUserRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *users.User `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *users.User `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateUserRequest) Reset() { *x = UpdateUserRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateUserRequest) String() string { @@ -447,7 +426,7 @@ func (*UpdateUserRequest) ProtoMessage() {} func (x *UpdateUserRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -484,20 +463,17 @@ func (x *UpdateUserRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateUserResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *users.User `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *users.User `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateUserResponse) Reset() { *x = UpdateUserResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateUserResponse) String() string { @@ -508,7 +484,7 @@ func (*UpdateUserResponse) ProtoMessage() {} func (x *UpdateUserResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -531,20 +507,17 @@ func (x *UpdateUserResponse) GetItem() *users.User { } type DeleteUserRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *DeleteUserRequest) Reset() { *x = DeleteUserRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteUserRequest) String() string { @@ -555,7 +528,7 @@ func (*DeleteUserRequest) ProtoMessage() {} func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -578,18 +551,16 @@ func (x *DeleteUserRequest) GetId() string { } type DeleteUserResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteUserResponse) Reset() { *x = DeleteUserResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteUserResponse) String() string { @@ -600,7 +571,7 @@ func (*DeleteUserResponse) ProtoMessage() {} func (x *DeleteUserResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -616,23 +587,20 @@ func (*DeleteUserResponse) Descriptor() ([]byte, []int) { } type AddUserAccountsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The version ensures the User hasn't changed since it was last retrieved and if it has the request will fail. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - AccountIds []string `protobuf:"bytes,3,rep,name=account_ids,proto3" json:"account_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + AccountIds []string `protobuf:"bytes,3,rep,name=account_ids,proto3" json:"account_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AddUserAccountsRequest) Reset() { *x = AddUserAccountsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddUserAccountsRequest) String() string { @@ -643,7 +611,7 @@ func (*AddUserAccountsRequest) ProtoMessage() {} func (x *AddUserAccountsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -680,20 +648,17 @@ func (x *AddUserAccountsRequest) GetAccountIds() []string { } type AddUserAccountsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *users.User `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *users.User `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AddUserAccountsResponse) Reset() { *x = AddUserAccountsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddUserAccountsResponse) String() string { @@ -704,7 +669,7 @@ func (*AddUserAccountsResponse) ProtoMessage() {} func (x *AddUserAccountsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -727,23 +692,20 @@ func (x *AddUserAccountsResponse) GetItem() *users.User { } type SetUserAccountsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The version ensures the User hasn't changed since it was last retrieved and if it has the request will fail. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - AccountIds []string `protobuf:"bytes,3,rep,name=account_ids,proto3" json:"account_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + AccountIds []string `protobuf:"bytes,3,rep,name=account_ids,proto3" json:"account_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetUserAccountsRequest) Reset() { *x = SetUserAccountsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetUserAccountsRequest) String() string { @@ -754,7 +716,7 @@ func (*SetUserAccountsRequest) ProtoMessage() {} func (x *SetUserAccountsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -791,20 +753,17 @@ func (x *SetUserAccountsRequest) GetAccountIds() []string { } type SetUserAccountsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *users.User `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *users.User `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetUserAccountsResponse) Reset() { *x = SetUserAccountsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetUserAccountsResponse) String() string { @@ -815,7 +774,7 @@ func (*SetUserAccountsResponse) ProtoMessage() {} func (x *SetUserAccountsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -838,23 +797,20 @@ func (x *SetUserAccountsResponse) GetItem() *users.User { } type RemoveUserAccountsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The version ensures the User hasn't changed since it was last retrieved and if it has the request will fail. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - AccountIds []string `protobuf:"bytes,3,rep,name=account_ids,proto3" json:"account_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + AccountIds []string `protobuf:"bytes,3,rep,name=account_ids,proto3" json:"account_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoveUserAccountsRequest) Reset() { *x = RemoveUserAccountsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveUserAccountsRequest) String() string { @@ -865,7 +821,7 @@ func (*RemoveUserAccountsRequest) ProtoMessage() {} func (x *RemoveUserAccountsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -902,20 +858,17 @@ func (x *RemoveUserAccountsRequest) GetAccountIds() []string { } type RemoveUserAccountsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *users.User `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *users.User `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveUserAccountsResponse) Reset() { *x = RemoveUserAccountsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveUserAccountsResponse) String() string { @@ -926,7 +879,7 @@ func (*RemoveUserAccountsResponse) ProtoMessage() {} func (x *RemoveUserAccountsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -949,11 +902,8 @@ func (x *RemoveUserAccountsResponse) GetItem() *users.User { } type ListResolvableAliasesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // An opaque token used to continue an existing iteration or // request updated items. If not specified, pagination // will start from the beginning. @@ -962,16 +912,16 @@ type ListResolvableAliasesRequest struct { // If unset, the default page size configured will be used. // If the page_size is greater than the default page configured, // an error will be returned. - PageSize uint32 `protobuf:"varint,3,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + PageSize uint32 `protobuf:"varint,3,opt,name=page_size,proto3" json:"page_size,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListResolvableAliasesRequest) Reset() { *x = ListResolvableAliasesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListResolvableAliasesRequest) String() string { @@ -982,7 +932,7 @@ func (*ListResolvableAliasesRequest) ProtoMessage() {} func (x *ListResolvableAliasesRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1019,11 +969,8 @@ func (x *ListResolvableAliasesRequest) GetPageSize() uint32 { } type ListResolvableAliasesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Items []*aliases.Alias `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Items []*aliases.Alias `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // The type of response, either "delta" or "complete". // Delta signifies that this is part of a paginated result // or an update to a previously completed pagination. @@ -1043,16 +990,16 @@ type ListResolvableAliasesResponse struct { // have permissions. RemovedIds []string `protobuf:"bytes,6,rep,name=removed_ids,proto3" json:"removed_ids,omitempty" class:"public"` // @gotags: `class:"public"` // An estimate at the total items available. This may change during pagination. - EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + EstItemCount uint32 `protobuf:"varint,7,opt,name=est_item_count,proto3" json:"est_item_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListResolvableAliasesResponse) Reset() { *x = ListResolvableAliasesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_user_service_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_user_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListResolvableAliasesResponse) String() string { @@ -1063,7 +1010,7 @@ func (*ListResolvableAliasesResponse) ProtoMessage() {} func (x *ListResolvableAliasesResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_user_service_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1497,224 +1444,6 @@ func file_controller_api_services_v1_user_service_proto_init() { if File_controller_api_services_v1_user_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_user_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetUserRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetUserResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListUsersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListUsersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateUserRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateUserResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateUserRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateUserResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteUserRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteUserResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*AddUserAccountsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*AddUserAccountsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*SetUserAccountsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*SetUserAccountsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*RemoveUserAccountsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*RemoveUserAccountsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*ListResolvableAliasesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_user_service_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*ListResolvableAliasesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/api/services/worker_service.pb.go b/internal/gen/controller/api/services/worker_service.pb.go index e55a58f631..e41f3fdaac 100644 --- a/internal/gen/controller/api/services/worker_service.pb.go +++ b/internal/gen/controller/api/services/worker_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/services/v1/worker_service.proto @@ -29,20 +29,17 @@ const ( ) type GetWorkerRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *GetWorkerRequest) Reset() { *x = GetWorkerRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetWorkerRequest) String() string { @@ -53,7 +50,7 @@ func (*GetWorkerRequest) ProtoMessage() {} func (x *GetWorkerRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -76,20 +73,17 @@ func (x *GetWorkerRequest) GetId() string { } type GetWorkerResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *workers.Worker `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *workers.Worker `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetWorkerResponse) Reset() { *x = GetWorkerResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetWorkerResponse) String() string { @@ -100,7 +94,7 @@ func (*GetWorkerResponse) ProtoMessage() {} func (x *GetWorkerResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,22 +117,19 @@ func (x *GetWorkerResponse) GetItem() *workers.Worker { } type ListWorkersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"sensitive"` // @gotags: `class:"sensitive"` unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Recursive bool `protobuf:"varint,20,opt,name=recursive,proto3" json:"recursive,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Filter string `protobuf:"bytes,30,opt,name=filter,proto3" json:"filter,omitempty" class:"sensitive"` // @gotags: `class:"sensitive"` + sizeCache protoimpl.SizeCache } func (x *ListWorkersRequest) Reset() { *x = ListWorkersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListWorkersRequest) String() string { @@ -149,7 +140,7 @@ func (*ListWorkersRequest) ProtoMessage() {} func (x *ListWorkersRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -186,20 +177,17 @@ func (x *ListWorkersRequest) GetFilter() string { } type ListWorkersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Items []*workers.Worker `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` unknownFields protoimpl.UnknownFields - - Items []*workers.Worker `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListWorkersResponse) Reset() { *x = ListWorkersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListWorkersResponse) String() string { @@ -210,7 +198,7 @@ func (*ListWorkersResponse) ProtoMessage() {} func (x *ListWorkersResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -233,20 +221,17 @@ func (x *ListWorkersResponse) GetItems() []*workers.Worker { } type CreateWorkerLedRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *workers.Worker `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *workers.Worker `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateWorkerLedRequest) Reset() { *x = CreateWorkerLedRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateWorkerLedRequest) String() string { @@ -257,7 +242,7 @@ func (*CreateWorkerLedRequest) ProtoMessage() {} func (x *CreateWorkerLedRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -280,21 +265,18 @@ func (x *CreateWorkerLedRequest) GetItem() *workers.Worker { } type CreateWorkerLedResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *workers.Worker `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *workers.Worker `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateWorkerLedResponse) Reset() { *x = CreateWorkerLedResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateWorkerLedResponse) String() string { @@ -305,7 +287,7 @@ func (*CreateWorkerLedResponse) ProtoMessage() {} func (x *CreateWorkerLedResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -335,20 +317,17 @@ func (x *CreateWorkerLedResponse) GetItem() *workers.Worker { } type CreateControllerLedRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *workers.Worker `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *workers.Worker `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateControllerLedRequest) Reset() { *x = CreateControllerLedRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateControllerLedRequest) String() string { @@ -359,7 +338,7 @@ func (*CreateControllerLedRequest) ProtoMessage() {} func (x *CreateControllerLedRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -382,21 +361,18 @@ func (x *CreateControllerLedRequest) GetItem() *workers.Worker { } type CreateControllerLedResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Item *workers.Worker `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Item *workers.Worker `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateControllerLedResponse) Reset() { *x = CreateControllerLedResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateControllerLedResponse) String() string { @@ -407,7 +383,7 @@ func (*CreateControllerLedResponse) ProtoMessage() {} func (x *CreateControllerLedResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -437,22 +413,19 @@ func (x *CreateControllerLedResponse) GetItem() *workers.Worker { } type UpdateWorkerRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + Item *workers.Worker `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` - Item *workers.Worker `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateWorkerRequest) Reset() { *x = UpdateWorkerRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateWorkerRequest) String() string { @@ -463,7 +436,7 @@ func (*UpdateWorkerRequest) ProtoMessage() {} func (x *UpdateWorkerRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -500,20 +473,17 @@ func (x *UpdateWorkerRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateWorkerResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *workers.Worker `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *workers.Worker `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateWorkerResponse) Reset() { *x = UpdateWorkerResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateWorkerResponse) String() string { @@ -524,7 +494,7 @@ func (*UpdateWorkerResponse) ProtoMessage() {} func (x *UpdateWorkerResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -547,20 +517,17 @@ func (x *UpdateWorkerResponse) GetItem() *workers.Worker { } type DeleteWorkerRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *DeleteWorkerRequest) Reset() { *x = DeleteWorkerRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteWorkerRequest) String() string { @@ -571,7 +538,7 @@ func (*DeleteWorkerRequest) ProtoMessage() {} func (x *DeleteWorkerRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -594,18 +561,16 @@ func (x *DeleteWorkerRequest) GetId() string { } type DeleteWorkerResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteWorkerResponse) Reset() { *x = DeleteWorkerResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteWorkerResponse) String() string { @@ -616,7 +581,7 @@ func (*DeleteWorkerResponse) ProtoMessage() {} func (x *DeleteWorkerResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -632,24 +597,21 @@ func (*DeleteWorkerResponse) Descriptor() ([]byte, []int) { } type AddWorkerTagsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - ApiTags map[string]*structpb.ListValue `protobuf:"bytes,3,rep,name=api_tags,proto3" json:"api_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: `class:"public"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + ApiTags map[string]*structpb.ListValue `protobuf:"bytes,3,rep,name=api_tags,proto3" json:"api_tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AddWorkerTagsRequest) Reset() { *x = AddWorkerTagsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddWorkerTagsRequest) String() string { @@ -660,7 +622,7 @@ func (*AddWorkerTagsRequest) ProtoMessage() {} func (x *AddWorkerTagsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -697,20 +659,17 @@ func (x *AddWorkerTagsRequest) GetApiTags() map[string]*structpb.ListValue { } type AddWorkerTagsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *workers.Worker `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *workers.Worker `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AddWorkerTagsResponse) Reset() { *x = AddWorkerTagsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddWorkerTagsResponse) String() string { @@ -721,7 +680,7 @@ func (*AddWorkerTagsResponse) ProtoMessage() {} func (x *AddWorkerTagsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -744,24 +703,21 @@ func (x *AddWorkerTagsResponse) GetItem() *workers.Worker { } type SetWorkerTagsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - ApiTags map[string]*structpb.ListValue `protobuf:"bytes,3,rep,name=api_tags,proto3" json:"api_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: `class:"public"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + ApiTags map[string]*structpb.ListValue `protobuf:"bytes,3,rep,name=api_tags,proto3" json:"api_tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetWorkerTagsRequest) Reset() { *x = SetWorkerTagsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetWorkerTagsRequest) String() string { @@ -772,7 +728,7 @@ func (*SetWorkerTagsRequest) ProtoMessage() {} func (x *SetWorkerTagsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -809,20 +765,17 @@ func (x *SetWorkerTagsRequest) GetApiTags() map[string]*structpb.ListValue { } type SetWorkerTagsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *workers.Worker `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *workers.Worker `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetWorkerTagsResponse) Reset() { *x = SetWorkerTagsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetWorkerTagsResponse) String() string { @@ -833,7 +786,7 @@ func (*SetWorkerTagsResponse) ProtoMessage() {} func (x *SetWorkerTagsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -856,24 +809,21 @@ func (x *SetWorkerTagsResponse) GetItem() *workers.Worker { } type RemoveWorkerTagsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Version is used to ensure this resource has not changed. // The mutation will fail if the version does not match the latest known good version. - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - ApiTags map[string]*structpb.ListValue `protobuf:"bytes,3,rep,name=api_tags,proto3" json:"api_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: `class:"public"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + ApiTags map[string]*structpb.ListValue `protobuf:"bytes,3,rep,name=api_tags,proto3" json:"api_tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoveWorkerTagsRequest) Reset() { *x = RemoveWorkerTagsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveWorkerTagsRequest) String() string { @@ -884,7 +834,7 @@ func (*RemoveWorkerTagsRequest) ProtoMessage() {} func (x *RemoveWorkerTagsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -921,20 +871,17 @@ func (x *RemoveWorkerTagsRequest) GetApiTags() map[string]*structpb.ListValue { } type RemoveWorkerTagsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *workers.Worker `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *workers.Worker `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveWorkerTagsResponse) Reset() { *x = RemoveWorkerTagsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveWorkerTagsResponse) String() string { @@ -945,7 +892,7 @@ func (*RemoveWorkerTagsResponse) ProtoMessage() {} func (x *RemoveWorkerTagsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -968,20 +915,17 @@ func (x *RemoveWorkerTagsResponse) GetItem() *workers.Worker { } type ReadCertificateAuthorityRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *ReadCertificateAuthorityRequest) Reset() { *x = ReadCertificateAuthorityRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ReadCertificateAuthorityRequest) String() string { @@ -992,7 +936,7 @@ func (*ReadCertificateAuthorityRequest) ProtoMessage() {} func (x *ReadCertificateAuthorityRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1015,20 +959,17 @@ func (x *ReadCertificateAuthorityRequest) GetScopeId() string { } type ReadCertificateAuthorityResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *workers.CertificateAuthority `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *workers.CertificateAuthority `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReadCertificateAuthorityResponse) Reset() { *x = ReadCertificateAuthorityResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ReadCertificateAuthorityResponse) String() string { @@ -1039,7 +980,7 @@ func (*ReadCertificateAuthorityResponse) ProtoMessage() {} func (x *ReadCertificateAuthorityResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1062,20 +1003,17 @@ func (x *ReadCertificateAuthorityResponse) GetItem() *workers.CertificateAuthori } type ReinitializeCertificateAuthorityRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - ScopeId string `protobuf:"bytes,1,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *ReinitializeCertificateAuthorityRequest) Reset() { *x = ReinitializeCertificateAuthorityRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ReinitializeCertificateAuthorityRequest) String() string { @@ -1086,7 +1024,7 @@ func (*ReinitializeCertificateAuthorityRequest) ProtoMessage() {} func (x *ReinitializeCertificateAuthorityRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1109,20 +1047,17 @@ func (x *ReinitializeCertificateAuthorityRequest) GetScopeId() string { } type ReinitializeCertificateAuthorityResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *workers.CertificateAuthority `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *workers.CertificateAuthority `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReinitializeCertificateAuthorityResponse) Reset() { *x = ReinitializeCertificateAuthorityResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ReinitializeCertificateAuthorityResponse) String() string { @@ -1133,7 +1068,7 @@ func (*ReinitializeCertificateAuthorityResponse) ProtoMessage() {} func (x *ReinitializeCertificateAuthorityResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_services_v1_worker_service_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1596,272 +1531,6 @@ func file_controller_api_services_v1_worker_service_proto_init() { if File_controller_api_services_v1_worker_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_services_v1_worker_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetWorkerRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetWorkerResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListWorkersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListWorkersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CreateWorkerLedRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreateWorkerLedResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*CreateControllerLedRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*CreateControllerLedResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*UpdateWorkerRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*UpdateWorkerResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*DeleteWorkerRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*DeleteWorkerResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*AddWorkerTagsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*AddWorkerTagsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*SetWorkerTagsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*SetWorkerTagsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*RemoveWorkerTagsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*RemoveWorkerTagsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*ReadCertificateAuthorityRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*ReadCertificateAuthorityResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*ReinitializeCertificateAuthorityRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_services_v1_worker_service_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*ReinitializeCertificateAuthorityResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/auth/auth.pb.go b/internal/gen/controller/auth/auth.pb.go index 5809d466c0..2ddac8f62c 100644 --- a/internal/gen/controller/auth/auth.pb.go +++ b/internal/gen/controller/auth/auth.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/auth/v1/auth.proto @@ -25,10 +25,7 @@ const ( // RequestInfo contains request parameters necessary for checking authn/authz type RequestInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // path of the request Path string `protobuf:"bytes,10,opt,name=path,proto3" json:"path,omitempty"` // method (http verb) of the request @@ -59,16 +56,16 @@ type RequestInfo struct { // the client ip for the request ClientIp string `protobuf:"bytes,140,opt,name=client_ip,json=clientIp,proto3" json:"client_ip,omitempty"` // url actions from the request path - Actions []string `protobuf:"bytes,141,rep,name=actions,proto3" json:"actions,omitempty"` + Actions []string `protobuf:"bytes,141,rep,name=actions,proto3" json:"actions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RequestInfo) Reset() { *x = RequestInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_auth_v1_auth_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_auth_v1_auth_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RequestInfo) String() string { @@ -79,7 +76,7 @@ func (*RequestInfo) ProtoMessage() {} func (x *RequestInfo) ProtoReflect() protoreflect.Message { mi := &file_controller_auth_v1_auth_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -274,20 +271,6 @@ func file_controller_auth_v1_auth_proto_init() { if File_controller_auth_v1_auth_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_auth_v1_auth_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*RequestInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/servers/servers.pb.go b/internal/gen/controller/servers/servers.pb.go index 93cc3dda01..d6faf58027 100644 --- a/internal/gen/controller/servers/servers.pb.go +++ b/internal/gen/controller/servers/servers.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/servers/v1/servers.proto @@ -26,21 +26,18 @@ const ( // TagPair matches a key to a value. type TagPair struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty" class:"public"` // @gotags: `class:"public"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty" class:"public"` // @gotags: `class:"public"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *TagPair) Reset() { *x = TagPair{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_v1_servers_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_v1_servers_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TagPair) String() string { @@ -51,7 +48,7 @@ func (*TagPair) ProtoMessage() {} func (x *TagPair) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_v1_servers_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -82,10 +79,7 @@ func (x *TagPair) GetValue() string { // ServerWorkerStatus is the new message used in place of Server to relay status request info. type ServerWorkerStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Id of the worker, used after the first request. PublicId string `protobuf:"bytes,10,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Name of the worker, used to identify workers in the KMS registration flow. @@ -113,16 +107,16 @@ type ServerWorkerStatus struct { LocalStorageState string `protobuf:"bytes,80,opt,name=local_storage_state,proto3" json:"local_storage_state,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation" // StorageBucketCredentialStates is a map where the key is a storage bucket id // and the value contains the current state of the storage bucket. - StorageBucketCredentialStates map[string]*plugin.StorageBucketCredentialState `protobuf:"bytes,90,rep,name=storage_bucket_credential_states,json=storageBucketCredentialStates,proto3" json:"storage_bucket_credential_states,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + StorageBucketCredentialStates map[string]*plugin.StorageBucketCredentialState `protobuf:"bytes,90,rep,name=storage_bucket_credential_states,json=storageBucketCredentialStates,proto3" json:"storage_bucket_credential_states,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ServerWorkerStatus) Reset() { *x = ServerWorkerStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_v1_servers_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_v1_servers_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ServerWorkerStatus) String() string { @@ -133,7 +127,7 @@ func (*ServerWorkerStatus) ProtoMessage() {} func (x *ServerWorkerStatus) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_v1_servers_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -312,32 +306,6 @@ func file_controller_servers_v1_servers_proto_init() { if File_controller_servers_v1_servers_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_servers_v1_servers_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*TagPair); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_v1_servers_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*ServerWorkerStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/servers/services/credential.pb.go b/internal/gen/controller/servers/services/credential.pb.go index b8393ed08c..926e852796 100644 --- a/internal/gen/controller/servers/services/credential.pb.go +++ b/internal/gen/controller/servers/services/credential.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/servers/services/v1/credential.proto @@ -24,25 +24,22 @@ const ( ) type Credential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Credential: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Credential: // // *Credential_UsernamePassword // *Credential_SshPrivateKey // *Credential_SshCertificate - Credential isCredential_Credential `protobuf_oneof:"credential"` + Credential isCredential_Credential `protobuf_oneof:"credential"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Credential) Reset() { *x = Credential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_credential_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_credential_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Credential) String() string { @@ -53,7 +50,7 @@ func (*Credential) ProtoMessage() {} func (x *Credential) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_credential_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -68,30 +65,36 @@ func (*Credential) Descriptor() ([]byte, []int) { return file_controller_servers_services_v1_credential_proto_rawDescGZIP(), []int{0} } -func (m *Credential) GetCredential() isCredential_Credential { - if m != nil { - return m.Credential +func (x *Credential) GetCredential() isCredential_Credential { + if x != nil { + return x.Credential } return nil } func (x *Credential) GetUsernamePassword() *UsernamePassword { - if x, ok := x.GetCredential().(*Credential_UsernamePassword); ok { - return x.UsernamePassword + if x != nil { + if x, ok := x.Credential.(*Credential_UsernamePassword); ok { + return x.UsernamePassword + } } return nil } func (x *Credential) GetSshPrivateKey() *SshPrivateKey { - if x, ok := x.GetCredential().(*Credential_SshPrivateKey); ok { - return x.SshPrivateKey + if x != nil { + if x, ok := x.Credential.(*Credential_SshPrivateKey); ok { + return x.SshPrivateKey + } } return nil } func (x *Credential) GetSshCertificate() *SshCertificate { - if x, ok := x.GetCredential().(*Credential_SshCertificate); ok { - return x.SshCertificate + if x != nil { + if x, ok := x.Credential.(*Credential_SshCertificate); ok { + return x.SshCertificate + } } return nil } @@ -120,23 +123,20 @@ func (*Credential_SshCertificate) isCredential_Credential() {} // UsernamePassword is a credential containing a username and a password. type UsernamePassword struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The username of the credential Username string `protobuf:"bytes,10,opt,name=username,proto3" json:"username,omitempty"` // @gotags: `class:"public"` // The password of the credential - Password string `protobuf:"bytes,20,opt,name=password,proto3" json:"password,omitempty"` // @gotags: `class:"secret"` + Password string `protobuf:"bytes,20,opt,name=password,proto3" json:"password,omitempty"` // @gotags: `class:"secret"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UsernamePassword) Reset() { *x = UsernamePassword{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_credential_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_credential_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UsernamePassword) String() string { @@ -147,7 +147,7 @@ func (*UsernamePassword) ProtoMessage() {} func (x *UsernamePassword) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_credential_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -179,25 +179,22 @@ func (x *UsernamePassword) GetPassword() string { // SshPrivateKey is a credential containing a username a private key and an optional // private key passphrase. type SshPrivateKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The username of the credential Username string `protobuf:"bytes,10,opt,name=username,proto3" json:"username,omitempty"` // @gotags: `class:"public"` // The private key of the credential PrivateKey string `protobuf:"bytes,20,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` // @gotags: `class:"secret"` // The optional passphrase of the private_key PrivateKeyPassphrase string `protobuf:"bytes,30,opt,name=private_key_passphrase,json=privateKeyPassphrase,proto3" json:"private_key_passphrase,omitempty"` // @gotags: `class:"secret"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SshPrivateKey) Reset() { *x = SshPrivateKey{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_credential_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_credential_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SshPrivateKey) String() string { @@ -208,7 +205,7 @@ func (*SshPrivateKey) ProtoMessage() {} func (x *SshPrivateKey) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_credential_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -247,25 +244,22 @@ func (x *SshPrivateKey) GetPrivateKeyPassphrase() string { // SshCertificate is a credential containing a username, private key, and // client certificate. type SshCertificate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The username of the credential Username string `protobuf:"bytes,10,opt,name=username,proto3" json:"username,omitempty"` // @gotags: `class:"public"` // The private key of the credential PrivateKey string `protobuf:"bytes,20,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` // @gotags: `class:"secret"` // The client certificate signed by a CA to establish trust of the private key. - Certificate string `protobuf:"bytes,30,opt,name=certificate,proto3" json:"certificate,omitempty"` // @gotags: `class:"public"` + Certificate string `protobuf:"bytes,30,opt,name=certificate,proto3" json:"certificate,omitempty"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SshCertificate) Reset() { *x = SshCertificate{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_credential_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_credential_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SshCertificate) String() string { @@ -276,7 +270,7 @@ func (*SshCertificate) ProtoMessage() {} func (x *SshCertificate) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_credential_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -404,56 +398,6 @@ func file_controller_servers_services_v1_credential_proto_init() { if File_controller_servers_services_v1_credential_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_servers_services_v1_credential_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Credential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_credential_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*UsernamePassword); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_credential_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*SshPrivateKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_credential_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*SshCertificate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_servers_services_v1_credential_proto_msgTypes[0].OneofWrappers = []any{ (*Credential_UsernamePassword)(nil), (*Credential_SshPrivateKey)(nil), diff --git a/internal/gen/controller/servers/services/server_coordination_service.pb.go b/internal/gen/controller/servers/services/server_coordination_service.pb.go index 63fb7273e3..d84dff3cee 100644 --- a/internal/gen/controller/servers/services/server_coordination_service.pb.go +++ b/internal/gen/controller/servers/services/server_coordination_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/servers/services/v1/server_coordination_service.proto @@ -385,23 +385,20 @@ func (UpstreamServer_TYPE) EnumDescriptor() ([]byte, []int) { } type Connection struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ConnectionId string `protobuf:"bytes,1,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Status CONNECTIONSTATUS `protobuf:"varint,2,opt,name=status,proto3,enum=controller.servers.services.v1.CONNECTIONSTATUS" json:"status,omitempty"` + BytesUp int64 `protobuf:"varint,3,opt,name=bytes_up,json=bytesUp,proto3" json:"bytes_up,omitempty" class:"public"` // @gotags: `class:"public"` + BytesDown int64 `protobuf:"varint,4,opt,name=bytes_down,json=bytesDown,proto3" json:"bytes_down,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - ConnectionId string `protobuf:"bytes,1,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Status CONNECTIONSTATUS `protobuf:"varint,2,opt,name=status,proto3,enum=controller.servers.services.v1.CONNECTIONSTATUS" json:"status,omitempty"` - BytesUp int64 `protobuf:"varint,3,opt,name=bytes_up,json=bytesUp,proto3" json:"bytes_up,omitempty" class:"public"` // @gotags: `class:"public"` - BytesDown int64 `protobuf:"varint,4,opt,name=bytes_down,json=bytesDown,proto3" json:"bytes_down,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *Connection) Reset() { *x = Connection{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Connection) String() string { @@ -412,7 +409,7 @@ func (*Connection) ProtoMessage() {} func (x *Connection) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -459,23 +456,20 @@ func (x *Connection) GetBytesDown() int64 { // // Deprecated: Marked as deprecated in controller/servers/services/v1/server_coordination_service.proto. type SessionJobInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` Status SESSIONSTATUS `protobuf:"varint,2,opt,name=status,proto3,enum=controller.servers.services.v1.SESSIONSTATUS" json:"status,omitempty"` Connections []*Connection `protobuf:"bytes,3,rep,name=connections,proto3" json:"connections,omitempty"` ProcessingError SessionProcessingError `protobuf:"varint,4,opt,name=processing_error,json=processingError,proto3,enum=controller.servers.services.v1.SessionProcessingError" json:"processing_error,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionJobInfo) Reset() { *x = SessionJobInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionJobInfo) String() string { @@ -486,7 +480,7 @@ func (*SessionJobInfo) ProtoMessage() {} func (x *SessionJobInfo) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -533,22 +527,19 @@ func (x *SessionJobInfo) GetProcessingError() SessionProcessingError { // // Deprecated: Marked as deprecated in controller/servers/services/v1/server_coordination_service.proto. type MonitorSessionJobInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` Status SESSIONSTATUS `protobuf:"varint,2,opt,name=status,proto3,enum=controller.servers.services.v1.SESSIONSTATUS" json:"status,omitempty" class:"public"` // @gotags: `class:"public"` ProcessingError SessionProcessingError `protobuf:"varint,3,opt,name=processing_error,json=processingError,proto3,enum=controller.servers.services.v1.SessionProcessingError" json:"processing_error,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MonitorSessionJobInfo) Reset() { *x = MonitorSessionJobInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MonitorSessionJobInfo) String() string { @@ -559,7 +550,7 @@ func (*MonitorSessionJobInfo) ProtoMessage() {} func (x *MonitorSessionJobInfo) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -599,25 +590,22 @@ func (x *MonitorSessionJobInfo) GetProcessingError() SessionProcessingError { // // Deprecated: Marked as deprecated in controller/servers/services/v1/server_coordination_service.proto. type Job struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type JOBTYPE `protobuf:"varint,1,opt,name=type,proto3,enum=controller.servers.services.v1.JOBTYPE" json:"type,omitempty"` - // Types that are assignable to JobInfo: + state protoimpl.MessageState `protogen:"open.v1"` + Type JOBTYPE `protobuf:"varint,1,opt,name=type,proto3,enum=controller.servers.services.v1.JOBTYPE" json:"type,omitempty"` + // Types that are valid to be assigned to JobInfo: // // *Job_SessionInfo // *Job_MonitorSessionInfo - JobInfo isJob_JobInfo `protobuf_oneof:"job_info"` + JobInfo isJob_JobInfo `protobuf_oneof:"job_info"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Job) Reset() { *x = Job{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Job) String() string { @@ -628,7 +616,7 @@ func (*Job) ProtoMessage() {} func (x *Job) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -650,23 +638,27 @@ func (x *Job) GetType() JOBTYPE { return JOBTYPE_JOBTYPE_UNSPECIFIED } -func (m *Job) GetJobInfo() isJob_JobInfo { - if m != nil { - return m.JobInfo +func (x *Job) GetJobInfo() isJob_JobInfo { + if x != nil { + return x.JobInfo } return nil } func (x *Job) GetSessionInfo() *SessionJobInfo { - if x, ok := x.GetJobInfo().(*Job_SessionInfo); ok { - return x.SessionInfo + if x != nil { + if x, ok := x.JobInfo.(*Job_SessionInfo); ok { + return x.SessionInfo + } } return nil } func (x *Job) GetMonitorSessionInfo() *MonitorSessionJobInfo { - if x, ok := x.GetJobInfo().(*Job_MonitorSessionInfo); ok { - return x.MonitorSessionInfo + if x != nil { + if x, ok := x.JobInfo.(*Job_MonitorSessionInfo); ok { + return x.MonitorSessionInfo + } } return nil } @@ -692,20 +684,17 @@ func (*Job_MonitorSessionInfo) isJob_JobInfo() {} // // Deprecated: Marked as deprecated in controller/servers/services/v1/server_coordination_service.proto. type JobStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Job *Job `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` unknownFields protoimpl.UnknownFields - - Job *Job `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` + sizeCache protoimpl.SizeCache } func (x *JobStatus) Reset() { *x = JobStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JobStatus) String() string { @@ -716,7 +705,7 @@ func (*JobStatus) ProtoMessage() {} func (x *JobStatus) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -744,23 +733,20 @@ func (x *JobStatus) GetJob() *Job { // // Deprecated: Marked as deprecated in controller/servers/services/v1/server_coordination_service.proto. type UpstreamServer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // type specifies between controller or worker. Type UpstreamServer_TYPE `protobuf:"varint,10,opt,name=type,proto3,enum=controller.servers.services.v1.UpstreamServer_TYPE" json:"type,omitempty"` // Address of the daemon - Address string `protobuf:"bytes,20,opt,name=address,proto3" json:"address,omitempty" class:"public"` // @gotags: `class:"public"` + Address string `protobuf:"bytes,20,opt,name=address,proto3" json:"address,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamServer) Reset() { *x = UpstreamServer{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamServer) String() string { @@ -771,7 +757,7 @@ func (*UpstreamServer) ProtoMessage() {} func (x *UpstreamServer) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -804,10 +790,7 @@ func (x *UpstreamServer) GetAddress() string { // // Deprecated: Marked as deprecated in controller/servers/services/v1/server_coordination_service.proto. type StatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Jobs which this worker wants to report the status. Jobs []*JobStatus `protobuf:"bytes,20,rep,name=jobs,proto3" json:"jobs,omitempty"` // Whether to update tags from the Server block on this RPC. We only need to @@ -828,15 +811,15 @@ type StatusRequest struct { // list and their public ids in this list, once the requesting worker is aware // of the association, it should only populate this field. ConnectedWorkerPublicIds []string `protobuf:"bytes,55,rep,name=connected_worker_public_ids,json=connectedWorkerPublicIds,proto3" json:"connected_worker_public_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StatusRequest) Reset() { *x = StatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StatusRequest) String() string { @@ -847,7 +830,7 @@ func (*StatusRequest) ProtoMessage() {} func (x *StatusRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -901,21 +884,18 @@ func (x *StatusRequest) GetConnectedWorkerPublicIds() []string { // // Deprecated: Marked as deprecated in controller/servers/services/v1/server_coordination_service.proto. type JobChangeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Job *Job `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` + RequestType CHANGETYPE `protobuf:"varint,2,opt,name=request_type,json=requestType,proto3,enum=controller.servers.services.v1.CHANGETYPE" json:"request_type,omitempty"` unknownFields protoimpl.UnknownFields - - Job *Job `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` - RequestType CHANGETYPE `protobuf:"varint,2,opt,name=request_type,json=requestType,proto3,enum=controller.servers.services.v1.CHANGETYPE" json:"request_type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *JobChangeRequest) Reset() { *x = JobChangeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JobChangeRequest) String() string { @@ -926,7 +906,7 @@ func (*JobChangeRequest) ProtoMessage() {} func (x *JobChangeRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -956,25 +936,22 @@ func (x *JobChangeRequest) GetRequestType() CHANGETYPE { } type AuthorizedDownstreamWorkerList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // the key id of authorized workers which do not have a worker id known yet // to the requester. UnmappedWorkerKeyIdentifiers []string `protobuf:"bytes,1,rep,name=unmapped_worker_key_identifiers,json=unmappedWorkerKeyIdentifiers,proto3" json:"unmapped_worker_key_identifiers,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // the public id of workers that were reported as being connected and which // are known by the controller. WorkerPublicIds []string `protobuf:"bytes,2,rep,name=worker_public_ids,json=workerPublicIds,proto3" json:"worker_public_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthorizedDownstreamWorkerList) Reset() { *x = AuthorizedDownstreamWorkerList{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthorizedDownstreamWorkerList) String() string { @@ -985,7 +962,7 @@ func (*AuthorizedDownstreamWorkerList) ProtoMessage() {} func (x *AuthorizedDownstreamWorkerList) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1018,10 +995,7 @@ func (x *AuthorizedDownstreamWorkerList) GetWorkerPublicIds() []string { // // Deprecated: Marked as deprecated in controller/servers/services/v1/server_coordination_service.proto. type StatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // List of jobs and the expected state changes. For example, this will // include jobs witch change type of canceled for jobs which are active on a // worker but should be canceled. This could also contain a request to start a @@ -1036,15 +1010,15 @@ type StatusResponse struct { // Of the downstream workers in the request, these are the ones // which are authorized to remain connected. AuthorizedDownstreamWorkers *AuthorizedDownstreamWorkerList `protobuf:"bytes,51,opt,name=authorized_downstream_workers,json=authorizedDownstreamWorkers,proto3" json:"authorized_downstream_workers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StatusResponse) Reset() { *x = StatusResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StatusResponse) String() string { @@ -1055,7 +1029,7 @@ func (*StatusResponse) ProtoMessage() {} func (x *StatusResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1100,23 +1074,20 @@ func (x *StatusResponse) GetAuthorizedDownstreamWorkers() *AuthorizedDownstreamW // WorkerInfo contains information about workers for the HcpbWorkerResponse message type WorkerInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The id of the worker Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The public address of the worker - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkerInfo) Reset() { *x = WorkerInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WorkerInfo) String() string { @@ -1127,7 +1098,7 @@ func (*WorkerInfo) ProtoMessage() {} func (x *WorkerInfo) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1158,18 +1129,16 @@ func (x *WorkerInfo) GetAddress() string { // A HCP Boundary workers request. Empty for now. type ListHcpbWorkersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListHcpbWorkersRequest) Reset() { *x = ListHcpbWorkersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListHcpbWorkersRequest) String() string { @@ -1180,7 +1149,7 @@ func (*ListHcpbWorkersRequest) ProtoMessage() {} func (x *ListHcpbWorkersRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1197,20 +1166,17 @@ func (*ListHcpbWorkersRequest) Descriptor() ([]byte, []int) { // A response containing worker information type ListHcpbWorkersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Workers []*WorkerInfo `protobuf:"bytes,1,rep,name=workers,proto3" json:"workers,omitempty"` unknownFields protoimpl.UnknownFields - - Workers []*WorkerInfo `protobuf:"bytes,1,rep,name=workers,proto3" json:"workers,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListHcpbWorkersResponse) Reset() { *x = ListHcpbWorkersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListHcpbWorkersResponse) String() string { @@ -1221,7 +1187,7 @@ func (*ListHcpbWorkersResponse) ProtoMessage() {} func (x *ListHcpbWorkersResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1245,23 +1211,20 @@ func (x *ListHcpbWorkersResponse) GetWorkers() []*WorkerInfo { // SessionStatistics contains statistics about a session and its connections. type SessionStatistics struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Session ID holds the ID of the session which the statistics belong to. SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // Connections contains statistics about all the existing connections for the given session. - Connections []*Connection `protobuf:"bytes,2,rep,name=connections,proto3" json:"connections,omitempty"` + Connections []*Connection `protobuf:"bytes,2,rep,name=connections,proto3" json:"connections,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionStatistics) Reset() { *x = SessionStatistics{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionStatistics) String() string { @@ -1272,7 +1235,7 @@ func (*SessionStatistics) ProtoMessage() {} func (x *SessionStatistics) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1305,23 +1268,20 @@ func (x *SessionStatistics) GetConnections() []*Connection { // reports on information that is not important either to maintain existing // sessions or create new ones. type StatisticsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the worker making the request. WorkerId string `protobuf:"bytes,10,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The statistics of the sessions managed by this worker - Sessions []*SessionStatistics `protobuf:"bytes,20,rep,name=sessions,proto3" json:"sessions,omitempty"` + Sessions []*SessionStatistics `protobuf:"bytes,20,rep,name=sessions,proto3" json:"sessions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StatisticsRequest) Reset() { *x = StatisticsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StatisticsRequest) String() string { @@ -1332,7 +1292,7 @@ func (*StatisticsRequest) ProtoMessage() {} func (x *StatisticsRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1363,18 +1323,16 @@ func (x *StatisticsRequest) GetSessions() []*SessionStatistics { // StatisticsResponse contains a controller statistics response. Empty for now. type StatisticsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StatisticsResponse) Reset() { *x = StatisticsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StatisticsResponse) String() string { @@ -1385,7 +1343,7 @@ func (*StatisticsResponse) ProtoMessage() {} func (x *StatisticsResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1402,10 +1360,7 @@ func (*StatisticsResponse) Descriptor() ([]byte, []int) { // RoutingIinfoRequest is the request message for the RoutingInfo RPC. type RoutingInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The worker status of the worker making the request. WorkerStatus *servers.ServerWorkerStatus `protobuf:"bytes,1,opt,name=worker_status,json=workerStatus,proto3" json:"worker_status,omitempty"` // Whether the tags should be updated or not. @@ -1415,15 +1370,15 @@ type RoutingInfoRequest struct { ConnectedUnmappedWorkerKeyIdentifiers []string `protobuf:"bytes,3,rep,name=connected_unmapped_worker_key_identifiers,json=connectedUnmappedWorkerKeyIdentifiers,proto3" json:"connected_unmapped_worker_key_identifiers,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The worker public ids of all downstreams connected to this worker. ConnectedWorkerPublicIds []string `protobuf:"bytes,4,rep,name=connected_worker_public_ids,json=connectedWorkerPublicIds,proto3" json:"connected_worker_public_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RoutingInfoRequest) Reset() { *x = RoutingInfoRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RoutingInfoRequest) String() string { @@ -1434,7 +1389,7 @@ func (*RoutingInfoRequest) ProtoMessage() {} func (x *RoutingInfoRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1479,10 +1434,7 @@ func (x *RoutingInfoRequest) GetConnectedWorkerPublicIds() []string { // RoutingInfoResponse is the response message for the RoutingInfo RPC. type RoutingInfoResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The controller-assigned ID of the worker which made the request. WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The calculated upstream addresses for the controller cluster. @@ -1490,15 +1442,15 @@ type RoutingInfoResponse struct { // Of the downstream workers in the request, these are the ones // which are authorized to remain connected. AuthorizedDownstreamWorkers *AuthorizedDownstreamWorkerList `protobuf:"bytes,3,opt,name=authorized_downstream_workers,json=authorizedDownstreamWorkers,proto3" json:"authorized_downstream_workers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RoutingInfoResponse) Reset() { *x = RoutingInfoResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RoutingInfoResponse) String() string { @@ -1509,7 +1461,7 @@ func (*RoutingInfoResponse) ProtoMessage() {} func (x *RoutingInfoResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1547,10 +1499,7 @@ func (x *RoutingInfoResponse) GetAuthorizedDownstreamWorkers() *AuthorizedDownst // Session contains information about a worker managed session type Session struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the session. SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The status of the session. @@ -1558,16 +1507,16 @@ type Session struct { // Represents how the worker is processing the session. SessionType SessionType `protobuf:"varint,3,opt,name=session_type,json=sessionType,proto3,enum=controller.servers.services.v1.SessionType" json:"session_type,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // Connections contains information about the connections managed by the session - Connections []*Connection `protobuf:"bytes,4,rep,name=connections,proto3" json:"connections,omitempty"` + Connections []*Connection `protobuf:"bytes,4,rep,name=connections,proto3" json:"connections,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Session) Reset() { *x = Session{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Session) String() string { @@ -1578,7 +1527,7 @@ func (*Session) ProtoMessage() {} func (x *Session) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1625,24 +1574,21 @@ func (x *Session) GetConnections() []*Connection { // reports on currently managed sessions on the worker. This includes all ingressed // and recorded sessions. type SessionInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the worker making the request. WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The sessions which this worker wants to report the status of. // Includes both ingressed sessions and recorded sessions. - Sessions []*Session `protobuf:"bytes,2,rep,name=sessions,proto3" json:"sessions,omitempty"` + Sessions []*Session `protobuf:"bytes,2,rep,name=sessions,proto3" json:"sessions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionInfoRequest) Reset() { *x = SessionInfoRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionInfoRequest) String() string { @@ -1653,7 +1599,7 @@ func (*SessionInfoRequest) ProtoMessage() {} func (x *SessionInfoRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1686,21 +1632,18 @@ func (x *SessionInfoRequest) GetSessions() []*Session { // response indicates what, if any, changes should be made to the sessions. // This also includes any sessions the worker is monitoring but not managing directly. type SessionInfoResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // List of sessions that are no longer active and whose status should be updated. NonActiveSessions []*Session `protobuf:"bytes,1,rep,name=non_active_sessions,json=nonActiveSessions,proto3" json:"non_active_sessions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionInfoResponse) Reset() { *x = SessionInfoResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionInfoResponse) String() string { @@ -1711,7 +1654,7 @@ func (*SessionInfoResponse) ProtoMessage() {} func (x *SessionInfoResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2176,260 +2119,6 @@ func file_controller_servers_services_v1_server_coordination_service_proto_init( if File_controller_servers_services_v1_server_coordination_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Connection); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*SessionJobInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*MonitorSessionJobInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*Job); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*JobStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*UpstreamServer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*StatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*JobChangeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*AuthorizedDownstreamWorkerList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*StatusResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*WorkerInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*ListHcpbWorkersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*ListHcpbWorkersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*SessionStatistics); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*StatisticsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*StatisticsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*RoutingInfoRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*RoutingInfoResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*Session); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*SessionInfoRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*SessionInfoResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_servers_services_v1_server_coordination_service_proto_msgTypes[3].OneofWrappers = []any{ (*Job_SessionInfo)(nil), (*Job_MonitorSessionInfo)(nil), diff --git a/internal/gen/controller/servers/services/session_service.pb.go b/internal/gen/controller/servers/services/session_service.pb.go index a395307482..3b08074ae7 100644 --- a/internal/gen/controller/servers/services/session_service.pb.go +++ b/internal/gen/controller/servers/services/session_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/servers/services/v1/session_service.proto @@ -27,24 +27,21 @@ const ( ) type LookupSessionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The session ID from the client SessionId string `protobuf:"bytes,10,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The id of the requesting worker, used for filtering to ensure this worker // can handle this session - WorkerId string `protobuf:"bytes,20,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + WorkerId string `protobuf:"bytes,20,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LookupSessionRequest) Reset() { *x = LookupSessionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LookupSessionRequest) String() string { @@ -55,7 +52,7 @@ func (*LookupSessionRequest) ProtoMessage() {} func (x *LookupSessionRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -87,10 +84,7 @@ func (x *LookupSessionRequest) GetWorkerId() string { // LookupSessionResponse contains information necessary for a client to // establish a session. type LookupSessionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Authorization *targets.SessionAuthorizationData `protobuf:"bytes,10,opt,name=authorization,proto3" json:"authorization,omitempty"` TofuToken string `protobuf:"bytes,20,opt,name=tofu_token,json=tofuToken,proto3" json:"tofu_token,omitempty" class:"secret"` // @gotags: `class:"secret"` Version uint32 `protobuf:"varint,30,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` @@ -112,15 +106,15 @@ type LookupSessionResponse struct { // // Deprecated: Marked as deprecated in controller/servers/services/v1/session_service.proto. Pkcs8HostKeys [][]byte `protobuf:"bytes,140,rep,name=pkcs8_host_keys,json=pkcs8HostKeys,proto3" json:"pkcs8_host_keys,omitempty" class:"secret"` // @gotags: `class:"secret"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LookupSessionResponse) Reset() { *x = LookupSessionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LookupSessionResponse) String() string { @@ -131,7 +125,7 @@ func (*LookupSessionResponse) ProtoMessage() {} func (x *LookupSessionResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -247,23 +241,20 @@ func (x *LookupSessionResponse) GetPkcs8HostKeys() [][]byte { } type ActivateSessionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,10,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + TofuToken string `protobuf:"bytes,20,opt,name=tofu_token,json=tofuToken,proto3" json:"tofu_token,omitempty" class:"secret"` // @gotags: `class:"secret"` + Version uint32 `protobuf:"varint,30,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` + Status SESSIONSTATUS `protobuf:"varint,50,opt,name=status,proto3,enum=controller.servers.services.v1.SESSIONSTATUS" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - SessionId string `protobuf:"bytes,10,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - TofuToken string `protobuf:"bytes,20,opt,name=tofu_token,json=tofuToken,proto3" json:"tofu_token,omitempty" class:"secret"` // @gotags: `class:"secret"` - Version uint32 `protobuf:"varint,30,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` - Status SESSIONSTATUS `protobuf:"varint,50,opt,name=status,proto3,enum=controller.servers.services.v1.SESSIONSTATUS" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *ActivateSessionRequest) Reset() { *x = ActivateSessionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ActivateSessionRequest) String() string { @@ -274,7 +265,7 @@ func (*ActivateSessionRequest) ProtoMessage() {} func (x *ActivateSessionRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -318,20 +309,17 @@ func (x *ActivateSessionRequest) GetStatus() SESSIONSTATUS { } type ActivateSessionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status SESSIONSTATUS `protobuf:"varint,10,opt,name=status,proto3,enum=controller.servers.services.v1.SESSIONSTATUS" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Status SESSIONSTATUS `protobuf:"varint,10,opt,name=status,proto3,enum=controller.servers.services.v1.SESSIONSTATUS" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *ActivateSessionResponse) Reset() { *x = ActivateSessionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ActivateSessionResponse) String() string { @@ -342,7 +330,7 @@ func (*ActivateSessionResponse) ProtoMessage() {} func (x *ActivateSessionResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -365,20 +353,17 @@ func (x *ActivateSessionResponse) GetStatus() SESSIONSTATUS { } type CancelSessionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,10,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - SessionId string `protobuf:"bytes,10,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *CancelSessionRequest) Reset() { *x = CancelSessionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CancelSessionRequest) String() string { @@ -389,7 +374,7 @@ func (*CancelSessionRequest) ProtoMessage() {} func (x *CancelSessionRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -412,20 +397,17 @@ func (x *CancelSessionRequest) GetSessionId() string { } type CancelSessionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status SESSIONSTATUS `protobuf:"varint,10,opt,name=status,proto3,enum=controller.servers.services.v1.SESSIONSTATUS" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Status SESSIONSTATUS `protobuf:"varint,10,opt,name=status,proto3,enum=controller.servers.services.v1.SESSIONSTATUS" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *CancelSessionResponse) Reset() { *x = CancelSessionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CancelSessionResponse) String() string { @@ -436,7 +418,7 @@ func (*CancelSessionResponse) ProtoMessage() {} func (x *CancelSessionResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -459,21 +441,18 @@ func (x *CancelSessionResponse) GetStatus() SESSIONSTATUS { } type AuthorizeConnectionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,10,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + WorkerId string `protobuf:"bytes,20,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - SessionId string `protobuf:"bytes,10,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - WorkerId string `protobuf:"bytes,20,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *AuthorizeConnectionRequest) Reset() { *x = AuthorizeConnectionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthorizeConnectionRequest) String() string { @@ -484,7 +463,7 @@ func (*AuthorizeConnectionRequest) ProtoMessage() {} func (x *AuthorizeConnectionRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -514,27 +493,24 @@ func (x *AuthorizeConnectionRequest) GetWorkerId() string { } type AuthorizeConnectionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ConnectionId string `protobuf:"bytes,10,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - Status CONNECTIONSTATUS `protobuf:"varint,20,opt,name=status,proto3,enum=controller.servers.services.v1.CONNECTIONSTATUS" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - ConnectionsLeft int32 `protobuf:"varint,30,opt,name=connections_left,json=connectionsLeft,proto3" json:"connections_left,omitempty" class:"public"` // @gotags: `class:"public"` + state protoimpl.MessageState `protogen:"open.v1"` + ConnectionId string `protobuf:"bytes,10,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + Status CONNECTIONSTATUS `protobuf:"varint,20,opt,name=status,proto3,enum=controller.servers.services.v1.CONNECTIONSTATUS" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + ConnectionsLeft int32 `protobuf:"varint,30,opt,name=connections_left,json=connectionsLeft,proto3" json:"connections_left,omitempty" class:"public"` // @gotags: `class:"public"` // protocol_context contains information specific to the protocol being // proxied. This is not needed to be set for tcp sessions. ProtocolContext *anypb.Any `protobuf:"bytes,40,opt,name=protocol_context,json=protocolContext,proto3" json:"protocol_context,omitempty" class:"public"` // @gotags: `class:"public"` // route specifies the workers the connection will be sent through - Route []string `protobuf:"bytes,50,rep,name=route,proto3" json:"route,omitempty"` + Route []string `protobuf:"bytes,50,rep,name=route,proto3" json:"route,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthorizeConnectionResponse) Reset() { *x = AuthorizeConnectionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthorizeConnectionResponse) String() string { @@ -545,7 +521,7 @@ func (*AuthorizeConnectionResponse) ProtoMessage() {} func (x *AuthorizeConnectionResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -596,28 +572,25 @@ func (x *AuthorizeConnectionResponse) GetRoute() []string { } type ConnectConnectionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ConnectionId string `protobuf:"bytes,10,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - ClientTcpAddress string `protobuf:"bytes,20,opt,name=client_tcp_address,json=clientTcpAddress,proto3" json:"client_tcp_address,omitempty" class:"public"` // @gotags: `class:"public"` - ClientTcpPort uint32 `protobuf:"varint,30,opt,name=client_tcp_port,json=clientTcpPort,proto3" json:"client_tcp_port,omitempty" class:"public"` // @gotags: `class:"public"` - EndpointTcpAddress string `protobuf:"bytes,40,opt,name=endpoint_tcp_address,json=endpointTcpAddress,proto3" json:"endpoint_tcp_address,omitempty" class:"public"` // @gotags: `class:"public"` - EndpointTcpPort uint32 `protobuf:"varint,50,opt,name=endpoint_tcp_port,json=endpointTcpPort,proto3" json:"endpoint_tcp_port,omitempty" class:"public"` // @gotags: `class:"public"` - Type string `protobuf:"bytes,60,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + state protoimpl.MessageState `protogen:"open.v1"` + ConnectionId string `protobuf:"bytes,10,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + ClientTcpAddress string `protobuf:"bytes,20,opt,name=client_tcp_address,json=clientTcpAddress,proto3" json:"client_tcp_address,omitempty" class:"public"` // @gotags: `class:"public"` + ClientTcpPort uint32 `protobuf:"varint,30,opt,name=client_tcp_port,json=clientTcpPort,proto3" json:"client_tcp_port,omitempty" class:"public"` // @gotags: `class:"public"` + EndpointTcpAddress string `protobuf:"bytes,40,opt,name=endpoint_tcp_address,json=endpointTcpAddress,proto3" json:"endpoint_tcp_address,omitempty" class:"public"` // @gotags: `class:"public"` + EndpointTcpPort uint32 `protobuf:"varint,50,opt,name=endpoint_tcp_port,json=endpointTcpPort,proto3" json:"endpoint_tcp_port,omitempty" class:"public"` // @gotags: `class:"public"` + Type string `protobuf:"bytes,60,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // user_client_ip is the user's client ip for the connection as determined by // the inbound http request handler - UserClientIp string `protobuf:"bytes,70,opt,name=user_client_ip,json=userClientIp,proto3" json:"user_client_ip,omitempty" class:"public"` // @gotags: `class:"public" + UserClientIp string `protobuf:"bytes,70,opt,name=user_client_ip,json=userClientIp,proto3" json:"user_client_ip,omitempty" class:"public"` // @gotags: `class:"public" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConnectConnectionRequest) Reset() { *x = ConnectConnectionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConnectConnectionRequest) String() string { @@ -628,7 +601,7 @@ func (*ConnectConnectionRequest) ProtoMessage() {} func (x *ConnectConnectionRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -693,20 +666,17 @@ func (x *ConnectConnectionRequest) GetUserClientIp() string { } type ConnectConnectionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status CONNECTIONSTATUS `protobuf:"varint,10,opt,name=status,proto3,enum=controller.servers.services.v1.CONNECTIONSTATUS" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - Status CONNECTIONSTATUS `protobuf:"varint,10,opt,name=status,proto3,enum=controller.servers.services.v1.CONNECTIONSTATUS" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *ConnectConnectionResponse) Reset() { *x = ConnectConnectionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConnectConnectionResponse) String() string { @@ -717,7 +687,7 @@ func (*ConnectConnectionResponse) ProtoMessage() {} func (x *ConnectConnectionResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -740,23 +710,20 @@ func (x *ConnectConnectionResponse) GetStatus() CONNECTIONSTATUS { } type CloseConnectionRequestData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ConnectionId string `protobuf:"bytes,10,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + BytesUp int64 `protobuf:"varint,20,opt,name=bytes_up,json=bytesUp,proto3" json:"bytes_up,omitempty" class:"public"` // @gotags: `class:"public"` + BytesDown int64 `protobuf:"varint,30,opt,name=bytes_down,json=bytesDown,proto3" json:"bytes_down,omitempty" class:"public"` // @gotags: `class:"public"` + Reason string `protobuf:"bytes,40,opt,name=reason,proto3" json:"reason,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - ConnectionId string `protobuf:"bytes,10,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - BytesUp int64 `protobuf:"varint,20,opt,name=bytes_up,json=bytesUp,proto3" json:"bytes_up,omitempty" class:"public"` // @gotags: `class:"public"` - BytesDown int64 `protobuf:"varint,30,opt,name=bytes_down,json=bytesDown,proto3" json:"bytes_down,omitempty" class:"public"` // @gotags: `class:"public"` - Reason string `protobuf:"bytes,40,opt,name=reason,proto3" json:"reason,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *CloseConnectionRequestData) Reset() { *x = CloseConnectionRequestData{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CloseConnectionRequestData) String() string { @@ -767,7 +734,7 @@ func (*CloseConnectionRequestData) ProtoMessage() {} func (x *CloseConnectionRequestData) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -811,20 +778,17 @@ func (x *CloseConnectionRequestData) GetReason() string { } type CloseConnectionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` CloseRequestData []*CloseConnectionRequestData `protobuf:"bytes,10,rep,name=close_request_data,json=closeRequestData,proto3" json:"close_request_data,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CloseConnectionRequest) Reset() { *x = CloseConnectionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CloseConnectionRequest) String() string { @@ -835,7 +799,7 @@ func (*CloseConnectionRequest) ProtoMessage() {} func (x *CloseConnectionRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -858,21 +822,18 @@ func (x *CloseConnectionRequest) GetCloseRequestData() []*CloseConnectionRequest } type CloseConnectionResponseData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ConnectionId string `protobuf:"bytes,10,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty"` + Status CONNECTIONSTATUS `protobuf:"varint,20,opt,name=status,proto3,enum=controller.servers.services.v1.CONNECTIONSTATUS" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` unknownFields protoimpl.UnknownFields - - ConnectionId string `protobuf:"bytes,10,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty"` - Status CONNECTIONSTATUS `protobuf:"varint,20,opt,name=status,proto3,enum=controller.servers.services.v1.CONNECTIONSTATUS" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + sizeCache protoimpl.SizeCache } func (x *CloseConnectionResponseData) Reset() { *x = CloseConnectionResponseData{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CloseConnectionResponseData) String() string { @@ -883,7 +844,7 @@ func (*CloseConnectionResponseData) ProtoMessage() {} func (x *CloseConnectionResponseData) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -913,20 +874,17 @@ func (x *CloseConnectionResponseData) GetStatus() CONNECTIONSTATUS { } type CloseConnectionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` CloseResponseData []*CloseConnectionResponseData `protobuf:"bytes,10,rep,name=close_response_data,json=closeResponseData,proto3" json:"close_response_data,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CloseConnectionResponse) Reset() { *x = CloseConnectionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CloseConnectionResponse) String() string { @@ -937,7 +895,7 @@ func (*CloseConnectionResponse) ProtoMessage() {} func (x *CloseConnectionResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_session_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1275,176 +1233,6 @@ func file_controller_servers_services_v1_session_service_proto_init() { } file_controller_servers_services_v1_credential_proto_init() file_controller_servers_services_v1_server_coordination_service_proto_init() - if !protoimpl.UnsafeEnabled { - file_controller_servers_services_v1_session_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*LookupSessionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_session_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*LookupSessionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_session_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ActivateSessionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_session_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ActivateSessionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_session_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CancelSessionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_session_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CancelSessionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_session_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*AuthorizeConnectionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_session_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*AuthorizeConnectionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_session_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*ConnectConnectionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_session_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*ConnectConnectionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_session_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*CloseConnectionRequestData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_session_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*CloseConnectionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_session_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*CloseConnectionResponseData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_session_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*CloseConnectionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/controller/servers/services/upstream_message_service.pb.go b/internal/gen/controller/servers/services/upstream_message_service.pb.go index e6645d9070..fcf5633455 100644 --- a/internal/gen/controller/servers/services/upstream_message_service.pb.go +++ b/internal/gen/controller/servers/services/upstream_message_service.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/servers/services/v1/upstream_message_service.proto @@ -85,10 +85,7 @@ func (MsgType) EnumDescriptor() ([]byte, []int) { } type UpstreamMessageRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // the node credentials key id for the worker originated the request OriginatingWorkerKeyId string `protobuf:"bytes,10,opt,name=originating_worker_key_id,json=originatingWorkerKeyId,proto3" json:"originating_worker_key_id,omitempty" class:"public"` // @gotags: `class:"public" // the type of the encrypted_message which must have a @@ -97,20 +94,20 @@ type UpstreamMessageRequest struct { // message will either be encrypted (ct) or plaintext (pt) based on its // msg_type // - // Types that are assignable to Message: + // Types that are valid to be assigned to Message: // // *UpstreamMessageRequest_Ct // *UpstreamMessageRequest_Pt - Message isUpstreamMessageRequest_Message `protobuf_oneof:"message"` + Message isUpstreamMessageRequest_Message `protobuf_oneof:"message"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamMessageRequest) Reset() { *x = UpstreamMessageRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamMessageRequest) String() string { @@ -121,7 +118,7 @@ func (*UpstreamMessageRequest) ProtoMessage() {} func (x *UpstreamMessageRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -150,23 +147,27 @@ func (x *UpstreamMessageRequest) GetMsgType() MsgType { return MsgType_MSG_TYPE_UNSPECIFIED } -func (m *UpstreamMessageRequest) GetMessage() isUpstreamMessageRequest_Message { - if m != nil { - return m.Message +func (x *UpstreamMessageRequest) GetMessage() isUpstreamMessageRequest_Message { + if x != nil { + return x.Message } return nil } func (x *UpstreamMessageRequest) GetCt() []byte { - if x, ok := x.GetMessage().(*UpstreamMessageRequest_Ct); ok { - return x.Ct + if x != nil { + if x, ok := x.Message.(*UpstreamMessageRequest_Ct); ok { + return x.Ct + } } return nil } func (x *UpstreamMessageRequest) GetPt() []byte { - if x, ok := x.GetMessage().(*UpstreamMessageRequest_Pt); ok { - return x.Pt + if x != nil { + if x, ok := x.Message.(*UpstreamMessageRequest_Pt); ok { + return x.Pt + } } return nil } @@ -191,29 +192,26 @@ func (*UpstreamMessageRequest_Ct) isUpstreamMessageRequest_Message() {} func (*UpstreamMessageRequest_Pt) isUpstreamMessageRequest_Message() {} type UpstreamMessageResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // the encryped response message. This message is encrypted with the // originating worker's types.NodeCredentials. // message will either be encrypted (ct) or plaintext (pt) based on its // msg_type // - // Types that are assignable to Message: + // Types that are valid to be assigned to Message: // // *UpstreamMessageResponse_Ct // *UpstreamMessageResponse_Pt - Message isUpstreamMessageResponse_Message `protobuf_oneof:"message"` + Message isUpstreamMessageResponse_Message `protobuf_oneof:"message"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpstreamMessageResponse) Reset() { *x = UpstreamMessageResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpstreamMessageResponse) String() string { @@ -224,7 +222,7 @@ func (*UpstreamMessageResponse) ProtoMessage() {} func (x *UpstreamMessageResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -239,23 +237,27 @@ func (*UpstreamMessageResponse) Descriptor() ([]byte, []int) { return file_controller_servers_services_v1_upstream_message_service_proto_rawDescGZIP(), []int{1} } -func (m *UpstreamMessageResponse) GetMessage() isUpstreamMessageResponse_Message { - if m != nil { - return m.Message +func (x *UpstreamMessageResponse) GetMessage() isUpstreamMessageResponse_Message { + if x != nil { + return x.Message } return nil } func (x *UpstreamMessageResponse) GetCt() []byte { - if x, ok := x.GetMessage().(*UpstreamMessageResponse_Ct); ok { - return x.Ct + if x != nil { + if x, ok := x.Message.(*UpstreamMessageResponse_Ct); ok { + return x.Ct + } } return nil } func (x *UpstreamMessageResponse) GetPt() []byte { - if x, ok := x.GetMessage().(*UpstreamMessageResponse_Pt); ok { - return x.Pt + if x != nil { + if x, ok := x.Message.(*UpstreamMessageResponse_Pt); ok { + return x.Pt + } } return nil } @@ -280,20 +282,17 @@ func (*UpstreamMessageResponse_Ct) isUpstreamMessageResponse_Message() {} func (*UpstreamMessageResponse_Pt) isUpstreamMessageResponse_Message() {} type EchoUpstreamMessageRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Msg string `protobuf:"bytes,10,opt,name=msg,proto3" json:"msg,omitempty" class:"secret"` // @gotags: `class:"secret" unknownFields protoimpl.UnknownFields - - Msg string `protobuf:"bytes,10,opt,name=msg,proto3" json:"msg,omitempty" class:"secret"` // @gotags: `class:"secret" + sizeCache protoimpl.SizeCache } func (x *EchoUpstreamMessageRequest) Reset() { *x = EchoUpstreamMessageRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EchoUpstreamMessageRequest) String() string { @@ -304,7 +303,7 @@ func (*EchoUpstreamMessageRequest) ProtoMessage() {} func (x *EchoUpstreamMessageRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -327,20 +326,17 @@ func (x *EchoUpstreamMessageRequest) GetMsg() string { } type EchoUpstreamMessageResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Msg string `protobuf:"bytes,10,opt,name=msg,proto3" json:"msg,omitempty" class:"secret"` // @gotags: `class:"secret" unknownFields protoimpl.UnknownFields - - Msg string `protobuf:"bytes,10,opt,name=msg,proto3" json:"msg,omitempty" class:"secret"` // @gotags: `class:"secret" + sizeCache protoimpl.SizeCache } func (x *EchoUpstreamMessageResponse) Reset() { *x = EchoUpstreamMessageResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EchoUpstreamMessageResponse) String() string { @@ -351,7 +347,7 @@ func (*EchoUpstreamMessageResponse) ProtoMessage() {} func (x *EchoUpstreamMessageResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -475,56 +471,6 @@ func file_controller_servers_services_v1_upstream_message_service_proto_init() { if File_controller_servers_services_v1_upstream_message_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*UpstreamMessageRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*UpstreamMessageResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*EchoUpstreamMessageRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*EchoUpstreamMessageResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_servers_services_v1_upstream_message_service_proto_msgTypes[0].OneofWrappers = []any{ (*UpstreamMessageRequest_Ct)(nil), (*UpstreamMessageRequest_Pt)(nil), diff --git a/internal/gen/controller/tokens/tokens.pb.go b/internal/gen/controller/tokens/tokens.pb.go index 2cffa229db..6625445109 100644 --- a/internal/gen/controller/tokens/tokens.pb.go +++ b/internal/gen/controller/tokens/tokens.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/tokens/v1/tokens.proto @@ -24,21 +24,18 @@ const ( ) type S1TokenInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,10,opt,name=token,proto3" json:"token,omitempty"` + Confounder []byte `protobuf:"bytes,20,opt,name=confounder,proto3" json:"confounder,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,10,opt,name=token,proto3" json:"token,omitempty"` - Confounder []byte `protobuf:"bytes,20,opt,name=confounder,proto3" json:"confounder,omitempty"` + sizeCache protoimpl.SizeCache } func (x *S1TokenInfo) Reset() { *x = S1TokenInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_tokens_v1_tokens_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_tokens_v1_tokens_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *S1TokenInfo) String() string { @@ -49,7 +46,7 @@ func (*S1TokenInfo) ProtoMessage() {} func (x *S1TokenInfo) ProtoReflect() protoreflect.Message { mi := &file_controller_tokens_v1_tokens_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -125,20 +122,6 @@ func file_controller_tokens_v1_tokens_proto_init() { if File_controller_tokens_v1_tokens_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_tokens_v1_tokens_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*S1TokenInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/errors/errors.pb.go b/internal/gen/errors/errors.pb.go index 7f1e3aae86..35f428b8b2 100644 --- a/internal/gen/errors/errors.pb.go +++ b/internal/gen/errors/errors.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: errors/v1/errors.proto @@ -26,10 +26,7 @@ const ( // Err is a protobuf representation of a domain error type Err struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // code is the error's code, which can be used to get the error's // errorCodeInfo, which contains the error's Kind and Message Code uint32 `protobuf:"varint,10,opt,name=code,proto3" json:"code,omitempty"` @@ -39,21 +36,21 @@ type Err struct { Op string `protobuf:"bytes,30,opt,name=op,proto3" json:"op,omitempty"` // wrapped represents an optionally wrapped error // - // Types that are assignable to Wrapped: + // Types that are valid to be assigned to Wrapped: // // *Err_Err // *Err_StdError // *Err_None - Wrapped isErr_Wrapped `protobuf_oneof:"wrapped"` + Wrapped isErr_Wrapped `protobuf_oneof:"wrapped"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Err) Reset() { *x = Err{} - if protoimpl.UnsafeEnabled { - mi := &file_errors_v1_errors_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_errors_v1_errors_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Err) String() string { @@ -64,7 +61,7 @@ func (*Err) ProtoMessage() {} func (x *Err) ProtoReflect() protoreflect.Message { mi := &file_errors_v1_errors_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -100,30 +97,36 @@ func (x *Err) GetOp() string { return "" } -func (m *Err) GetWrapped() isErr_Wrapped { - if m != nil { - return m.Wrapped +func (x *Err) GetWrapped() isErr_Wrapped { + if x != nil { + return x.Wrapped } return nil } func (x *Err) GetErr() *Err { - if x, ok := x.GetWrapped().(*Err_Err); ok { - return x.Err + if x != nil { + if x, ok := x.Wrapped.(*Err_Err); ok { + return x.Err + } } return nil } func (x *Err) GetStdError() string { - if x, ok := x.GetWrapped().(*Err_StdError); ok { - return x.StdError + if x != nil { + if x, ok := x.Wrapped.(*Err_StdError); ok { + return x.StdError + } } return "" } func (x *Err) GetNone() bool { - if x, ok := x.GetWrapped().(*Err_None); ok { - return x.None + if x != nil { + if x, ok := x.Wrapped.(*Err_None); ok { + return x.None + } } return false } @@ -155,23 +158,20 @@ func (*Err_None) isErr_Wrapped() {} // ApiError is a protobuf representation of a controller ApiError type ApiError struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // api_error is the controller ApiError ApiError *api.Error `protobuf:"bytes,10,opt,name=api_error,json=apiError,proto3" json:"api_error,omitempty"` // status is the status code assocatiated with the api error - Status int32 `protobuf:"varint,20,opt,name=status,proto3" json:"status,omitempty"` + Status int32 `protobuf:"varint,20,opt,name=status,proto3" json:"status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApiError) Reset() { *x = ApiError{} - if protoimpl.UnsafeEnabled { - mi := &file_errors_v1_errors_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_errors_v1_errors_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ApiError) String() string { @@ -182,7 +182,7 @@ func (*ApiError) ProtoMessage() {} func (x *ApiError) ProtoReflect() protoreflect.Message { mi := &file_errors_v1_errors_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -274,32 +274,6 @@ func file_errors_v1_errors_proto_init() { if File_errors_v1_errors_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_errors_v1_errors_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Err); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_errors_v1_errors_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*ApiError); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_errors_v1_errors_proto_msgTypes[0].OneofWrappers = []any{ (*Err_Err)(nil), (*Err_StdError)(nil), diff --git a/internal/gen/ops/services/health_service.pb.go b/internal/gen/ops/services/health_service.pb.go index 86131edc39..30440fad92 100644 --- a/internal/gen/ops/services/health_service.pb.go +++ b/internal/gen/ops/services/health_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: ops/services/v1/health_service.proto @@ -26,21 +26,18 @@ const ( ) type GetHealthRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Experimental: This field may change or be removed without notice. - WorkerInfo bool `protobuf:"varint,1,opt,name=worker_info,proto3" json:"worker_info,omitempty"` + WorkerInfo bool `protobuf:"varint,1,opt,name=worker_info,proto3" json:"worker_info,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetHealthRequest) Reset() { *x = GetHealthRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_ops_services_v1_health_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ops_services_v1_health_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetHealthRequest) String() string { @@ -51,7 +48,7 @@ func (*GetHealthRequest) ProtoMessage() {} func (x *GetHealthRequest) ProtoReflect() protoreflect.Message { mi := &file_ops_services_v1_health_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -74,21 +71,18 @@ func (x *GetHealthRequest) GetWorkerInfo() bool { } type GetHealthResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Experimental: This field may change or be removed without notice. WorkerProcessInfo *health.HealthInfo `protobuf:"bytes,1,opt,name=worker_process_info,proto3" json:"worker_process_info,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetHealthResponse) Reset() { *x = GetHealthResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_ops_services_v1_health_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_ops_services_v1_health_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetHealthResponse) String() string { @@ -99,7 +93,7 @@ func (*GetHealthResponse) ProtoMessage() {} func (x *GetHealthResponse) ProtoReflect() protoreflect.Message { mi := &file_ops_services_v1_health_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -190,32 +184,6 @@ func file_ops_services_v1_health_service_proto_init() { if File_ops_services_v1_health_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_ops_services_v1_health_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetHealthRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_ops_services_v1_health_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetHealthResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/testing/attribute/attribute.pb.go b/internal/gen/testing/attribute/attribute.pb.go index b8e5d33237..bdaaf3b16e 100644 --- a/internal/gen/testing/attribute/attribute.pb.go +++ b/internal/gen/testing/attribute/attribute.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: testing/attribute/v1/attribute.proto @@ -29,27 +29,24 @@ const ( ) type TestResource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - OtherId string `protobuf:"bytes,3,opt,name=other_id,json=otherId,proto3" json:"other_id,omitempty"` - // Types that are assignable to Attrs: + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + OtherId string `protobuf:"bytes,3,opt,name=other_id,json=otherId,proto3" json:"other_id,omitempty"` + // Types that are valid to be assigned to Attrs: // // *TestResource_Attributes // *TestResource_SubResourceAttributes - Attrs isTestResource_Attrs `protobuf_oneof:"attrs"` + Attrs isTestResource_Attrs `protobuf_oneof:"attrs"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestResource) Reset() { *x = TestResource{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestResource) String() string { @@ -60,7 +57,7 @@ func (*TestResource) ProtoMessage() {} func (x *TestResource) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -96,23 +93,27 @@ func (x *TestResource) GetOtherId() string { return "" } -func (m *TestResource) GetAttrs() isTestResource_Attrs { - if m != nil { - return m.Attrs +func (x *TestResource) GetAttrs() isTestResource_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *TestResource) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*TestResource_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*TestResource_Attributes); ok { + return x.Attributes + } } return nil } func (x *TestResource) GetSubResourceAttributes() *TestSubResourceAttributes { - if x, ok := x.GetAttrs().(*TestResource_SubResourceAttributes); ok { - return x.SubResourceAttributes + if x != nil { + if x, ok := x.Attrs.(*TestResource_SubResourceAttributes); ok { + return x.SubResourceAttributes + } } return nil } @@ -134,20 +135,17 @@ func (*TestResource_Attributes) isTestResource_Attrs() {} func (*TestResource_SubResourceAttributes) isTestResource_Attrs() {} type TestSubResourceAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestSubResourceAttributes) Reset() { *x = TestSubResourceAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestSubResourceAttributes) String() string { @@ -158,7 +156,7 @@ func (*TestSubResourceAttributes) ProtoMessage() {} func (x *TestSubResourceAttributes) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -181,21 +179,18 @@ func (x *TestSubResourceAttributes) GetName() string { } type TestNoAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestNoAttributes) Reset() { *x = TestNoAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestNoAttributes) String() string { @@ -206,7 +201,7 @@ func (*TestNoAttributes) ProtoMessage() {} func (x *TestNoAttributes) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -236,22 +231,19 @@ func (x *TestNoAttributes) GetType() string { } type TestNoOneOf struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Attributes *structpb.Struct `protobuf:"bytes,10,opt,name=attributes,proto3" json:"attributes,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Attributes *structpb.Struct `protobuf:"bytes,10,opt,name=attributes,proto3" json:"attributes,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestNoOneOf) Reset() { *x = TestNoOneOf{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestNoOneOf) String() string { @@ -262,7 +254,7 @@ func (*TestNoOneOf) ProtoMessage() {} func (x *TestNoOneOf) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -299,26 +291,23 @@ func (x *TestNoOneOf) GetAttributes() *structpb.Struct { } type TestCustomTransformation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SomeRandomId string `protobuf:"bytes,1,opt,name=some_random_id,json=someRandomId,proto3" json:"some_random_id,omitempty"` - SecondaryId string `protobuf:"bytes,2,opt,name=secondary_id,json=secondaryId,proto3" json:"secondary_id,omitempty"` - // Types that are assignable to Attrs: + state protoimpl.MessageState `protogen:"open.v1"` + SomeRandomId string `protobuf:"bytes,1,opt,name=some_random_id,json=someRandomId,proto3" json:"some_random_id,omitempty"` + SecondaryId string `protobuf:"bytes,2,opt,name=secondary_id,json=secondaryId,proto3" json:"secondary_id,omitempty"` + // Types that are valid to be assigned to Attrs: // // *TestCustomTransformation_Attributes // *TestCustomTransformation_SubResourceAttributes - Attrs isTestCustomTransformation_Attrs `protobuf_oneof:"attrs"` + Attrs isTestCustomTransformation_Attrs `protobuf_oneof:"attrs"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestCustomTransformation) Reset() { *x = TestCustomTransformation{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestCustomTransformation) String() string { @@ -329,7 +318,7 @@ func (*TestCustomTransformation) ProtoMessage() {} func (x *TestCustomTransformation) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -358,23 +347,27 @@ func (x *TestCustomTransformation) GetSecondaryId() string { return "" } -func (m *TestCustomTransformation) GetAttrs() isTestCustomTransformation_Attrs { - if m != nil { - return m.Attrs +func (x *TestCustomTransformation) GetAttrs() isTestCustomTransformation_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *TestCustomTransformation) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*TestCustomTransformation_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*TestCustomTransformation_Attributes); ok { + return x.Attributes + } } return nil } func (x *TestCustomTransformation) GetSubResourceAttributes() *TestSubResourceAttributes { - if x, ok := x.GetAttrs().(*TestCustomTransformation_SubResourceAttributes); ok { - return x.SubResourceAttributes + if x != nil { + if x, ok := x.Attrs.(*TestCustomTransformation_SubResourceAttributes); ok { + return x.SubResourceAttributes + } } return nil } @@ -396,18 +389,16 @@ func (*TestCustomTransformation_Attributes) isTestCustomTransformation_Attrs() { func (*TestCustomTransformation_SubResourceAttributes) isTestCustomTransformation_Attrs() {} type TestListResourceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestListResourceRequest) Reset() { *x = TestListResourceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestListResourceRequest) String() string { @@ -418,7 +409,7 @@ func (*TestListResourceRequest) ProtoMessage() {} func (x *TestListResourceRequest) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -434,20 +425,17 @@ func (*TestListResourceRequest) Descriptor() ([]byte, []int) { } type TestListResourceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Items []*TestResource `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` unknownFields protoimpl.UnknownFields - - Items []*TestResource `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestListResourceResponse) Reset() { *x = TestListResourceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestListResourceResponse) String() string { @@ -458,7 +446,7 @@ func (*TestListResourceResponse) ProtoMessage() {} func (x *TestListResourceResponse) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -481,20 +469,17 @@ func (x *TestListResourceResponse) GetItems() []*TestResource { } type TestGetResourceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestGetResourceRequest) Reset() { *x = TestGetResourceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestGetResourceRequest) String() string { @@ -505,7 +490,7 @@ func (*TestGetResourceRequest) ProtoMessage() {} func (x *TestGetResourceRequest) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -528,20 +513,17 @@ func (x *TestGetResourceRequest) GetId() string { } type TestGetResourceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *TestResource `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *TestResource `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestGetResourceResponse) Reset() { *x = TestGetResourceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestGetResourceResponse) String() string { @@ -552,7 +534,7 @@ func (*TestGetResourceResponse) ProtoMessage() {} func (x *TestGetResourceResponse) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -575,20 +557,17 @@ func (x *TestGetResourceResponse) GetItem() *TestResource { } type TestCreateResourceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *TestResource `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *TestResource `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestCreateResourceRequest) Reset() { *x = TestCreateResourceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestCreateResourceRequest) String() string { @@ -599,7 +578,7 @@ func (*TestCreateResourceRequest) ProtoMessage() {} func (x *TestCreateResourceRequest) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -622,20 +601,17 @@ func (x *TestCreateResourceRequest) GetItem() *TestResource { } type TestCreateResourceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *TestResource `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *TestResource `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestCreateResourceResponse) Reset() { *x = TestCreateResourceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestCreateResourceResponse) String() string { @@ -646,7 +622,7 @@ func (*TestCreateResourceResponse) ProtoMessage() {} func (x *TestCreateResourceResponse) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -669,22 +645,19 @@ func (x *TestCreateResourceResponse) GetItem() *TestResource { } type TestUpdateResourceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Item *TestResource `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Item *TestResource `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,proto3" json:"update_mask,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestUpdateResourceRequest) Reset() { *x = TestUpdateResourceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestUpdateResourceRequest) String() string { @@ -695,7 +668,7 @@ func (*TestUpdateResourceRequest) ProtoMessage() {} func (x *TestUpdateResourceRequest) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -732,20 +705,17 @@ func (x *TestUpdateResourceRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type TestUpdateResourceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *TestResource `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *TestResource `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestUpdateResourceResponse) Reset() { *x = TestUpdateResourceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestUpdateResourceResponse) String() string { @@ -756,7 +726,7 @@ func (*TestUpdateResourceResponse) ProtoMessage() {} func (x *TestUpdateResourceResponse) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -779,20 +749,17 @@ func (x *TestUpdateResourceResponse) GetItem() *TestResource { } type TestRequestNoItem struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestRequestNoItem) Reset() { *x = TestRequestNoItem{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestRequestNoItem) String() string { @@ -803,7 +770,7 @@ func (*TestRequestNoItem) ProtoMessage() {} func (x *TestRequestNoItem) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -826,20 +793,17 @@ func (x *TestRequestNoItem) GetName() string { } type TestRequestItemNotMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item string `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item string `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestRequestItemNotMessage) Reset() { *x = TestRequestItemNotMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestRequestItemNotMessage) String() string { @@ -850,7 +814,7 @@ func (*TestRequestItemNotMessage) ProtoMessage() {} func (x *TestRequestItemNotMessage) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -873,20 +837,17 @@ func (x *TestRequestItemNotMessage) GetItem() string { } type TestItemNoType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestItemNoType) Reset() { *x = TestItemNoType{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestItemNoType) String() string { @@ -897,7 +858,7 @@ func (*TestItemNoType) ProtoMessage() {} func (x *TestItemNoType) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -920,20 +881,17 @@ func (x *TestItemNoType) GetId() string { } type TestRequestItemNoType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *TestItemNoType `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *TestItemNoType `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestRequestItemNoType) Reset() { *x = TestRequestItemNoType{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestRequestItemNoType) String() string { @@ -944,7 +902,7 @@ func (*TestRequestItemNoType) ProtoMessage() {} func (x *TestRequestItemNoType) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -967,25 +925,22 @@ func (x *TestRequestItemNoType) GetItem() *TestItemNoType { } type TestNoItemAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Types that are assignable to Attrs: + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Types that are valid to be assigned to Attrs: // // *TestNoItemAttributes_Attributes // *TestNoItemAttributes_SubResourceAttributes - Attrs isTestNoItemAttributes_Attrs `protobuf_oneof:"attrs"` + Attrs isTestNoItemAttributes_Attrs `protobuf_oneof:"attrs"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestNoItemAttributes) Reset() { *x = TestNoItemAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestNoItemAttributes) String() string { @@ -996,7 +951,7 @@ func (*TestNoItemAttributes) ProtoMessage() {} func (x *TestNoItemAttributes) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1018,23 +973,27 @@ func (x *TestNoItemAttributes) GetId() string { return "" } -func (m *TestNoItemAttributes) GetAttrs() isTestNoItemAttributes_Attrs { - if m != nil { - return m.Attrs +func (x *TestNoItemAttributes) GetAttrs() isTestNoItemAttributes_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *TestNoItemAttributes) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*TestNoItemAttributes_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*TestNoItemAttributes_Attributes); ok { + return x.Attributes + } } return nil } func (x *TestNoItemAttributes) GetSubResourceAttributes() *TestSubResourceAttributes { - if x, ok := x.GetAttrs().(*TestNoItemAttributes_SubResourceAttributes); ok { - return x.SubResourceAttributes + if x != nil { + if x, ok := x.Attrs.(*TestNoItemAttributes_SubResourceAttributes); ok { + return x.SubResourceAttributes + } } return nil } @@ -1056,20 +1015,17 @@ func (*TestNoItemAttributes_Attributes) isTestNoItemAttributes_Attrs() {} func (*TestNoItemAttributes_SubResourceAttributes) isTestNoItemAttributes_Attrs() {} type TestCreateNoOneOfRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *TestNoOneOf `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *TestNoOneOf `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestCreateNoOneOfRequest) Reset() { *x = TestCreateNoOneOfRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestCreateNoOneOfRequest) String() string { @@ -1080,7 +1036,7 @@ func (*TestCreateNoOneOfRequest) ProtoMessage() {} func (x *TestCreateNoOneOfRequest) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1103,21 +1059,18 @@ func (x *TestCreateNoOneOfRequest) GetItem() *TestNoOneOf { } type TestUpdateNoOneOfRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Item *TestNoOneOf `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Item *TestNoOneOf `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestUpdateNoOneOfRequest) Reset() { *x = TestUpdateNoOneOfRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestUpdateNoOneOfRequest) String() string { @@ -1128,7 +1081,7 @@ func (*TestUpdateNoOneOfRequest) ProtoMessage() {} func (x *TestUpdateNoOneOfRequest) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1158,20 +1111,17 @@ func (x *TestUpdateNoOneOfRequest) GetItem() *TestNoOneOf { } type TestResponseNoItem struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestResponseNoItem) Reset() { *x = TestResponseNoItem{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestResponseNoItem) String() string { @@ -1182,7 +1132,7 @@ func (*TestResponseNoItem) ProtoMessage() {} func (x *TestResponseNoItem) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1205,20 +1155,17 @@ func (x *TestResponseNoItem) GetName() string { } type TestResponseItemNotMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item string `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item string `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestResponseItemNotMessage) Reset() { *x = TestResponseItemNotMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestResponseItemNotMessage) String() string { @@ -1229,7 +1176,7 @@ func (*TestResponseItemNotMessage) ProtoMessage() {} func (x *TestResponseItemNotMessage) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1252,20 +1199,17 @@ func (x *TestResponseItemNotMessage) GetItem() string { } type TestResponseItemNoType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *TestItemNoType `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *TestItemNoType `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestResponseItemNoType) Reset() { *x = TestResponseItemNoType{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestResponseItemNoType) String() string { @@ -1276,7 +1220,7 @@ func (*TestResponseItemNoType) ProtoMessage() {} func (x *TestResponseItemNoType) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1299,20 +1243,17 @@ func (x *TestResponseItemNoType) GetItem() *TestItemNoType { } type TestCreateNoOneOfResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *TestNoOneOf `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *TestNoOneOf `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestCreateNoOneOfResponse) Reset() { *x = TestCreateNoOneOfResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestCreateNoOneOfResponse) String() string { @@ -1323,7 +1264,7 @@ func (*TestCreateNoOneOfResponse) ProtoMessage() {} func (x *TestCreateNoOneOfResponse) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1346,20 +1287,17 @@ func (x *TestCreateNoOneOfResponse) GetItem() *TestNoOneOf { } type TestUpdateNoOneOfResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item *TestNoOneOf `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item *TestNoOneOf `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestUpdateNoOneOfResponse) Reset() { *x = TestUpdateNoOneOfResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_attribute_v1_attribute_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_attribute_v1_attribute_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestUpdateNoOneOfResponse) String() string { @@ -1370,7 +1308,7 @@ func (*TestUpdateNoOneOfResponse) ProtoMessage() {} func (x *TestUpdateNoOneOfResponse) ProtoReflect() protoreflect.Message { mi := &file_testing_attribute_v1_attribute_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1697,308 +1635,6 @@ func file_testing_attribute_v1_attribute_proto_init() { if File_testing_attribute_v1_attribute_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_testing_attribute_v1_attribute_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*TestResource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*TestSubResourceAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*TestNoAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*TestNoOneOf); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*TestCustomTransformation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*TestListResourceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*TestListResourceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*TestGetResourceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*TestGetResourceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*TestCreateResourceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*TestCreateResourceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*TestUpdateResourceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*TestUpdateResourceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*TestRequestNoItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*TestRequestItemNotMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*TestItemNoType); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*TestRequestItemNoType); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*TestNoItemAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*TestCreateNoOneOfRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*TestUpdateNoOneOfRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*TestResponseNoItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*TestResponseItemNotMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*TestResponseItemNoType); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*TestCreateNoOneOfResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_attribute_v1_attribute_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*TestUpdateNoOneOfResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_testing_attribute_v1_attribute_proto_msgTypes[0].OneofWrappers = []any{ (*TestResource_Attributes)(nil), (*TestResource_SubResourceAttributes)(nil), diff --git a/internal/gen/testing/event/event.pb.go b/internal/gen/testing/event/event.pb.go index 3cc62bde49..ab77274a82 100644 --- a/internal/gen/testing/event/event.pb.go +++ b/internal/gen/testing/event/event.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: testing/event/v1/event.proto @@ -27,10 +27,7 @@ const ( ) type TestAuthenticateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the Auth Method in the system that should be used for authentication. // @inject_tag: `class:"public"` AuthMethodId string `protobuf:"bytes,1,opt,name=auth_method_id,proto3" json:"auth_method_id,omitempty" class:"public"` @@ -48,16 +45,16 @@ type TestAuthenticateRequest struct { Attributes *structpb.Struct `protobuf:"bytes,4,opt,name=attributes,proto3" json:"attributes,omitempty"` // The command to perform. // @inject_tag: `class:"public"` - Command string `protobuf:"bytes,5,opt,name=command,proto3" json:"command,omitempty" class:"public"` + Command string `protobuf:"bytes,5,opt,name=command,proto3" json:"command,omitempty" class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestAuthenticateRequest) Reset() { *x = TestAuthenticateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_event_v1_event_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_event_v1_event_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestAuthenticateRequest) String() string { @@ -68,7 +65,7 @@ func (*TestAuthenticateRequest) ProtoMessage() {} func (x *TestAuthenticateRequest) ProtoReflect() protoreflect.Message { mi := &file_testing_event_v1_event_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -120,24 +117,21 @@ func (x *TestAuthenticateRequest) GetCommand() string { } type TestAuthenticateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Valid keys and values depend on the type of Auth Method as well as the command. Attributes *structpb.Struct `protobuf:"bytes,4,opt,name=attributes,proto3" json:"attributes,omitempty"` // The command that was performed. // @inject_tag: `class:"public"` - Command string `protobuf:"bytes,5,opt,name=command,proto3" json:"command,omitempty" class:"public"` + Command string `protobuf:"bytes,5,opt,name=command,proto3" json:"command,omitempty" class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestAuthenticateResponse) Reset() { *x = TestAuthenticateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_event_v1_event_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_event_v1_event_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestAuthenticateResponse) String() string { @@ -148,7 +142,7 @@ func (*TestAuthenticateResponse) ProtoMessage() {} func (x *TestAuthenticateResponse) ProtoReflect() protoreflect.Message { mi := &file_testing_event_v1_event_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -270,32 +264,6 @@ func file_testing_event_v1_event_proto_init() { if File_testing_event_v1_event_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_testing_event_v1_event_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*TestAuthenticateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_event_v1_event_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*TestAuthenticateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/testing/interceptor/greeter.pb.go b/internal/gen/testing/interceptor/greeter.pb.go index 9030f04074..433b8de9b1 100644 --- a/internal/gen/testing/interceptor/greeter.pb.go +++ b/internal/gen/testing/interceptor/greeter.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: testing/interceptor/v1/greeter.proto @@ -25,20 +25,17 @@ const ( // The request message containing the user's name. type SayHelloRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SayHelloRequest) Reset() { *x = SayHelloRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_interceptor_v1_greeter_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_interceptor_v1_greeter_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SayHelloRequest) String() string { @@ -49,7 +46,7 @@ func (*SayHelloRequest) ProtoMessage() {} func (x *SayHelloRequest) ProtoReflect() protoreflect.Message { mi := &file_testing_interceptor_v1_greeter_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -73,20 +70,17 @@ func (x *SayHelloRequest) GetName() string { // The response message containing the greetings type SayHelloResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` unknownFields protoimpl.UnknownFields - - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SayHelloResponse) Reset() { *x = SayHelloResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_interceptor_v1_greeter_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_interceptor_v1_greeter_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SayHelloResponse) String() string { @@ -97,7 +91,7 @@ func (*SayHelloResponse) ProtoMessage() {} func (x *SayHelloResponse) ProtoReflect() protoreflect.Message { mi := &file_testing_interceptor_v1_greeter_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -178,32 +172,6 @@ func file_testing_interceptor_v1_greeter_proto_init() { if File_testing_interceptor_v1_greeter_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_testing_interceptor_v1_greeter_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*SayHelloRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_interceptor_v1_greeter_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*SayHelloResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/testing/protooptions/service.pb.go b/internal/gen/testing/protooptions/service.pb.go index 0dd005b3d3..c592d81a7f 100644 --- a/internal/gen/testing/protooptions/service.pb.go +++ b/internal/gen/testing/protooptions/service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: testing/options/v1/service.proto @@ -26,20 +26,17 @@ const ( // The request message. type TestMethodRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestMethodRequest) Reset() { *x = TestMethodRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_options_v1_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_options_v1_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestMethodRequest) String() string { @@ -50,7 +47,7 @@ func (*TestMethodRequest) ProtoMessage() {} func (x *TestMethodRequest) ProtoReflect() protoreflect.Message { mi := &file_testing_options_v1_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -74,20 +71,17 @@ func (x *TestMethodRequest) GetId() string { // The response message. type TestMethodResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Item string `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields - - Item string `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestMethodResponse) Reset() { *x = TestMethodResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_testing_options_v1_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_testing_options_v1_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestMethodResponse) String() string { @@ -98,7 +92,7 @@ func (*TestMethodResponse) ProtoMessage() {} func (x *TestMethodResponse) ProtoReflect() protoreflect.Message { mi := &file_testing_options_v1_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -183,32 +177,6 @@ func file_testing_options_v1_service_proto_init() { if File_testing_options_v1_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_testing_options_v1_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*TestMethodRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_testing_options_v1_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*TestMethodResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/worker/health/health_service.pb.go b/internal/gen/worker/health/health_service.pb.go index e398614858..fad183583b 100644 --- a/internal/gen/worker/health/health_service.pb.go +++ b/internal/gen/worker/health/health_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: worker/health/v1/health_service.proto @@ -25,23 +25,20 @@ const ( ) type HealthInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` ActiveSessionCount *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=active_session_count,json=active_connection_count,proto3" json:"active_session_count,omitempty"` - SessionConnections map[string]uint32 `protobuf:"bytes,3,rep,name=session_connections,proto3" json:"session_connections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + SessionConnections map[string]uint32 `protobuf:"bytes,3,rep,name=session_connections,proto3" json:"session_connections,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` UpstreamConnectionState string `protobuf:"bytes,4,opt,name=upstream_connection_state,proto3" json:"upstream_connection_state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HealthInfo) Reset() { *x = HealthInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_health_v1_health_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_health_v1_health_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HealthInfo) String() string { @@ -52,7 +49,7 @@ func (*HealthInfo) ProtoMessage() {} func (x *HealthInfo) ProtoReflect() protoreflect.Message { mi := &file_worker_health_v1_health_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -166,20 +163,6 @@ func file_worker_health_v1_health_service_proto_init() { if File_worker_health_v1_health_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_worker_health_v1_health_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*HealthInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/gen/worker/servers/services/host_service.pb.go b/internal/gen/worker/servers/services/host_service.pb.go index d68a19c972..73e953fa53 100644 --- a/internal/gen/worker/servers/services/host_service.pb.go +++ b/internal/gen/worker/servers/services/host_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: worker/servers/services/v1/host_service.proto @@ -29,23 +29,20 @@ const ( ) type NormalizeCatalogDataRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The incoming attributes in the create or update request. Attributes *structpb.Struct `protobuf:"bytes,100,opt,name=attributes,proto3" json:"attributes,omitempty"` // The plugin information for this request. - Plugin *plugins.PluginInfo `protobuf:"bytes,110,opt,name=plugin,proto3" json:"plugin,omitempty"` + Plugin *plugins.PluginInfo `protobuf:"bytes,110,opt,name=plugin,proto3" json:"plugin,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NormalizeCatalogDataRequest) Reset() { *x = NormalizeCatalogDataRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NormalizeCatalogDataRequest) String() string { @@ -56,7 +53,7 @@ func (*NormalizeCatalogDataRequest) ProtoMessage() {} func (x *NormalizeCatalogDataRequest) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -86,22 +83,19 @@ func (x *NormalizeCatalogDataRequest) GetPlugin() *plugins.PluginInfo { } type NormalizeCatalogDataResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Outgoing attributes. If nil, no changes will be recorded. If non-nil, the // values here will be used in place of the original set of attributes. - Attributes *structpb.Struct `protobuf:"bytes,100,opt,name=attributes,proto3" json:"attributes,omitempty"` + Attributes *structpb.Struct `protobuf:"bytes,100,opt,name=attributes,proto3" json:"attributes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NormalizeCatalogDataResponse) Reset() { *x = NormalizeCatalogDataResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NormalizeCatalogDataResponse) String() string { @@ -112,7 +106,7 @@ func (*NormalizeCatalogDataResponse) ProtoMessage() {} func (x *NormalizeCatalogDataResponse) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -135,23 +129,20 @@ func (x *NormalizeCatalogDataResponse) GetAttributes() *structpb.Struct { } type OnCreateCatalogRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The host catalog to create. The request may contain optional // secret data to help authenticate the request against a cloud // API. - Catalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=catalog,proto3" json:"catalog,omitempty"` + Catalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=catalog,proto3" json:"catalog,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnCreateCatalogRequest) Reset() { *x = OnCreateCatalogRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnCreateCatalogRequest) String() string { @@ -162,7 +153,7 @@ func (*OnCreateCatalogRequest) ProtoMessage() {} func (x *OnCreateCatalogRequest) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -185,24 +176,21 @@ func (x *OnCreateCatalogRequest) GetCatalog() *hostcatalogs.HostCatalog { } type OnCreateCatalogResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Secret data to persist encrypted within Boundary. This should be used to // store authentication data and other necessary configuration to be used in // later hooks and calls. Returning an error from the call will cause this // data to not be persisted. If this is nil, nothing is written. - Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,10,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,10,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnCreateCatalogResponse) Reset() { *x = OnCreateCatalogResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnCreateCatalogResponse) String() string { @@ -213,7 +201,7 @@ func (*OnCreateCatalogResponse) ProtoMessage() {} func (x *OnCreateCatalogResponse) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -236,10 +224,7 @@ func (x *OnCreateCatalogResponse) GetPersisted() *plugin.HostCatalogPersisted { } type OnUpdateCatalogRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The existing state of the catalog. CurrentCatalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=current_catalog,json=currentCatalog,proto3" json:"current_catalog,omitempty"` // The requested new state of the catalog. This field may contain optional @@ -247,16 +232,16 @@ type OnUpdateCatalogRequest struct { // contained within the persisted state. NewCatalog *hostcatalogs.HostCatalog `protobuf:"bytes,20,opt,name=new_catalog,json=newCatalog,proto3" json:"new_catalog,omitempty"` // The existing persisted secret data. - Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnUpdateCatalogRequest) Reset() { *x = OnUpdateCatalogRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnUpdateCatalogRequest) String() string { @@ -267,7 +252,7 @@ func (*OnUpdateCatalogRequest) ProtoMessage() {} func (x *OnUpdateCatalogRequest) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -304,24 +289,21 @@ func (x *OnUpdateCatalogRequest) GetPersisted() *plugin.HostCatalogPersisted { } type OnUpdateCatalogResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The updated secret data to persist encrypted within Boundary. If an error // is returned, the update of the persisted data is aborted. If this is nil, // no changes are written. To remove all values, simply return an allocated // but empty map. - Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,10,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,10,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnUpdateCatalogResponse) Reset() { *x = OnUpdateCatalogResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnUpdateCatalogResponse) String() string { @@ -332,7 +314,7 @@ func (*OnUpdateCatalogResponse) ProtoMessage() {} func (x *OnUpdateCatalogResponse) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -355,25 +337,22 @@ func (x *OnUpdateCatalogResponse) GetPersisted() *plugin.HostCatalogPersisted { } type OnDeleteCatalogRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The existing state of the catalog to delete. Catalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=catalog,proto3" json:"catalog,omitempty"` // The host sets contained in the catalog being deleted. Sets []*hostsets.HostSet `protobuf:"bytes,20,rep,name=sets,proto3" json:"sets,omitempty"` // The existing persisted secret data. - Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnDeleteCatalogRequest) Reset() { *x = OnDeleteCatalogRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnDeleteCatalogRequest) String() string { @@ -384,7 +363,7 @@ func (*OnDeleteCatalogRequest) ProtoMessage() {} func (x *OnDeleteCatalogRequest) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -421,18 +400,16 @@ func (x *OnDeleteCatalogRequest) GetPersisted() *plugin.HostCatalogPersisted { } type OnDeleteCatalogResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnDeleteCatalogResponse) Reset() { *x = OnDeleteCatalogResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnDeleteCatalogResponse) String() string { @@ -443,7 +420,7 @@ func (*OnDeleteCatalogResponse) ProtoMessage() {} func (x *OnDeleteCatalogResponse) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -459,23 +436,20 @@ func (*OnDeleteCatalogResponse) Descriptor() ([]byte, []int) { } type NormalizeSetDataRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The incoming attributes in the create or update request. Attributes *structpb.Struct `protobuf:"bytes,100,opt,name=attributes,proto3" json:"attributes,omitempty"` // The plugin information for this request. - Plugin *plugins.PluginInfo `protobuf:"bytes,110,opt,name=plugin,proto3" json:"plugin,omitempty"` + Plugin *plugins.PluginInfo `protobuf:"bytes,110,opt,name=plugin,proto3" json:"plugin,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NormalizeSetDataRequest) Reset() { *x = NormalizeSetDataRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NormalizeSetDataRequest) String() string { @@ -486,7 +460,7 @@ func (*NormalizeSetDataRequest) ProtoMessage() {} func (x *NormalizeSetDataRequest) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -516,22 +490,19 @@ func (x *NormalizeSetDataRequest) GetPlugin() *plugins.PluginInfo { } type NormalizeSetDataResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Outgoing attributes. If nil, no changes will be recorded. If non-nil, the // values here will be used in place of the original set of attributes. - Attributes *structpb.Struct `protobuf:"bytes,100,opt,name=attributes,proto3" json:"attributes,omitempty"` + Attributes *structpb.Struct `protobuf:"bytes,100,opt,name=attributes,proto3" json:"attributes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NormalizeSetDataResponse) Reset() { *x = NormalizeSetDataResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NormalizeSetDataResponse) String() string { @@ -542,7 +513,7 @@ func (*NormalizeSetDataResponse) ProtoMessage() {} func (x *NormalizeSetDataResponse) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -565,25 +536,22 @@ func (x *NormalizeSetDataResponse) GetAttributes() *structpb.Struct { } type OnCreateSetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The host catalog that the set belongs to. Catalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=catalog,proto3" json:"catalog,omitempty"` // The host set to create. Set *hostsets.HostSet `protobuf:"bytes,20,opt,name=set,proto3" json:"set,omitempty"` // The persisted data for the host catalog that the set belongs to. - Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnCreateSetRequest) Reset() { *x = OnCreateSetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnCreateSetRequest) String() string { @@ -594,7 +562,7 @@ func (*OnCreateSetRequest) ProtoMessage() {} func (x *OnCreateSetRequest) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -631,18 +599,16 @@ func (x *OnCreateSetRequest) GetPersisted() *plugin.HostCatalogPersisted { } type OnCreateSetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnCreateSetResponse) Reset() { *x = OnCreateSetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnCreateSetResponse) String() string { @@ -653,7 +619,7 @@ func (*OnCreateSetResponse) ProtoMessage() {} func (x *OnCreateSetResponse) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -669,10 +635,7 @@ func (*OnCreateSetResponse) Descriptor() ([]byte, []int) { } type OnUpdateSetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The host catalog that the set belongs to. Catalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=catalog,proto3" json:"catalog,omitempty"` // The existing state of the host set. @@ -680,16 +643,16 @@ type OnUpdateSetRequest struct { // The requested new state of the host set. NewSet *hostsets.HostSet `protobuf:"bytes,30,opt,name=new_set,json=newSet,proto3" json:"new_set,omitempty"` // The persisted data for the host catalog that the set belongs to. - Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,40,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,40,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnUpdateSetRequest) Reset() { *x = OnUpdateSetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnUpdateSetRequest) String() string { @@ -700,7 +663,7 @@ func (*OnUpdateSetRequest) ProtoMessage() {} func (x *OnUpdateSetRequest) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -744,18 +707,16 @@ func (x *OnUpdateSetRequest) GetPersisted() *plugin.HostCatalogPersisted { } type OnUpdateSetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnUpdateSetResponse) Reset() { *x = OnUpdateSetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnUpdateSetResponse) String() string { @@ -766,7 +727,7 @@ func (*OnUpdateSetResponse) ProtoMessage() {} func (x *OnUpdateSetResponse) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -782,25 +743,22 @@ func (*OnUpdateSetResponse) Descriptor() ([]byte, []int) { } type OnDeleteSetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The host catalog that the set belongs to. Catalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=catalog,proto3" json:"catalog,omitempty"` // The host set to delete. Set *hostsets.HostSet `protobuf:"bytes,20,opt,name=set,proto3" json:"set,omitempty"` // The persisted data for the host catalog that the set belongs to. - Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnDeleteSetRequest) Reset() { *x = OnDeleteSetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnDeleteSetRequest) String() string { @@ -811,7 +769,7 @@ func (*OnDeleteSetRequest) ProtoMessage() {} func (x *OnDeleteSetRequest) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -848,18 +806,16 @@ func (x *OnDeleteSetRequest) GetPersisted() *plugin.HostCatalogPersisted { } type OnDeleteSetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnDeleteSetResponse) Reset() { *x = OnDeleteSetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnDeleteSetResponse) String() string { @@ -870,7 +826,7 @@ func (*OnDeleteSetResponse) ProtoMessage() {} func (x *OnDeleteSetResponse) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -886,26 +842,23 @@ func (*OnDeleteSetResponse) Descriptor() ([]byte, []int) { } type ListHostsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The host catalog that the supplied host sets belong to. Catalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=catalog,proto3" json:"catalog,omitempty"` // The host sets to look up hosts for. Sets []*hostsets.HostSet `protobuf:"bytes,20,rep,name=sets,proto3" json:"sets,omitempty"` // The persisted data for the host catalog that the supplied host // sets belong to. - Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *plugin.HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListHostsRequest) Reset() { *x = ListHostsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListHostsRequest) String() string { @@ -916,7 +869,7 @@ func (*ListHostsRequest) ProtoMessage() {} func (x *ListHostsRequest) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -953,21 +906,18 @@ func (x *ListHostsRequest) GetPersisted() *plugin.HostCatalogPersisted { } type ListHostsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The hosts to return. - Hosts []*plugin.ListHostsResponseHost `protobuf:"bytes,10,rep,name=hosts,proto3" json:"hosts,omitempty"` + Hosts []*plugin.ListHostsResponseHost `protobuf:"bytes,10,rep,name=hosts,proto3" json:"hosts,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListHostsResponse) Reset() { *x = ListHostsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListHostsResponse) String() string { @@ -978,7 +928,7 @@ func (*ListHostsResponse) ProtoMessage() {} func (x *ListHostsResponse) ProtoReflect() protoreflect.Message { mi := &file_worker_servers_services_v1_host_service_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1353,224 +1303,6 @@ func file_worker_servers_services_v1_host_service_proto_init() { if File_worker_servers_services_v1_host_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_worker_servers_services_v1_host_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*NormalizeCatalogDataRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*NormalizeCatalogDataResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*OnCreateCatalogRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*OnCreateCatalogResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*OnUpdateCatalogRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*OnUpdateCatalogResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*OnDeleteCatalogRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*OnDeleteCatalogResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*NormalizeSetDataRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*NormalizeSetDataResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*OnCreateSetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*OnCreateSetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*OnUpdateSetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*OnUpdateSetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*OnDeleteSetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*OnDeleteSetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*ListHostsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_servers_services_v1_host_service_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*ListHostsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/host/plugin/store/host.pb.go b/internal/host/plugin/store/host.pb.go index ab18ddbe1d..3cf4052657 100644 --- a/internal/host/plugin/store/host.pb.go +++ b/internal/host/plugin/store/host.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/host/plugin/store/v1/host.proto @@ -29,10 +29,7 @@ const ( ) type HostCatalog struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -67,16 +64,16 @@ type HostCatalog struct { Attributes []byte `protobuf:"bytes,10,opt,name=attributes,proto3" json:"attributes,omitempty" gorm:"not_null"` // worker_filter is optional. // @inject_tag: `gorm:"default:null"` - WorkerFilter string `protobuf:"bytes,11,opt,name=worker_filter,json=workerFilter,proto3" json:"worker_filter,omitempty" gorm:"default:null"` + WorkerFilter string `protobuf:"bytes,11,opt,name=worker_filter,json=workerFilter,proto3" json:"worker_filter,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostCatalog) Reset() { *x = HostCatalog{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HostCatalog) String() string { @@ -87,7 +84,7 @@ func (*HostCatalog) ProtoMessage() {} func (x *HostCatalog) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -180,10 +177,7 @@ func (x *HostCatalog) GetWorkerFilter() string { } type HostSet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -222,15 +216,15 @@ type HostSet struct { // Sync interval is a value representing a duration in seconds // @inject_tag: `gorm:"default:null"` SyncIntervalSeconds int32 `protobuf:"varint,12,opt,name=sync_interval_seconds,json=syncIntervalSeconds,proto3" json:"sync_interval_seconds,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostSet) Reset() { *x = HostSet{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HostSet) String() string { @@ -241,7 +235,7 @@ func (*HostSet) ProtoMessage() {} func (x *HostSet) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -341,10 +335,7 @@ func (x *HostSet) GetSyncIntervalSeconds() int32 { } type HostCatalogSecret struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // catalog_id is the public id of the catalog containing this secret. // @inject_tag: `gorm:"primary_key"` CatalogId string `protobuf:"bytes,1,opt,name=catalog_id,json=catalogId,proto3" json:"catalog_id,omitempty" gorm:"primary_key"` @@ -364,16 +355,16 @@ type HostCatalogSecret struct { // The key_id of the kms database key used for encrypting this entry. // It must be set. // @inject_tag: `gorm:"not_null"` - KeyId string `protobuf:"bytes,6,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + KeyId string `protobuf:"bytes,6,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostCatalogSecret) Reset() { *x = HostCatalogSecret{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HostCatalogSecret) String() string { @@ -384,7 +375,7 @@ func (*HostCatalogSecret) ProtoMessage() {} func (x *HostCatalogSecret) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -445,10 +436,7 @@ func (x *HostCatalogSecret) GetKeyId() string { // // invalid and fall back to the plugin provided data. type Host struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -485,16 +473,16 @@ type Host struct { // dns_names are the dns names associated with this host and will // be persisted in the db through the HostAddress message. // @inject_tag: `gorm:"-"` - DnsNames []string `protobuf:"bytes,10,rep,name=dns_names,json=dnsNames,proto3" json:"dns_names,omitempty" gorm:"-"` + DnsNames []string `protobuf:"bytes,10,rep,name=dns_names,json=dnsNames,proto3" json:"dns_names,omitempty" gorm:"-"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Host) Reset() { *x = Host{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Host) String() string { @@ -505,7 +493,7 @@ func (*Host) ProtoMessage() {} func (x *Host) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -598,25 +586,22 @@ func (x *Host) GetDnsNames() []string { } type HostSetMember struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` HostId string `protobuf:"bytes,1,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty" gorm:"primary_key"` // @inject_tag: `gorm:"primary_key"` SetId string `protobuf:"bytes,2,opt,name=set_id,json=setId,proto3" json:"set_id,omitempty" gorm:"primary_key"` // @inject_tag: `gorm:"default:null"` - CatalogId string `protobuf:"bytes,3,opt,name=catalog_id,json=catalogId,proto3" json:"catalog_id,omitempty" gorm:"default:null"` + CatalogId string `protobuf:"bytes,3,opt,name=catalog_id,json=catalogId,proto3" json:"catalog_id,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostSetMember) Reset() { *x = HostSetMember{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HostSetMember) String() string { @@ -627,7 +612,7 @@ func (*HostSetMember) ProtoMessage() {} func (x *HostSetMember) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -855,68 +840,6 @@ func file_controller_storage_host_plugin_store_v1_host_proto_init() { if File_controller_storage_host_plugin_store_v1_host_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*HostCatalog); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*HostSet); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*HostCatalogSecret); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*Host); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_host_plugin_store_v1_host_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*HostSetMember); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/host/static/store/static.pb.go b/internal/host/static/store/static.pb.go index 98c9f5634d..e34cab91ad 100644 --- a/internal/host/static/store/static.pb.go +++ b/internal/host/static/store/static.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/host/static/store/v1/static.proto @@ -29,10 +29,7 @@ const ( ) type HostCatalog struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_is is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -53,16 +50,16 @@ type HostCatalog struct { ProjectId string `protobuf:"bytes,6,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty" gorm:"not_null"` // version allows optimistic locking of the resource // @inject_tag: `gorm:"default:null"` - Version uint32 `protobuf:"varint,7,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + Version uint32 `protobuf:"varint,7,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostCatalog) Reset() { *x = HostCatalog{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HostCatalog) String() string { @@ -73,7 +70,7 @@ func (*HostCatalog) ProtoMessage() {} func (x *HostCatalog) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -138,10 +135,7 @@ func (x *HostCatalog) GetVersion() uint32 { } type Host struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_is is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -168,16 +162,16 @@ type Host struct { Address string `protobuf:"bytes,7,opt,name=address,proto3" json:"address,omitempty" gorm:"default:null"` // version allows optimistic locking of the resource // @inject_tag: `gorm:"default:null"` - Version uint32 `protobuf:"varint,8,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + Version uint32 `protobuf:"varint,8,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Host) Reset() { *x = Host{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Host) String() string { @@ -188,7 +182,7 @@ func (*Host) ProtoMessage() {} func (x *Host) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -260,10 +254,7 @@ func (x *Host) GetVersion() uint32 { } type HostSet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_is is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -286,16 +277,16 @@ type HostSet struct { CatalogId string `protobuf:"bytes,6,opt,name=catalog_id,json=catalogId,proto3" json:"catalog_id,omitempty" gorm:"not_null"` // version allows optimistic locking of the resource // @inject_tag: `gorm:"default:null"` - Version uint32 `protobuf:"varint,7,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + Version uint32 `protobuf:"varint,7,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostSet) Reset() { *x = HostSet{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HostSet) String() string { @@ -306,7 +297,7 @@ func (*HostSet) ProtoMessage() {} func (x *HostSet) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -371,25 +362,22 @@ func (x *HostSet) GetVersion() uint32 { } type HostSetMember struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` HostId string `protobuf:"bytes,1,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty" gorm:"primary_key"` // @inject_tag: `gorm:"primary_key"` SetId string `protobuf:"bytes,2,opt,name=set_id,json=setId,proto3" json:"set_id,omitempty" gorm:"primary_key"` // @inject_tag: `gorm:"default:null"` - CatalogId string `protobuf:"bytes,3,opt,name=catalog_id,json=catalogId,proto3" json:"catalog_id,omitempty" gorm:"default:null"` + CatalogId string `protobuf:"bytes,3,opt,name=catalog_id,json=catalogId,proto3" json:"catalog_id,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostSetMember) Reset() { *x = HostSetMember{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HostSetMember) String() string { @@ -400,7 +388,7 @@ func (*HostSetMember) ProtoMessage() {} func (x *HostSetMember) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -440,21 +428,18 @@ func (x *HostSetMember) GetCatalogId() string { // here for the purpose of identifying the mask maps which are on the top level // api set resource but aren't present in the static host set storage. type UnimplementedSetFields struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PreferredEndpoints []string `protobuf:"bytes,11,rep,name=preferred_endpoints,json=preferredEndpoints,proto3" json:"preferred_endpoints,omitempty"` - SyncIntervalSeconds int32 `protobuf:"varint,22,opt,name=sync_interval_seconds,json=syncIntervalSeconds,proto3" json:"sync_interval_seconds,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PreferredEndpoints []string `protobuf:"bytes,11,rep,name=preferred_endpoints,json=preferredEndpoints,proto3" json:"preferred_endpoints,omitempty"` + SyncIntervalSeconds int32 `protobuf:"varint,22,opt,name=sync_interval_seconds,json=syncIntervalSeconds,proto3" json:"sync_interval_seconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UnimplementedSetFields) Reset() { *x = UnimplementedSetFields{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UnimplementedSetFields) String() string { @@ -465,7 +450,7 @@ func (*UnimplementedSetFields) ProtoMessage() {} func (x *UnimplementedSetFields) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -498,20 +483,17 @@ func (x *UnimplementedSetFields) GetSyncIntervalSeconds() int32 { // here for the purpose of identifying the mask maps which are on the top level // api catalog resource but aren't present in the static host catalog storage. type UnimplementedCatalogFields struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + WorkerFilter string `protobuf:"bytes,11,opt,name=worker_filter,json=workerFilter,proto3" json:"worker_filter,omitempty"` unknownFields protoimpl.UnknownFields - - WorkerFilter string `protobuf:"bytes,11,opt,name=worker_filter,json=workerFilter,proto3" json:"worker_filter,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UnimplementedCatalogFields) Reset() { *x = UnimplementedCatalogFields{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UnimplementedCatalogFields) String() string { @@ -522,7 +504,7 @@ func (*UnimplementedCatalogFields) ProtoMessage() {} func (x *UnimplementedCatalogFields) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_static_store_v1_static_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -704,80 +686,6 @@ func file_controller_storage_host_static_store_v1_static_proto_init() { if File_controller_storage_host_static_store_v1_static_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_host_static_store_v1_static_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*HostCatalog); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_host_static_store_v1_static_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Host); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_host_static_store_v1_static_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*HostSet); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_host_static_store_v1_static_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*HostSetMember); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_host_static_store_v1_static_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*UnimplementedSetFields); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_host_static_store_v1_static_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*UnimplementedCatalogFields); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/host/store/host.pb.go b/internal/host/store/host.pb.go index 591b47aaed..581e4f99a8 100644 --- a/internal/host/store/host.pb.go +++ b/internal/host/store/host.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/host/store/v1/host.proto @@ -26,25 +26,22 @@ const ( ) type Catalog struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_is is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` // The project_id of the owning scope and must be set. // @inject_tag: `gorm:"not_null"` - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty" gorm:"not_null"` + ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Catalog) Reset() { *x = Catalog{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Catalog) String() string { @@ -55,7 +52,7 @@ func (*Catalog) ProtoMessage() {} func (x *Catalog) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -85,25 +82,22 @@ func (x *Catalog) GetProjectId() string { } type Host struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_is is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` // The catalog_id of the owning catalog and must be set. // @inject_tag: `gorm:"not_null"` - CatalogId string `protobuf:"bytes,2,opt,name=catalog_id,json=catalogId,proto3" json:"catalog_id,omitempty" gorm:"not_null"` + CatalogId string `protobuf:"bytes,2,opt,name=catalog_id,json=catalogId,proto3" json:"catalog_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Host) Reset() { *x = Host{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Host) String() string { @@ -114,7 +108,7 @@ func (*Host) ProtoMessage() {} func (x *Host) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -144,25 +138,22 @@ func (x *Host) GetCatalogId() string { } type Set struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_is is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` // The catalog_id of the owning catalog and must be set. // @inject_tag: `gorm:"not_null"` - CatalogId string `protobuf:"bytes,2,opt,name=catalog_id,json=catalogId,proto3" json:"catalog_id,omitempty" gorm:"not_null"` + CatalogId string `protobuf:"bytes,2,opt,name=catalog_id,json=catalogId,proto3" json:"catalog_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Set) Reset() { *x = Set{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Set) String() string { @@ -173,7 +164,7 @@ func (*Set) ProtoMessage() {} func (x *Set) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -203,10 +194,7 @@ func (x *Set) GetCatalogId() string { } type PreferredEndpoint struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the host set this belongs to. // @inject_tag: `gorm:"primary_key"` HostSetId string `protobuf:"bytes,1,opt,name=host_set_id,json=hostSetId,proto3" json:"host_set_id,omitempty" gorm:"primary_key"` @@ -215,16 +203,16 @@ type PreferredEndpoint struct { Priority uint32 `protobuf:"varint,2,opt,name=priority,proto3" json:"priority,omitempty" gorm:"primary_key"` // The string text of the preference condition // @inject_tag: `gorm:"not_null"` - Condition string `protobuf:"bytes,3,opt,name=condition,proto3" json:"condition,omitempty" gorm:"not_null"` + Condition string `protobuf:"bytes,3,opt,name=condition,proto3" json:"condition,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PreferredEndpoint) Reset() { *x = PreferredEndpoint{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PreferredEndpoint) String() string { @@ -235,7 +223,7 @@ func (*PreferredEndpoint) ProtoMessage() {} func (x *PreferredEndpoint) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -272,23 +260,20 @@ func (x *PreferredEndpoint) GetCondition() string { } type IpAddress struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` HostId string `protobuf:"bytes,1,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty" gorm:"primary_key"` // @inject_tag: `gorm:"primary_key"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty" gorm:"primary_key"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty" gorm:"primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *IpAddress) Reset() { *x = IpAddress{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *IpAddress) String() string { @@ -299,7 +284,7 @@ func (*IpAddress) ProtoMessage() {} func (x *IpAddress) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -329,23 +314,20 @@ func (x *IpAddress) GetAddress() string { } type DnsName struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` HostId string `protobuf:"bytes,1,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty" gorm:"primary_key"` // @inject_tag: `gorm:"primary_key"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty" gorm:"primary_key"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty" gorm:"primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DnsName) Reset() { *x = DnsName{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DnsName) String() string { @@ -356,7 +338,7 @@ func (*DnsName) ProtoMessage() {} func (x *DnsName) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_host_store_v1_host_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -461,80 +443,6 @@ func file_controller_storage_host_store_v1_host_proto_init() { if File_controller_storage_host_store_v1_host_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_host_store_v1_host_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Catalog); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_host_store_v1_host_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Host); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_host_store_v1_host_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*Set); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_host_store_v1_host_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*PreferredEndpoint); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_host_store_v1_host_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*IpAddress); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_host_store_v1_host_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*DnsName); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/iam/store/group.pb.go b/internal/iam/store/group.pb.go index 37fb1bfb28..ef9366ae6f 100644 --- a/internal/iam/store/group.pb.go +++ b/internal/iam/store/group.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/iam/store/v1/group.proto @@ -26,10 +26,7 @@ const ( ) type Group struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is used to access the Group via an API // @inject_tag: gorm:"primary_key" PublicId string `protobuf:"bytes,10,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -52,16 +49,16 @@ type Group struct { // version allows optimistic locking of the group when modifying the group // itself and when modifying dependent items like group members. // @inject_tag: `gorm:"default:null"` - Version uint32 `protobuf:"varint,70,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + Version uint32 `protobuf:"varint,70,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Group) Reset() { *x = Group{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_iam_store_v1_group_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_iam_store_v1_group_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Group) String() string { @@ -72,7 +69,7 @@ func (*Group) ProtoMessage() {} func (x *Group) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_iam_store_v1_group_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -210,20 +207,6 @@ func file_controller_storage_iam_store_v1_group_proto_init() { if File_controller_storage_iam_store_v1_group_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_iam_store_v1_group_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Group); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/iam/store/group_member.pb.go b/internal/iam/store/group_member.pb.go index e376426db2..7e20802a01 100644 --- a/internal/iam/store/group_member.pb.go +++ b/internal/iam/store/group_member.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/iam/store/v1/group_member.proto @@ -25,10 +25,7 @@ const ( ) type GroupMemberUser struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -37,16 +34,16 @@ type GroupMemberUser struct { GroupId string `protobuf:"bytes,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty" gorm:"primary_key"` // member_id is the public_id of the user (which is the member) // @inject_tag: gorm:"primary_key" - MemberId string `protobuf:"bytes,3,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty" gorm:"primary_key"` + MemberId string `protobuf:"bytes,3,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty" gorm:"primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GroupMemberUser) Reset() { *x = GroupMemberUser{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_iam_store_v1_group_member_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_iam_store_v1_group_member_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GroupMemberUser) String() string { @@ -57,7 +54,7 @@ func (*GroupMemberUser) ProtoMessage() {} func (x *GroupMemberUser) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_iam_store_v1_group_member_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -94,10 +91,7 @@ func (x *GroupMemberUser) GetMemberId() string { } type GroupMemberView struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -118,15 +112,15 @@ type GroupMemberView struct { // scoped_member_id of the member // @inject_tag: `gorm:"default:null"` ScopedMemberId string `protobuf:"bytes,7,opt,name=scoped_member_id,json=scopedMemberId,proto3" json:"scoped_member_id,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GroupMemberView) Reset() { *x = GroupMemberView{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_iam_store_v1_group_member_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_iam_store_v1_group_member_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GroupMemberView) String() string { @@ -137,7 +131,7 @@ func (*GroupMemberView) ProtoMessage() {} func (x *GroupMemberView) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_iam_store_v1_group_member_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -280,32 +274,6 @@ func file_controller_storage_iam_store_v1_group_member_proto_init() { if File_controller_storage_iam_store_v1_group_member_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_iam_store_v1_group_member_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GroupMemberUser); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_iam_store_v1_group_member_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GroupMemberView); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/iam/store/principal_role.pb.go b/internal/iam/store/principal_role.pb.go index 87304120dd..7404b8217b 100644 --- a/internal/iam/store/principal_role.pb.go +++ b/internal/iam/store/principal_role.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/iam/store/v1/principal_role.proto @@ -25,10 +25,7 @@ const ( ) type UserRole struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -37,16 +34,16 @@ type UserRole struct { RoleId string `protobuf:"bytes,2,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty" gorm:"primary_key"` // principal_id is the public_id of the user (which is the principal) // @inject_tag: gorm:"primary_key" - PrincipalId string `protobuf:"bytes,3,opt,name=principal_id,json=principalId,proto3" json:"principal_id,omitempty" gorm:"primary_key"` + PrincipalId string `protobuf:"bytes,3,opt,name=principal_id,json=principalId,proto3" json:"principal_id,omitempty" gorm:"primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UserRole) Reset() { *x = UserRole{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UserRole) String() string { @@ -57,7 +54,7 @@ func (*UserRole) ProtoMessage() {} func (x *UserRole) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -94,10 +91,7 @@ func (x *UserRole) GetPrincipalId() string { } type GroupRole struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -106,16 +100,16 @@ type GroupRole struct { RoleId string `protobuf:"bytes,2,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty" gorm:"primary_key"` // principal_id is the public_id of the group (which is the principal) // @inject_tag: gorm:"primary_key" - PrincipalId string `protobuf:"bytes,3,opt,name=principal_id,json=principalId,proto3" json:"principal_id,omitempty" gorm:"primary_key"` + PrincipalId string `protobuf:"bytes,3,opt,name=principal_id,json=principalId,proto3" json:"principal_id,omitempty" gorm:"primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GroupRole) Reset() { *x = GroupRole{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GroupRole) String() string { @@ -126,7 +120,7 @@ func (*GroupRole) ProtoMessage() {} func (x *GroupRole) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -163,10 +157,7 @@ func (x *GroupRole) GetPrincipalId() string { } type ManagedGroupRole struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -175,16 +166,16 @@ type ManagedGroupRole struct { RoleId string `protobuf:"bytes,2,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty" gorm:"primary_key"` // principal_id is the public_id of the managed group (which is the principal) // @inject_tag: gorm:"primary_key" - PrincipalId string `protobuf:"bytes,3,opt,name=principal_id,json=principalId,proto3" json:"principal_id,omitempty" gorm:"primary_key"` + PrincipalId string `protobuf:"bytes,3,opt,name=principal_id,json=principalId,proto3" json:"principal_id,omitempty" gorm:"primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ManagedGroupRole) Reset() { *x = ManagedGroupRole{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ManagedGroupRole) String() string { @@ -195,7 +186,7 @@ func (*ManagedGroupRole) ProtoMessage() {} func (x *ManagedGroupRole) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -232,10 +223,7 @@ func (x *ManagedGroupRole) GetPrincipalId() string { } type PrincipalRoleView struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -255,15 +243,15 @@ type PrincipalRoleView struct { // scoped_principal_id of the principal // @inject_tag: `gorm:"default:null"` ScopedPrincipalId string `protobuf:"bytes,7,opt,name=scoped_principal_id,json=scopedPrincipalId,proto3" json:"scoped_principal_id,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PrincipalRoleView) Reset() { *x = PrincipalRoleView{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PrincipalRoleView) String() string { @@ -274,7 +262,7 @@ func (*PrincipalRoleView) ProtoMessage() {} func (x *PrincipalRoleView) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -441,56 +429,6 @@ func file_controller_storage_iam_store_v1_principal_role_proto_init() { if File_controller_storage_iam_store_v1_principal_role_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*UserRole); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GroupRole); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ManagedGroupRole); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_iam_store_v1_principal_role_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*PrincipalRoleView); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/iam/store/role.pb.go b/internal/iam/store/role.pb.go index 4b630f001f..9f5f21b138 100644 --- a/internal/iam/store/role.pb.go +++ b/internal/iam/store/role.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/iam/store/v1/role.proto @@ -26,10 +26,7 @@ const ( ) type Role struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is used to access the Role via an API // @inject_tag: gorm:"primary_key" PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -52,16 +49,16 @@ type Role struct { // version allows optimistic locking of the role when modifying the role // itself and when modifying dependent items like principal roles. // @inject_tag: `gorm:"default:null"` - Version uint32 `protobuf:"varint,70,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + Version uint32 `protobuf:"varint,70,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Role) Reset() { *x = Role{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_iam_store_v1_role_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_iam_store_v1_role_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Role) String() string { @@ -72,7 +69,7 @@ func (*Role) ProtoMessage() {} func (x *Role) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_iam_store_v1_role_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -210,20 +207,6 @@ func file_controller_storage_iam_store_v1_role_proto_init() { if File_controller_storage_iam_store_v1_role_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_iam_store_v1_role_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Role); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/iam/store/role_grant.pb.go b/internal/iam/store/role_grant.pb.go index 3bed88610e..163751e292 100644 --- a/internal/iam/store/role_grant.pb.go +++ b/internal/iam/store/role_grant.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/iam/store/v1/role_grant.proto @@ -25,10 +25,7 @@ const ( ) type RoleGrant struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -42,15 +39,15 @@ type RoleGrant struct { // We use this as the unique constraint. // @inject_tag: `gorm:"primary_key"` CanonicalGrant string `protobuf:"bytes,4,opt,name=canonical_grant,json=canonicalGrant,proto3" json:"canonical_grant,omitempty" gorm:"primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RoleGrant) Reset() { *x = RoleGrant{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_iam_store_v1_role_grant_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_iam_store_v1_role_grant_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RoleGrant) String() string { @@ -61,7 +58,7 @@ func (*RoleGrant) ProtoMessage() {} func (x *RoleGrant) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_iam_store_v1_role_grant_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -164,20 +161,6 @@ func file_controller_storage_iam_store_v1_role_grant_proto_init() { if File_controller_storage_iam_store_v1_role_grant_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_iam_store_v1_role_grant_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*RoleGrant); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/iam/store/role_grant_scope.pb.go b/internal/iam/store/role_grant_scope.pb.go index 2524dc8c24..cdc3947eee 100644 --- a/internal/iam/store/role_grant_scope.pb.go +++ b/internal/iam/store/role_grant_scope.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/iam/store/v1/role_grant_scope.proto @@ -25,10 +25,7 @@ const ( ) type RoleGrantScope struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` CreateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` @@ -40,15 +37,15 @@ type RoleGrantScope struct { // // @inject_tag: `gorm:"primary_key"` ScopeIdOrSpecial string `protobuf:"bytes,3,opt,name=scope_id_or_special,json=scopeIdOrSpecial,proto3" json:"scope_id_or_special,omitempty" gorm:"primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RoleGrantScope) Reset() { *x = RoleGrantScope{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_iam_store_v1_role_grant_scope_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_iam_store_v1_role_grant_scope_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RoleGrantScope) String() string { @@ -59,7 +56,7 @@ func (*RoleGrantScope) ProtoMessage() {} func (x *RoleGrantScope) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_iam_store_v1_role_grant_scope_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -155,20 +152,6 @@ func file_controller_storage_iam_store_v1_role_grant_scope_proto_init() { if File_controller_storage_iam_store_v1_role_grant_scope_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_iam_store_v1_role_grant_scope_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*RoleGrantScope); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/iam/store/scope.pb.go b/internal/iam/store/scope.pb.go index 61c36f3da8..0d869a5533 100644 --- a/internal/iam/store/scope.pb.go +++ b/internal/iam/store/scope.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/iam/store/v1/scope.proto @@ -26,10 +26,7 @@ const ( ) type Scope struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is the used to access the Scope via an API // @inject_tag: gorm:"primary_key" PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -60,15 +57,15 @@ type Scope struct { // users. // @inject_tag: `gorm:"default:null"` PrimaryAuthMethodId string `protobuf:"bytes,20,opt,name=primary_auth_method_id,json=primaryAuthMethodId,proto3" json:"primary_auth_method_id,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Scope) Reset() { *x = Scope{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_iam_store_v1_scope_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_iam_store_v1_scope_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Scope) String() string { @@ -79,7 +76,7 @@ func (*Scope) ProtoMessage() {} func (x *Scope) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_iam_store_v1_scope_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -158,25 +155,22 @@ func (x *Scope) GetPrimaryAuthMethodId() string { } type ScopePolicyStoragePolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // scope_id of the ScopePolicyStoragePolicy // @inject_tag: gorm:"primary_key" ScopeId string `protobuf:"bytes,10,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" gorm:"primary_key"` // storage_policy_id of the ScopePolicyStoragePolicy // @inject_tag: `gorm:"default:null"` StoragePolicyId string `protobuf:"bytes,20,opt,name=storage_policy_id,json=storagePolicyId,proto3" json:"storage_policy_id,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ScopePolicyStoragePolicy) Reset() { *x = ScopePolicyStoragePolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_iam_store_v1_scope_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_iam_store_v1_scope_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ScopePolicyStoragePolicy) String() string { @@ -187,7 +181,7 @@ func (*ScopePolicyStoragePolicy) ProtoMessage() {} func (x *ScopePolicyStoragePolicy) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_iam_store_v1_scope_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -305,32 +299,6 @@ func file_controller_storage_iam_store_v1_scope_proto_init() { if File_controller_storage_iam_store_v1_scope_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_iam_store_v1_scope_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Scope); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_iam_store_v1_scope_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*ScopePolicyStoragePolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/iam/store/user.pb.go b/internal/iam/store/user.pb.go index 3c7f4841df..7a4bdf16ce 100644 --- a/internal/iam/store/user.pb.go +++ b/internal/iam/store/user.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/iam/store/v1/user.proto @@ -26,10 +26,7 @@ const ( ) type User struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is used to access the User via an API // @inject_tag: gorm:"primary_key" PublicId string `protobuf:"bytes,10,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -68,15 +65,15 @@ type User struct { // public_id from the scope's primary auth method // @inject_tag: `gorm:"->"` PrimaryAccountId string `protobuf:"bytes,120,opt,name=primary_account_id,proto3" json:"primary_account_id,omitempty" gorm:"->"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *User) Reset() { *x = User{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_iam_store_v1_user_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_iam_store_v1_user_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *User) String() string { @@ -87,7 +84,7 @@ func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_iam_store_v1_user_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -261,20 +258,6 @@ func file_controller_storage_iam_store_v1_user_proto_init() { if File_controller_storage_iam_store_v1_user_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_iam_store_v1_user_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*User); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/kms/store/audit_key.pb.go b/internal/kms/store/audit_key.pb.go index dce97c2a41..ede0515ac0 100644 --- a/internal/kms/store/audit_key.pb.go +++ b/internal/kms/store/audit_key.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/kms/store/v1/audit_key.proto @@ -25,10 +25,7 @@ const ( ) type AuditKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the key via an API // @inject_tag: gorm:"primary_key" PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -37,16 +34,16 @@ type AuditKey struct { RootKeyId string `protobuf:"bytes,20,opt,name=root_key_id,json=rootKeyId,proto3" json:"root_key_id,omitempty" gorm:"default:null"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuditKey) Reset() { *x = AuditKey{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_audit_key_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_audit_key_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuditKey) String() string { @@ -57,7 +54,7 @@ func (*AuditKey) ProtoMessage() {} func (x *AuditKey) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_audit_key_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -94,10 +91,7 @@ func (x *AuditKey) GetCreateTime() *timestamp.Timestamp { } type AuditKeyVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the key version via an API // @inject_tag: gorm:"primary_key" PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -120,16 +114,16 @@ type AuditKeyVersion struct { Version uint32 `protobuf:"varint,60,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,70,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,70,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuditKeyVersion) Reset() { *x = AuditKeyVersion{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_audit_key_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_audit_key_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuditKeyVersion) String() string { @@ -140,7 +134,7 @@ func (*AuditKeyVersion) ProtoMessage() {} func (x *AuditKeyVersion) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_audit_key_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -282,32 +276,6 @@ func file_controller_storage_kms_store_v1_audit_key_proto_init() { if File_controller_storage_kms_store_v1_audit_key_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_kms_store_v1_audit_key_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*AuditKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_kms_store_v1_audit_key_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*AuditKeyVersion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/kms/store/data_key_version_destruction_job.pb.go b/internal/kms/store/data_key_version_destruction_job.pb.go index 372b56b9ca..3ca5dd84b7 100644 --- a/internal/kms/store/data_key_version_destruction_job.pb.go +++ b/internal/kms/store/data_key_version_destruction_job.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/kms/store/v1/data_key_version_destruction_job.proto @@ -27,25 +27,22 @@ const ( // DataKeyVersionDestructionJob is used to read and write // data from the kms_data_key_version_destruction_job table. type DataKeyVersionDestructionJob struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // key_id is the private id of the data key version being destroyed. // @inject_tag: `gorm:"primary_key"` KeyId string `protobuf:"bytes,10,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"primary_key"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,20,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,20,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DataKeyVersionDestructionJob) Reset() { *x = DataKeyVersionDestructionJob{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_data_key_version_destruction_job_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_data_key_version_destruction_job_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DataKeyVersionDestructionJob) String() string { @@ -56,7 +53,7 @@ func (*DataKeyVersionDestructionJob) ProtoMessage() {} func (x *DataKeyVersionDestructionJob) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_data_key_version_destruction_job_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -144,20 +141,6 @@ func file_controller_storage_kms_store_v1_data_key_version_destruction_job_proto if File_controller_storage_kms_store_v1_data_key_version_destruction_job_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_kms_store_v1_data_key_version_destruction_job_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*DataKeyVersionDestructionJob); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/kms/store/data_key_version_destruction_job_progress.pb.go b/internal/kms/store/data_key_version_destruction_job_progress.pb.go index da2c743e1f..e29dd02404 100644 --- a/internal/kms/store/data_key_version_destruction_job_progress.pb.go +++ b/internal/kms/store/data_key_version_destruction_job_progress.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/kms/store/v1/data_key_version_destruction_job_progress.proto @@ -25,10 +25,7 @@ const ( ) type DataKeyVersionDestructionJobProgress struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The id of the data key version that is being revoked // @inject_tag: `gorm:"not_null"` KeyId string `protobuf:"bytes,10,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` @@ -47,16 +44,16 @@ type DataKeyVersionDestructionJobProgress struct { CompletedCount int64 `protobuf:"varint,50,opt,name=completed_count,json=completedCount,proto3" json:"completed_count,omitempty" gorm:"not_null"` // The total number of rows that need rewrapping // @inject_tag: `gorm:"not_null"` - TotalCount int64 `protobuf:"varint,60,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty" gorm:"not_null"` + TotalCount int64 `protobuf:"varint,60,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DataKeyVersionDestructionJobProgress) Reset() { *x = DataKeyVersionDestructionJobProgress{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_data_key_version_destruction_job_progress_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_data_key_version_destruction_job_progress_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DataKeyVersionDestructionJobProgress) String() string { @@ -67,7 +64,7 @@ func (*DataKeyVersionDestructionJobProgress) ProtoMessage() {} func (x *DataKeyVersionDestructionJobProgress) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_data_key_version_destruction_job_progress_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -193,20 +190,6 @@ func file_controller_storage_kms_store_v1_data_key_version_destruction_job_progr if File_controller_storage_kms_store_v1_data_key_version_destruction_job_progress_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_kms_store_v1_data_key_version_destruction_job_progress_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*DataKeyVersionDestructionJobProgress); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/kms/store/data_key_version_destruction_job_run.pb.go b/internal/kms/store/data_key_version_destruction_job_run.pb.go index 4c9b31d4d8..bef65bd5a4 100644 --- a/internal/kms/store/data_key_version_destruction_job_run.pb.go +++ b/internal/kms/store/data_key_version_destruction_job_run.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/kms/store/v1/data_key_version_destruction_job_run.proto @@ -26,10 +26,7 @@ const ( // DataKeyVersionDestructionJobRun is used to read and write // data from the kms_data_key_version_destruction_job_run table. type DataKeyVersionDestructionJobRun struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // key_id is the private id of the data key version being destroyed. // @inject_tag: `gorm:"primary_key"` KeyId string `protobuf:"bytes,10,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"primary_key"` @@ -46,16 +43,16 @@ type DataKeyVersionDestructionJobRun struct { // is_running defines whether this run is currently running. Only // one run is allowed to be running at a time. // @inject_tag: `gorm:"not_null"` - IsRunning bool `protobuf:"varint,50,opt,name=is_running,json=isRunning,proto3" json:"is_running,omitempty" gorm:"not_null"` + IsRunning bool `protobuf:"varint,50,opt,name=is_running,json=isRunning,proto3" json:"is_running,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DataKeyVersionDestructionJobRun) Reset() { *x = DataKeyVersionDestructionJobRun{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_data_key_version_destruction_job_run_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_data_key_version_destruction_job_run_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DataKeyVersionDestructionJobRun) String() string { @@ -66,7 +63,7 @@ func (*DataKeyVersionDestructionJobRun) ProtoMessage() {} func (x *DataKeyVersionDestructionJobRun) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_data_key_version_destruction_job_run_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -174,20 +171,6 @@ func file_controller_storage_kms_store_v1_data_key_version_destruction_job_run_p if File_controller_storage_kms_store_v1_data_key_version_destruction_job_run_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_kms_store_v1_data_key_version_destruction_job_run_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*DataKeyVersionDestructionJobRun); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/kms/store/data_key_version_destruction_job_run_allowed_table_name.pb.go b/internal/kms/store/data_key_version_destruction_job_run_allowed_table_name.pb.go index 4840639762..ca59bb50e8 100644 --- a/internal/kms/store/data_key_version_destruction_job_run_allowed_table_name.pb.go +++ b/internal/kms/store/data_key_version_destruction_job_run_allowed_table_name.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/kms/store/v1/data_key_version_destruction_job_run_allowed_table_name.proto @@ -24,23 +24,20 @@ const ( ) type DataKeyVersionDestructionJobRunAllowedTableName struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of a table that is allowed to be used // in a data key version destruction job run. // @inject_tag: `gorm:"not_null"` - TableName string `protobuf:"bytes,10,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty" gorm:"not_null"` + TableName string `protobuf:"bytes,10,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DataKeyVersionDestructionJobRunAllowedTableName) Reset() { *x = DataKeyVersionDestructionJobRunAllowedTableName{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_data_key_version_destruction_job_run_allowed_table_name_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_data_key_version_destruction_job_run_allowed_table_name_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DataKeyVersionDestructionJobRunAllowedTableName) String() string { @@ -51,7 +48,7 @@ func (*DataKeyVersionDestructionJobRunAllowedTableName) ProtoMessage() {} func (x *DataKeyVersionDestructionJobRunAllowedTableName) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_data_key_version_destruction_job_run_allowed_table_name_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -127,20 +124,6 @@ func file_controller_storage_kms_store_v1_data_key_version_destruction_job_run_a if File_controller_storage_kms_store_v1_data_key_version_destruction_job_run_allowed_table_name_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_kms_store_v1_data_key_version_destruction_job_run_allowed_table_name_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*DataKeyVersionDestructionJobRunAllowedTableName); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/kms/store/database_key.pb.go b/internal/kms/store/database_key.pb.go index 6a703f6804..15698829bb 100644 --- a/internal/kms/store/database_key.pb.go +++ b/internal/kms/store/database_key.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/kms/store/v1/database_key.proto @@ -25,10 +25,7 @@ const ( ) type DatabaseKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the key via an API // @inject_tag: gorm:"primary_key" PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -37,16 +34,16 @@ type DatabaseKey struct { RootKeyId string `protobuf:"bytes,20,opt,name=root_key_id,json=rootKeyId,proto3" json:"root_key_id,omitempty" gorm:"default:null"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DatabaseKey) Reset() { *x = DatabaseKey{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_database_key_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_database_key_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DatabaseKey) String() string { @@ -57,7 +54,7 @@ func (*DatabaseKey) ProtoMessage() {} func (x *DatabaseKey) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_database_key_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -94,10 +91,7 @@ func (x *DatabaseKey) GetCreateTime() *timestamp.Timestamp { } type DatabaseKeyVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the key version via an API // @inject_tag: gorm:"primary_key" PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -120,16 +114,16 @@ type DatabaseKeyVersion struct { Version uint32 `protobuf:"varint,60,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,70,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,70,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DatabaseKeyVersion) Reset() { *x = DatabaseKeyVersion{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_database_key_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_database_key_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DatabaseKeyVersion) String() string { @@ -140,7 +134,7 @@ func (*DatabaseKeyVersion) ProtoMessage() {} func (x *DatabaseKeyVersion) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_database_key_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -283,32 +277,6 @@ func file_controller_storage_kms_store_v1_database_key_proto_init() { if File_controller_storage_kms_store_v1_database_key_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_kms_store_v1_database_key_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*DatabaseKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_kms_store_v1_database_key_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*DatabaseKeyVersion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/kms/store/oidc_key.pb.go b/internal/kms/store/oidc_key.pb.go index 5ff5120c60..6e02de9d16 100644 --- a/internal/kms/store/oidc_key.pb.go +++ b/internal/kms/store/oidc_key.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/kms/store/v1/oidc_key.proto @@ -25,10 +25,7 @@ const ( ) type OidcKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the key via an API // @inject_tag: gorm:"primary_key" PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -37,16 +34,16 @@ type OidcKey struct { RootKeyId string `protobuf:"bytes,20,opt,name=root_key_id,json=rootKeyId,proto3" json:"root_key_id,omitempty" gorm:"default:null"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OidcKey) Reset() { *x = OidcKey{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_oidc_key_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_oidc_key_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OidcKey) String() string { @@ -57,7 +54,7 @@ func (*OidcKey) ProtoMessage() {} func (x *OidcKey) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_oidc_key_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -94,10 +91,7 @@ func (x *OidcKey) GetCreateTime() *timestamp.Timestamp { } type OidcKeyVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the key version via an API // @inject_tag: gorm:"primary_key" PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -120,16 +114,16 @@ type OidcKeyVersion struct { Version uint32 `protobuf:"varint,60,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,70,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,70,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OidcKeyVersion) Reset() { *x = OidcKeyVersion{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_oidc_key_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_oidc_key_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OidcKeyVersion) String() string { @@ -140,7 +134,7 @@ func (*OidcKeyVersion) ProtoMessage() {} func (x *OidcKeyVersion) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_oidc_key_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -281,32 +275,6 @@ func file_controller_storage_kms_store_v1_oidc_key_proto_init() { if File_controller_storage_kms_store_v1_oidc_key_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_kms_store_v1_oidc_key_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*OidcKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_kms_store_v1_oidc_key_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*OidcKeyVersion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/kms/store/oplog_key.pb.go b/internal/kms/store/oplog_key.pb.go index 4cab81c7ce..7c624c69d8 100644 --- a/internal/kms/store/oplog_key.pb.go +++ b/internal/kms/store/oplog_key.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/kms/store/v1/oplog_key.proto @@ -25,10 +25,7 @@ const ( ) type OplogKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the key via an API // @inject_tag: gorm:"primary_key" PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -37,16 +34,16 @@ type OplogKey struct { RootKeyId string `protobuf:"bytes,20,opt,name=root_key_id,json=rootKeyId,proto3" json:"root_key_id,omitempty" gorm:"default:null"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OplogKey) Reset() { *x = OplogKey{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_oplog_key_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_oplog_key_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OplogKey) String() string { @@ -57,7 +54,7 @@ func (*OplogKey) ProtoMessage() {} func (x *OplogKey) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_oplog_key_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -94,10 +91,7 @@ func (x *OplogKey) GetCreateTime() *timestamp.Timestamp { } type OplogKeyVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the key version via an API // @inject_tag: gorm:"primary_key" PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -120,16 +114,16 @@ type OplogKeyVersion struct { Version uint32 `protobuf:"varint,60,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,70,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,70,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OplogKeyVersion) Reset() { *x = OplogKeyVersion{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_oplog_key_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_oplog_key_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OplogKeyVersion) String() string { @@ -140,7 +134,7 @@ func (*OplogKeyVersion) ProtoMessage() {} func (x *OplogKeyVersion) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_oplog_key_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -282,32 +276,6 @@ func file_controller_storage_kms_store_v1_oplog_key_proto_init() { if File_controller_storage_kms_store_v1_oplog_key_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_kms_store_v1_oplog_key_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*OplogKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_kms_store_v1_oplog_key_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*OplogKeyVersion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/kms/store/root_key.pb.go b/internal/kms/store/root_key.pb.go index b9b8217878..c98290b389 100644 --- a/internal/kms/store/root_key.pb.go +++ b/internal/kms/store/root_key.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/kms/store/v1/root_key.proto @@ -25,10 +25,7 @@ const ( ) type RootKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the root key via an API // @inject_tag: gorm:"primary_key" PrivateId string `protobuf:"bytes,1,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -37,16 +34,16 @@ type RootKey struct { ScopeId string `protobuf:"bytes,2,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" gorm:"default:null"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RootKey) Reset() { *x = RootKey{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_root_key_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_root_key_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RootKey) String() string { @@ -57,7 +54,7 @@ func (*RootKey) ProtoMessage() {} func (x *RootKey) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_root_key_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -94,10 +91,7 @@ func (x *RootKey) GetCreateTime() *timestamp.Timestamp { } type RootKeyVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the root key version via an API // @inject_tag: gorm:"primary_key" PrivateId string `protobuf:"bytes,1,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -117,16 +111,16 @@ type RootKeyVersion struct { Version uint32 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RootKeyVersion) Reset() { *x = RootKeyVersion{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_root_key_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_root_key_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RootKeyVersion) String() string { @@ -137,7 +131,7 @@ func (*RootKeyVersion) ProtoMessage() {} func (x *RootKeyVersion) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_root_key_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -268,32 +262,6 @@ func file_controller_storage_kms_store_v1_root_key_proto_init() { if File_controller_storage_kms_store_v1_root_key_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_kms_store_v1_root_key_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*RootKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_kms_store_v1_root_key_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*RootKeyVersion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/kms/store/session_key.pb.go b/internal/kms/store/session_key.pb.go index 5570fa55d1..9660a14320 100644 --- a/internal/kms/store/session_key.pb.go +++ b/internal/kms/store/session_key.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/kms/store/v1/session_key.proto @@ -25,10 +25,7 @@ const ( ) type SessionKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the key via an API // @inject_tag: gorm:"primary_key" PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -37,16 +34,16 @@ type SessionKey struct { RootKeyId string `protobuf:"bytes,20,opt,name=root_key_id,json=rootKeyId,proto3" json:"root_key_id,omitempty" gorm:"default:null"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionKey) Reset() { *x = SessionKey{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_session_key_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_session_key_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionKey) String() string { @@ -57,7 +54,7 @@ func (*SessionKey) ProtoMessage() {} func (x *SessionKey) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_session_key_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -94,10 +91,7 @@ func (x *SessionKey) GetCreateTime() *timestamp.Timestamp { } type SessionKeyVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the key version via an API // @inject_tag: gorm:"primary_key" PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -120,16 +114,16 @@ type SessionKeyVersion struct { Version uint32 `protobuf:"varint,60,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,70,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,70,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionKeyVersion) Reset() { *x = SessionKeyVersion{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_session_key_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_session_key_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionKeyVersion) String() string { @@ -140,7 +134,7 @@ func (*SessionKeyVersion) ProtoMessage() {} func (x *SessionKeyVersion) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_session_key_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -282,32 +276,6 @@ func file_controller_storage_kms_store_v1_session_key_proto_init() { if File_controller_storage_kms_store_v1_session_key_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_kms_store_v1_session_key_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*SessionKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_kms_store_v1_session_key_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*SessionKeyVersion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/kms/store/token_key.pb.go b/internal/kms/store/token_key.pb.go index e6be455387..ee57883dee 100644 --- a/internal/kms/store/token_key.pb.go +++ b/internal/kms/store/token_key.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/kms/store/v1/token_key.proto @@ -25,10 +25,7 @@ const ( ) type TokenKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the key via an API // @inject_tag: gorm:"primary_key" PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -37,16 +34,16 @@ type TokenKey struct { RootKeyId string `protobuf:"bytes,20,opt,name=root_key_id,json=rootKeyId,proto3" json:"root_key_id,omitempty" gorm:"default:null"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TokenKey) Reset() { *x = TokenKey{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_token_key_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_token_key_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TokenKey) String() string { @@ -57,7 +54,7 @@ func (*TokenKey) ProtoMessage() {} func (x *TokenKey) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_token_key_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -94,10 +91,7 @@ func (x *TokenKey) GetCreateTime() *timestamp.Timestamp { } type TokenKeyVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the key version via an API // @inject_tag: gorm:"primary_key" PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -120,16 +114,16 @@ type TokenKeyVersion struct { Version uint32 `protobuf:"varint,60,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,70,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,70,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TokenKeyVersion) Reset() { *x = TokenKeyVersion{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_kms_store_v1_token_key_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_kms_store_v1_token_key_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TokenKeyVersion) String() string { @@ -140,7 +134,7 @@ func (*TokenKeyVersion) ProtoMessage() {} func (x *TokenKeyVersion) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_kms_store_v1_token_key_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -282,32 +276,6 @@ func file_controller_storage_kms_store_v1_token_key_proto_init() { if File_controller_storage_kms_store_v1_token_key_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_kms_store_v1_token_key_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*TokenKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_kms_store_v1_token_key_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*TokenKeyVersion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/oplog/any_operation.pb.go b/internal/oplog/any_operation.pb.go index d0ad1648f3..485a7db4ed 100644 --- a/internal/oplog/any_operation.pb.go +++ b/internal/oplog/any_operation.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/oplog/v1/any_operation.proto @@ -95,10 +95,7 @@ func (OpType) EnumDescriptor() ([]byte, []int) { // AnyOperation provides a message for anything and the type of operation it // represents. type AnyOperation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // type_name defines type of operation. TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` // value are the bytes of a marshaled proto buff. @@ -111,16 +108,16 @@ type AnyOperation struct { NullMask *fieldmaskpb.FieldMask `protobuf:"bytes,5,opt,name=null_mask,json=nullMask,proto3" json:"null_mask,omitempty"` // Options for the operations (see dbw package for definition/documentation of // options) - Options *OperationOptions `protobuf:"bytes,6,opt,name=options,proto3" json:"options,omitempty"` + Options *OperationOptions `protobuf:"bytes,6,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AnyOperation) Reset() { *x = AnyOperation{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AnyOperation) String() string { @@ -131,7 +128,7 @@ func (*AnyOperation) ProtoMessage() {} func (x *AnyOperation) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -193,10 +190,7 @@ func (x *AnyOperation) GetOptions() *OperationOptions { // keep the docs in-sync from the dbw package, so if you need more information // on what the option does please see the dbw package docs. type OperationOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // with_version (see dbw package for docs) WithVersion *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=with_version,json=withVersion,proto3" json:"with_version,omitempty"` // with_skip_vet_for_write (see dbw package for docs) @@ -207,15 +201,15 @@ type OperationOptions struct { WithWhereClauseArgs []*structpb.Value `protobuf:"bytes,4,rep,name=with_where_clause_args,json=withWhereClauseArgs,proto3" json:"with_where_clause_args,omitempty"` // with_on_conflict (see dbw package for docs) WithOnConflict *WithOnConflict `protobuf:"bytes,5,opt,name=with_on_conflict,json=withOnConflict,proto3" json:"with_on_conflict,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OperationOptions) Reset() { *x = OperationOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OperationOptions) String() string { @@ -226,7 +220,7 @@ func (*OperationOptions) ProtoMessage() {} func (x *OperationOptions) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -278,34 +272,31 @@ func (x *OperationOptions) GetWithOnConflict() *WithOnConflict { // WithOnConflict defines the parameters needed for an sql "on conflict clause" type WithOnConflict struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // target defines the on conflict target // - // Types that are assignable to Target: + // Types that are valid to be assigned to Target: // // *WithOnConflict_Constraint // *WithOnConflict_Columns Target isWithOnConflict_Target `protobuf_oneof:"target"` // action defines the on conflict action // - // Types that are assignable to Action: + // Types that are valid to be assigned to Action: // // *WithOnConflict_DoNothing // *WithOnConflict_UpdateAll // *WithOnConflict_ColumnValues - Action isWithOnConflict_Action `protobuf_oneof:"action"` + Action isWithOnConflict_Action `protobuf_oneof:"action"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WithOnConflict) Reset() { *x = WithOnConflict{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WithOnConflict) String() string { @@ -316,7 +307,7 @@ func (*WithOnConflict) ProtoMessage() {} func (x *WithOnConflict) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -331,51 +322,61 @@ func (*WithOnConflict) Descriptor() ([]byte, []int) { return file_controller_storage_oplog_v1_any_operation_proto_rawDescGZIP(), []int{2} } -func (m *WithOnConflict) GetTarget() isWithOnConflict_Target { - if m != nil { - return m.Target +func (x *WithOnConflict) GetTarget() isWithOnConflict_Target { + if x != nil { + return x.Target } return nil } func (x *WithOnConflict) GetConstraint() string { - if x, ok := x.GetTarget().(*WithOnConflict_Constraint); ok { - return x.Constraint + if x != nil { + if x, ok := x.Target.(*WithOnConflict_Constraint); ok { + return x.Constraint + } } return "" } func (x *WithOnConflict) GetColumns() *Columns { - if x, ok := x.GetTarget().(*WithOnConflict_Columns); ok { - return x.Columns + if x != nil { + if x, ok := x.Target.(*WithOnConflict_Columns); ok { + return x.Columns + } } return nil } -func (m *WithOnConflict) GetAction() isWithOnConflict_Action { - if m != nil { - return m.Action +func (x *WithOnConflict) GetAction() isWithOnConflict_Action { + if x != nil { + return x.Action } return nil } func (x *WithOnConflict) GetDoNothing() bool { - if x, ok := x.GetAction().(*WithOnConflict_DoNothing); ok { - return x.DoNothing + if x != nil { + if x, ok := x.Action.(*WithOnConflict_DoNothing); ok { + return x.DoNothing + } } return false } func (x *WithOnConflict) GetUpdateAll() bool { - if x, ok := x.GetAction().(*WithOnConflict_UpdateAll); ok { - return x.UpdateAll + if x != nil { + if x, ok := x.Action.(*WithOnConflict_UpdateAll); ok { + return x.UpdateAll + } } return false } func (x *WithOnConflict) GetColumnValues() *ColumnValues { - if x, ok := x.GetAction().(*WithOnConflict_ColumnValues); ok { - return x.ColumnValues + if x != nil { + if x, ok := x.Action.(*WithOnConflict_ColumnValues); ok { + return x.ColumnValues + } } return nil } @@ -425,21 +426,18 @@ func (*WithOnConflict_ColumnValues) isWithOnConflict_Action() {} // Columns defines a set of column properties type Columns struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // name of the columns - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Columns) Reset() { *x = Columns{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Columns) String() string { @@ -450,7 +448,7 @@ func (*Columns) ProtoMessage() {} func (x *Columns) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -474,29 +472,26 @@ func (x *Columns) GetNames() []string { // ColumnValue defines a column value type ColumnValue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // name of the column Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // value of the column // - // Types that are assignable to Value: + // Types that are valid to be assigned to Value: // // *ColumnValue_Raw // *ColumnValue_ExprValue // *ColumnValue_Column - Value isColumnValue_Value `protobuf_oneof:"value"` + Value isColumnValue_Value `protobuf_oneof:"value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ColumnValue) Reset() { *x = ColumnValue{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ColumnValue) String() string { @@ -507,7 +502,7 @@ func (*ColumnValue) ProtoMessage() {} func (x *ColumnValue) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -529,30 +524,36 @@ func (x *ColumnValue) GetName() string { return "" } -func (m *ColumnValue) GetValue() isColumnValue_Value { - if m != nil { - return m.Value +func (x *ColumnValue) GetValue() isColumnValue_Value { + if x != nil { + return x.Value } return nil } func (x *ColumnValue) GetRaw() *structpb.Value { - if x, ok := x.GetValue().(*ColumnValue_Raw); ok { - return x.Raw + if x != nil { + if x, ok := x.Value.(*ColumnValue_Raw); ok { + return x.Raw + } } return nil } func (x *ColumnValue) GetExprValue() *ExprValue { - if x, ok := x.GetValue().(*ColumnValue_ExprValue); ok { - return x.ExprValue + if x != nil { + if x, ok := x.Value.(*ColumnValue_ExprValue); ok { + return x.ExprValue + } } return nil } func (x *ColumnValue) GetColumn() *Column { - if x, ok := x.GetValue().(*ColumnValue_Column); ok { - return x.Column + if x != nil { + if x, ok := x.Value.(*ColumnValue_Column); ok { + return x.Column + } } return nil } @@ -581,21 +582,18 @@ func (*ColumnValue_Column) isColumnValue_Value() {} // ColumnValues defines a set of column value properies type ColumnValues struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // values are the values of the columns - Values []*ColumnValue `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` + Values []*ColumnValue `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ColumnValues) Reset() { *x = ColumnValues{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ColumnValues) String() string { @@ -606,7 +604,7 @@ func (*ColumnValues) ProtoMessage() {} func (x *ColumnValues) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -630,23 +628,20 @@ func (x *ColumnValues) GetValues() []*ColumnValue { // ExprValue defines an expr value that can be used as a column value type ExprValue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // sql is the sql clause of the expr Sql string `protobuf:"bytes,1,opt,name=sql,proto3" json:"sql,omitempty"` // args are the sql args of the expr - Args []*structpb.Value `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + Args []*structpb.Value `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExprValue) Reset() { *x = ExprValue{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExprValue) String() string { @@ -657,7 +652,7 @@ func (*ExprValue) ProtoMessage() {} func (x *ExprValue) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -688,23 +683,20 @@ func (x *ExprValue) GetArgs() []*structpb.Value { // Column represents a table Column type Column struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // name of the column Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // table name of the column - Table string `protobuf:"bytes,2,opt,name=table,proto3" json:"table,omitempty"` + Table string `protobuf:"bytes,2,opt,name=table,proto3" json:"table,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Column) Reset() { *x = Column{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Column) String() string { @@ -715,7 +707,7 @@ func (*Column) ProtoMessage() {} func (x *Column) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_v1_any_operation_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -918,104 +910,6 @@ func file_controller_storage_oplog_v1_any_operation_proto_init() { if File_controller_storage_oplog_v1_any_operation_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_oplog_v1_any_operation_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*AnyOperation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_oplog_v1_any_operation_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*OperationOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_oplog_v1_any_operation_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*WithOnConflict); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_oplog_v1_any_operation_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*Columns); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_oplog_v1_any_operation_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*ColumnValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_oplog_v1_any_operation_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*ColumnValues); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_oplog_v1_any_operation_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*ExprValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_oplog_v1_any_operation_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*Column); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_storage_oplog_v1_any_operation_proto_msgTypes[2].OneofWrappers = []any{ (*WithOnConflict_Constraint)(nil), (*WithOnConflict_Columns)(nil), diff --git a/internal/oplog/oplog_test/oplog_test.pb.go b/internal/oplog/oplog_test/oplog_test.pb.go index 82e103a6de..d3a952adb1 100644 --- a/internal/oplog/oplog_test/oplog_test.pb.go +++ b/internal/oplog/oplog_test/oplog_test.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/oplog/test/v1/oplog_test.proto @@ -27,10 +27,7 @@ const ( // TestUser for gorm test user model type TestUser struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: gorm:"primary_key" Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"primary_key"` Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` @@ -39,16 +36,16 @@ type TestUser struct { // @inject_tag: gorm:"default:null" Version uint32 `protobuf:"varint,9,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` // @inject_tag: gorm:"-" json:"-" - Table string `protobuf:"bytes,7,opt,name=table,proto3" json:"-" gorm:"-"` + Table string `protobuf:"bytes,7,opt,name=table,proto3" json:"-" gorm:"-"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestUser) Reset() { *x = TestUser{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestUser) String() string { @@ -59,7 +56,7 @@ func (*TestUser) ProtoMessage() {} func (x *TestUser) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -118,25 +115,22 @@ func (x *TestUser) GetTable() string { // TestCar for gorm test car model type TestCar struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: gorm:"primary_key" Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"primary_key"` Model string `protobuf:"bytes,4,opt,name=model,proto3" json:"model,omitempty"` Mpg int32 `protobuf:"varint,5,opt,name=mpg,proto3" json:"mpg,omitempty"` // @inject_tag: gorm:"-" json:"-" - Table string `protobuf:"bytes,6,opt,name=table,proto3" json:"-" gorm:"-"` + Table string `protobuf:"bytes,6,opt,name=table,proto3" json:"-" gorm:"-"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestCar) Reset() { *x = TestCar{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestCar) String() string { @@ -147,7 +141,7 @@ func (*TestCar) ProtoMessage() {} func (x *TestCar) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -192,23 +186,20 @@ func (x *TestCar) GetTable() string { // TestRental for gorm test rental model type TestRental struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserId uint32 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` - CarId uint32 `protobuf:"varint,2,opt,name=car_id,json=carId,proto3" json:"car_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + UserId uint32 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + CarId uint32 `protobuf:"varint,2,opt,name=car_id,json=carId,proto3" json:"car_id,omitempty"` // @inject_tag: gorm:"-" json:"-" - Table string `protobuf:"bytes,3,opt,name=table,proto3" json:"-" gorm:"-"` + Table string `protobuf:"bytes,3,opt,name=table,proto3" json:"-" gorm:"-"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestRental) Reset() { *x = TestRental{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestRental) String() string { @@ -219,7 +210,7 @@ func (*TestRental) ProtoMessage() {} func (x *TestRental) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -257,24 +248,21 @@ func (x *TestRental) GetTable() string { // TestNonReplayableUser for negative test type TestNonReplayableUser struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: gorm:"primary_key" - Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"primary_key"` - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - PhoneNumber string `protobuf:"bytes,5,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` - Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"` + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"primary_key"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + PhoneNumber string `protobuf:"bytes,5,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` + Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestNonReplayableUser) Reset() { *x = TestNonReplayableUser{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestNonReplayableUser) String() string { @@ -285,7 +273,7 @@ func (*TestNonReplayableUser) ProtoMessage() {} func (x *TestNonReplayableUser) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -403,56 +391,6 @@ func file_controller_storage_oplog_test_v1_oplog_test_proto_init() { if File_controller_storage_oplog_test_v1_oplog_test_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*TestUser); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*TestCar); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*TestRental); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_oplog_test_v1_oplog_test_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*TestNonReplayableUser); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/oplog/store/oplog.pb.go b/internal/oplog/store/oplog.pb.go index 6ab02bd432..8709e8f469 100644 --- a/internal/oplog/store/oplog.pb.go +++ b/internal/oplog/store/oplog.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/oplog/store/v1/oplog.proto @@ -28,10 +28,7 @@ const ( // Entry provides a message for oplog entries that's compatible with gorm type Entry struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: gorm:"primary_key" Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"primary_key"` // @inject_tag: `gorm:"default:current_timestamp"` @@ -58,16 +55,16 @@ type Entry struct { // the scope id associated with the key used to encrypt the data. // This value is populated from the key_id in a trigger. // @inject_tag: gorm:"default:null" - ScopeId string `protobuf:"bytes,10,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" gorm:"default:null"` + ScopeId string `protobuf:"bytes,10,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Entry) Reset() { *x = Entry{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_store_v1_oplog_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_store_v1_oplog_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Entry) String() string { @@ -78,7 +75,7 @@ func (*Entry) ProtoMessage() {} func (x *Entry) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_store_v1_oplog_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -165,10 +162,7 @@ func (x *Entry) GetScopeId() string { // Metadata provides a message for oplog metadata that's compatible with gorm type Metadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: gorm:"primary_key" Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"primary_key"` // @inject_tag: `gorm:"default:current_timestamp"` @@ -179,16 +173,16 @@ type Metadata struct { // @inject_tag: gorm:"not_null" Key string `protobuf:"bytes,5,opt,name=key,proto3" json:"key,omitempty" gorm:"not_null"` // @inject_tag: gorm:"not_null" - Value string `protobuf:"bytes,6,opt,name=value,proto3" json:"value,omitempty" gorm:"not_null"` + Value string `protobuf:"bytes,6,opt,name=value,proto3" json:"value,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Metadata) Reset() { *x = Metadata{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_store_v1_oplog_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_store_v1_oplog_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Metadata) String() string { @@ -199,7 +193,7 @@ func (*Metadata) ProtoMessage() {} func (x *Metadata) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_store_v1_oplog_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -258,10 +252,7 @@ func (x *Metadata) GetValue() string { // Ticket provides a message for oplog tickets that's compatible with gorm type Ticket struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: gorm:"primary_key" Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"primary_key"` // @inject_tag: `gorm:"default:current_timestamp"` @@ -271,16 +262,16 @@ type Ticket struct { // @inject_tat: gorm:"not_null" Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` // @inject_tat: gorm:"not_null;default:'1'" - Version uint32 `protobuf:"varint,7,opt,name=version,proto3" json:"version,omitempty"` + Version uint32 `protobuf:"varint,7,opt,name=version,proto3" json:"version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Ticket) Reset() { *x = Ticket{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_oplog_store_v1_oplog_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_oplog_store_v1_oplog_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Ticket) String() string { @@ -291,7 +282,7 @@ func (*Ticket) ProtoMessage() {} func (x *Ticket) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_oplog_store_v1_oplog_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -453,44 +444,6 @@ func file_controller_storage_oplog_store_v1_oplog_proto_init() { if File_controller_storage_oplog_store_v1_oplog_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_oplog_store_v1_oplog_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Entry); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_oplog_store_v1_oplog_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Metadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_oplog_store_v1_oplog_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*Ticket); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/plugin/store/plugin.pb.go b/internal/plugin/store/plugin.pb.go index 2f46dea48a..905e74cd8a 100644 --- a/internal/plugin/store/plugin.pb.go +++ b/internal/plugin/store/plugin.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/plugin/store/v1/plugin.proto @@ -28,10 +28,7 @@ const ( ) type Plugin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,10,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -51,16 +48,16 @@ type Plugin struct { // @inject_tag: `gorm:"default:current_timestamp"` UpdateTime *timestamp.Timestamp `protobuf:"bytes,60,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty" gorm:"default:current_timestamp"` // @inject_tag: `gorm:"default:null"` - Version uint32 `protobuf:"varint,70,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + Version uint32 `protobuf:"varint,70,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Plugin) Reset() { *x = Plugin{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_plugin_store_v1_plugin_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_plugin_store_v1_plugin_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Plugin) String() string { @@ -71,7 +68,7 @@ func (*Plugin) ProtoMessage() {} func (x *Plugin) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_plugin_store_v1_plugin_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -210,20 +207,6 @@ func file_controller_storage_plugin_store_v1_plugin_proto_init() { if File_controller_storage_plugin_store_v1_plugin_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_plugin_store_v1_plugin_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Plugin); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/policy/storage/store/policy.pb.go b/internal/policy/storage/store/policy.pb.go index 3bacd80d3a..79d3b2283b 100644 --- a/internal/policy/storage/store/policy.pb.go +++ b/internal/policy/storage/store/policy.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/policy/storage/store/v1/policy.proto @@ -29,10 +29,7 @@ const ( ) type Policy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -67,16 +64,16 @@ type Policy struct { UpdateTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty" gorm:"default:current_timestamp"` // version allows optimistic locking of the resource. // @inject_tag: `gorm:"default:null"` - Version uint32 `protobuf:"varint,11,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + Version uint32 `protobuf:"varint,11,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Policy) Reset() { *x = Policy{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_policy_storage_store_v1_policy_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_policy_storage_store_v1_policy_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Policy) String() string { @@ -87,7 +84,7 @@ func (*Policy) ProtoMessage() {} func (x *Policy) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_policy_storage_store_v1_policy_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -284,20 +281,6 @@ func file_controller_storage_policy_storage_store_v1_policy_proto_init() { if File_controller_storage_policy_storage_store_v1_policy_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_policy_storage_store_v1_policy_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Policy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/policy/store/policy.pb.go b/internal/policy/store/policy.pb.go index e87477ea65..e2f303e1c6 100644 --- a/internal/policy/store/policy.pb.go +++ b/internal/policy/store/policy.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/policy/store/v1/policy.proto @@ -26,25 +26,22 @@ const ( ) type Store struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` // The scope_id of the owning org/global. Must be set. // @inject_tag: `gorm:"not_null"` - ScopeId string `protobuf:"bytes,2,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" gorm:"not_null"` + ScopeId string `protobuf:"bytes,2,opt,name=scope_id,json=scopeId,proto3" json:"scope_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Store) Reset() { *x = Store{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_policy_store_v1_policy_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_policy_store_v1_policy_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Store) String() string { @@ -55,7 +52,7 @@ func (*Store) ProtoMessage() {} func (x *Store) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_policy_store_v1_policy_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -132,20 +129,6 @@ func file_controller_storage_policy_store_v1_policy_proto_init() { if File_controller_storage_policy_store_v1_policy_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_policy_store_v1_policy_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Store); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/scheduler/job/store/job.pb.go b/internal/scheduler/job/store/job.pb.go index f64fae2c2c..07cd97ceb1 100644 --- a/internal/scheduler/job/store/job.pb.go +++ b/internal/scheduler/job/store/job.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/job/store/v1/job.proto @@ -27,10 +27,7 @@ const ( ) type Job struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // plugin_id is the primary key of the plugin that registered and owns the job // @inject_tag: `gorm:"primary_key"` PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty" gorm:"primary_key"` @@ -43,15 +40,15 @@ type Job struct { // next_scheduled_run is the time that the next run should be created. // @inject_tag: `gorm:"default:current_timestamp"` NextScheduledRun *timestamp.Timestamp `protobuf:"bytes,4,opt,name=next_scheduled_run,json=nextScheduledRun,proto3" json:"next_scheduled_run,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Job) Reset() { *x = Job{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_job_store_v1_job_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_job_store_v1_job_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Job) String() string { @@ -62,7 +59,7 @@ func (*Job) ProtoMessage() {} func (x *Job) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_job_store_v1_job_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -106,10 +103,7 @@ func (x *Job) GetNextScheduledRun() *timestamp.Timestamp { } type JobRun struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is used to access the job run but not intended to be available via the API // @inject_tag: `gorm:"primary_key;default:null"` PrivateId string `protobuf:"bytes,1,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key;default:null"` @@ -143,16 +137,16 @@ type JobRun struct { Status string `protobuf:"bytes,10,opt,name=status,proto3" json:"status,omitempty" gorm:"not_null"` // The controller_id of the controller running the job and must be set. // @inject_tag: `gorm:"not_null"` - ControllerId string `protobuf:"bytes,11,opt,name=controller_id,json=controllerId,proto3" json:"controller_id,omitempty" gorm:"not_null"` + ControllerId string `protobuf:"bytes,11,opt,name=controller_id,json=controllerId,proto3" json:"controller_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JobRun) Reset() { *x = JobRun{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_job_store_v1_job_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_job_store_v1_job_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JobRun) String() string { @@ -163,7 +157,7 @@ func (*JobRun) ProtoMessage() {} func (x *JobRun) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_job_store_v1_job_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -351,32 +345,6 @@ func file_controller_storage_job_store_v1_job_proto_init() { if File_controller_storage_job_store_v1_job_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_job_store_v1_job_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Job); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_job_store_v1_job_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*JobRun); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/server/store/controller.pb.go b/internal/server/store/controller.pb.go index bafd22277f..f08792f132 100644 --- a/internal/server/store/controller.pb.go +++ b/internal/server/store/controller.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/servers/store/v1/controller.proto @@ -26,10 +26,7 @@ const ( // Controller contains all fields related to a Controller resource type Controller struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Private ID of the resource PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty"` // Address for the controller @@ -40,16 +37,16 @@ type Controller struct { // First seen time from the RDBMS CreateTime *timestamp.Timestamp `protobuf:"bytes,40,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` // Last time there was an update - UpdateTime *timestamp.Timestamp `protobuf:"bytes,50,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + UpdateTime *timestamp.Timestamp `protobuf:"bytes,50,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Controller) Reset() { *x = Controller{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_servers_store_v1_controller_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_servers_store_v1_controller_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Controller) String() string { @@ -60,7 +57,7 @@ func (*Controller) ProtoMessage() {} func (x *Controller) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_servers_store_v1_controller_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -177,20 +174,6 @@ func file_controller_storage_servers_store_v1_controller_proto_init() { if File_controller_storage_servers_store_v1_controller_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_servers_store_v1_controller_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Controller); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/server/store/root_certificate.pb.go b/internal/server/store/root_certificate.pb.go index 9d62c4564c..34a63c3b06 100644 --- a/internal/server/store/root_certificate.pb.go +++ b/internal/server/store/root_certificate.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/servers/store/v1/root_certificate.proto @@ -28,24 +28,21 @@ const ( // CertificateAuthority is a versioned entity used to lock the database when rotation RootCertificates type CertificateAuthority struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @inject_tag: `gorm:"primary_key"` PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` // version allows optimistic locking of the resource. // @inject_tag: `gorm:"default:null"` - Version uint32 `protobuf:"varint,20,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + Version uint32 `protobuf:"varint,20,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CertificateAuthority) Reset() { *x = CertificateAuthority{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_servers_store_v1_root_certificate_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_servers_store_v1_root_certificate_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CertificateAuthority) String() string { @@ -56,7 +53,7 @@ func (*CertificateAuthority) ProtoMessage() {} func (x *CertificateAuthority) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_servers_store_v1_root_certificate_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -87,10 +84,7 @@ func (x *CertificateAuthority) GetVersion() uint32 { // RootCertificate contains all fields related to a RootCertificate resource type RootCertificate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The serial number of the root certificate // @inject_tag: `gorm:"not_null"` SerialNumber uint64 `protobuf:"varint,10,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty" gorm:"not_null"` @@ -120,16 +114,16 @@ type RootCertificate struct { State string `protobuf:"bytes,80,opt,name=state,proto3" json:"state,omitempty" gorm:"not_null"` // A reference to the CertificateAuthority // @inject_tag: `gorm:"not_null"` - IssuingCa string `protobuf:"bytes,90,opt,name=issuing_ca,json=issuingCa,proto3" json:"issuing_ca,omitempty" gorm:"not_null"` + IssuingCa string `protobuf:"bytes,90,opt,name=issuing_ca,json=issuingCa,proto3" json:"issuing_ca,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RootCertificate) Reset() { *x = RootCertificate{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_servers_store_v1_root_certificate_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_servers_store_v1_root_certificate_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RootCertificate) String() string { @@ -140,7 +134,7 @@ func (*RootCertificate) ProtoMessage() {} func (x *RootCertificate) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_servers_store_v1_root_certificate_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -309,32 +303,6 @@ func file_controller_storage_servers_store_v1_root_certificate_proto_init() { if File_controller_storage_servers_store_v1_root_certificate_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_servers_store_v1_root_certificate_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*CertificateAuthority); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_servers_store_v1_root_certificate_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*RootCertificate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/server/store/worker.pb.go b/internal/server/store/worker.pb.go index 137c9a2096..76830dc639 100644 --- a/internal/server/store/worker.pb.go +++ b/internal/server/store/worker.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/servers/store/v1/worker.proto @@ -27,10 +27,7 @@ const ( // Worker contains all fields related to a Worker resource type Worker struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,10,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -77,15 +74,15 @@ type Worker struct { // - unknown: The default local storage state of a worker. Used when the local storage state of a worker is not yet known // @inject_tag: `gorm:"not_null"` LocalStorageState string `protobuf:"bytes,160,opt,name=local_storage_state,json=localStorageState,proto3" json:"local_storage_state,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Worker) Reset() { *x = Worker{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Worker) String() string { @@ -96,7 +93,7 @@ func (*Worker) ProtoMessage() {} func (x *Worker) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -208,10 +205,7 @@ func (x *Worker) GetLocalStorageState() string { // // Deprecated: Marked as deprecated in controller/storage/servers/store/v1/worker.proto. type WorkerTag struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // worker_id is the public key that key of the worker this tag is for. // @inject_tag: `gorm:"primary_key"` WorkerId string `protobuf:"bytes,10,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty" gorm:"primary_key"` @@ -223,16 +217,16 @@ type WorkerTag struct { Value string `protobuf:"bytes,30,opt,name=value,proto3" json:"value,omitempty" gorm:"primary_key"` // source is the source of the tag. Either 'configuration' or 'api'. // @inject_tag: `gorm:"primary_key"` - Source string `protobuf:"bytes,40,opt,name=source,proto3" json:"source,omitempty" gorm:"primary_key"` + Source string `protobuf:"bytes,40,opt,name=source,proto3" json:"source,omitempty" gorm:"primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkerTag) Reset() { *x = WorkerTag{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WorkerTag) String() string { @@ -243,7 +237,7 @@ func (*WorkerTag) ProtoMessage() {} func (x *WorkerTag) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -289,10 +283,7 @@ func (x *WorkerTag) GetSource() string { // ApiTag is an API tag for a worker. The primary key is comprised of the // worker_id, key, and value type ApiTag struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // worker_id is the public key that key of the worker this tag is for. // @inject_tag: `gorm:"primary_key"` WorkerId string `protobuf:"bytes,10,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty" gorm:"primary_key"` @@ -301,16 +292,16 @@ type ApiTag struct { Key string `protobuf:"bytes,20,opt,name=key,proto3" json:"key,omitempty" gorm:"primary_key"` // value is the value // @inject_tag: `gorm:"primary_key"` - Value string `protobuf:"bytes,30,opt,name=value,proto3" json:"value,omitempty" gorm:"primary_key"` + Value string `protobuf:"bytes,30,opt,name=value,proto3" json:"value,omitempty" gorm:"primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApiTag) Reset() { *x = ApiTag{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ApiTag) String() string { @@ -321,7 +312,7 @@ func (*ApiTag) ProtoMessage() {} func (x *ApiTag) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -360,10 +351,7 @@ func (x *ApiTag) GetValue() string { // ConfigTag is a configuration tag for a worker. The primary key is comprised of the // worker_id, key, and value type ConfigTag struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // worker_id is the public key that key of the worker this tag is for. // @inject_tag: `gorm:"primary_key"` WorkerId string `protobuf:"bytes,10,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty" gorm:"primary_key"` @@ -372,16 +360,16 @@ type ConfigTag struct { Key string `protobuf:"bytes,20,opt,name=key,proto3" json:"key,omitempty" gorm:"primary_key"` // value is the value // @inject_tag: `gorm:"primary_key"` - Value string `protobuf:"bytes,30,opt,name=value,proto3" json:"value,omitempty" gorm:"primary_key"` + Value string `protobuf:"bytes,30,opt,name=value,proto3" json:"value,omitempty" gorm:"primary_key"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConfigTag) Reset() { *x = ConfigTag{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConfigTag) String() string { @@ -392,7 +380,7 @@ func (*ConfigTag) ProtoMessage() {} func (x *ConfigTag) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -431,10 +419,7 @@ func (x *ConfigTag) GetValue() string { // WorkerStorageBucketCredentialState is a state for a storage bucket credential for a worker. // The primary key is comprised of the worker_id, storage_bucket_credential_id, permission_type. type WorkerStorageBucketCredentialState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // worker_id is the public key of the worker. // @inject_tag: `gorm:"primary_key"` WorkerId string `protobuf:"bytes,10,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty" gorm:"primary_key"` @@ -451,16 +436,16 @@ type WorkerStorageBucketCredentialState struct { ErrorDetails string `protobuf:"bytes,50,opt,name=error_details,json=errorDetails,proto3" json:"error_details,omitempty"` // checked_at is the utc timestamp of when the permission was tested. // @inject_tag: `gorm:"not_null"` - CheckedAt *timestamp.Timestamp `protobuf:"bytes,60,opt,name=checked_at,json=checkedAt,proto3" json:"checked_at,omitempty" gorm:"not_null"` + CheckedAt *timestamp.Timestamp `protobuf:"bytes,60,opt,name=checked_at,json=checkedAt,proto3" json:"checked_at,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkerStorageBucketCredentialState) Reset() { *x = WorkerStorageBucketCredentialState{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WorkerStorageBucketCredentialState) String() string { @@ -471,7 +456,7 @@ func (*WorkerStorageBucketCredentialState) ProtoMessage() {} func (x *WorkerStorageBucketCredentialState) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -530,25 +515,22 @@ func (x *WorkerStorageBucketCredentialState) GetCheckedAt() *timestamp.Timestamp // WorkerSessionInfoRequest contains information about a worker and its SessionInfo requests. type WorkerSessionInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // worker_id is the public id of the worker. // @inject_tag: `gorm:"primary_key"` WorkerId string `protobuf:"bytes,10,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty" gorm:"primary_key"` // The last_request_time is the last time a worker has reported its session information. // @inject_tag: `gorm:"default:null"` LastRequestTime *timestamp.Timestamp `protobuf:"bytes,20,opt,name=last_request_time,json=lastRequestTime,proto3" json:"last_request_time,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkerSessionInfoRequest) Reset() { *x = WorkerSessionInfoRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WorkerSessionInfoRequest) String() string { @@ -559,7 +541,7 @@ func (*WorkerSessionInfoRequest) ProtoMessage() {} func (x *WorkerSessionInfoRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_servers_store_v1_worker_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -733,80 +715,6 @@ func file_controller_storage_servers_store_v1_worker_proto_init() { if File_controller_storage_servers_store_v1_worker_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_servers_store_v1_worker_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Worker); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_servers_store_v1_worker_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*WorkerTag); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_servers_store_v1_worker_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ApiTag); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_servers_store_v1_worker_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ConfigTag); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_servers_store_v1_worker_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*WorkerStorageBucketCredentialState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_servers_store_v1_worker_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*WorkerSessionInfoRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/server/store/worker_auth.pb.go b/internal/server/store/worker_auth.pb.go index ef7c817bba..047bf2294b 100644 --- a/internal/server/store/worker_auth.pb.go +++ b/internal/server/store/worker_auth.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/servers/store/v1/worker_auth.proto @@ -28,10 +28,7 @@ const ( // WorkerAuth contains all fields related to an authorized Worker resource type WorkerAuth struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The key id for this worker auth record, generated from the signing pub key // @inject_tag: `gorm:"primary_key"` WorkerKeyIdentifier string `protobuf:"bytes,10,opt,name=worker_key_identifier,json=workerKeyIdentifier,proto3" json:"worker_key_identifier,omitempty" gorm:"primary_key"` @@ -67,16 +64,16 @@ type WorkerAuth struct { // State of the worker auth record. // The only valid value is either current or previous // @inject_tag: `gorm:"not_null"` - State string `protobuf:"bytes,100,opt,name=state,proto3" json:"state,omitempty" gorm:"not_null"` + State string `protobuf:"bytes,100,opt,name=state,proto3" json:"state,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkerAuth) Reset() { *x = WorkerAuth{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_servers_store_v1_worker_auth_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_servers_store_v1_worker_auth_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WorkerAuth) String() string { @@ -87,7 +84,7 @@ func (*WorkerAuth) ProtoMessage() {} func (x *WorkerAuth) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_servers_store_v1_worker_auth_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -181,10 +178,7 @@ func (x *WorkerAuth) GetState() string { // WorkerCertBundle contains all fields related to a WorkerCertBundle resource type WorkerCertBundle struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The public key of the issuing root certificate // @inject_tag: `gorm:"primary_key"` RootCertificatePublicKey []byte `protobuf:"bytes,10,opt,name=root_certificate_public_key,json=rootCertificatePublicKey,proto3" json:"root_certificate_public_key,omitempty" gorm:"primary_key"` @@ -193,16 +187,16 @@ type WorkerCertBundle struct { WorkerKeyIdentifier string `protobuf:"bytes,20,opt,name=worker_key_identifier,json=workerKeyIdentifier,proto3" json:"worker_key_identifier,omitempty" gorm:"primary_key"` // CertBundle is the marshaled protobuf certificate bundle for a WorkerAuth // @inject_tag: `gorm:"not_null"` - CertBundle []byte `protobuf:"bytes,30,opt,name=cert_bundle,json=certBundle,proto3" json:"cert_bundle,omitempty" gorm:"not_null"` + CertBundle []byte `protobuf:"bytes,30,opt,name=cert_bundle,json=certBundle,proto3" json:"cert_bundle,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkerCertBundle) Reset() { *x = WorkerCertBundle{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_servers_store_v1_worker_auth_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_servers_store_v1_worker_auth_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WorkerCertBundle) String() string { @@ -213,7 +207,7 @@ func (*WorkerCertBundle) ProtoMessage() {} func (x *WorkerCertBundle) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_servers_store_v1_worker_auth_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -252,10 +246,7 @@ func (x *WorkerCertBundle) GetCertBundle() []byte { // WorkerAuthServerLedActivationToken contains all fields related to a // WorkerAuthServerLedActivationToken resource type WorkerAuthServerLedActivationToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The worker_id of the worker that this activates // @inject_tag: `gorm:"primary_key"` WorkerId string `protobuf:"bytes,10,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty" gorm:"primary_key"` @@ -272,16 +263,16 @@ type WorkerAuthServerLedActivationToken struct { CreationTime []byte `protobuf:"bytes,21,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty" gorm:"-" wrapping:"pt,creation_time_data"` // The key ID of the encrypting key // @inject_tag: `gorm:"not_null"` - KeyId string `protobuf:"bytes,40,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + KeyId string `protobuf:"bytes,40,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkerAuthServerLedActivationToken) Reset() { *x = WorkerAuthServerLedActivationToken{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_servers_store_v1_worker_auth_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_servers_store_v1_worker_auth_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WorkerAuthServerLedActivationToken) String() string { @@ -292,7 +283,7 @@ func (*WorkerAuthServerLedActivationToken) ProtoMessage() {} func (x *WorkerAuthServerLedActivationToken) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_servers_store_v1_worker_auth_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -454,44 +445,6 @@ func file_controller_storage_servers_store_v1_worker_auth_proto_init() { if File_controller_storage_servers_store_v1_worker_auth_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_servers_store_v1_worker_auth_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*WorkerAuth); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_servers_store_v1_worker_auth_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*WorkerCertBundle); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_servers_store_v1_worker_auth_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*WorkerAuthServerLedActivationToken); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/storage/plugin/store/storage.pb.go b/internal/storage/plugin/store/storage.pb.go index b885bfea7d..90a6056f9b 100644 --- a/internal/storage/plugin/store/storage.pb.go +++ b/internal/storage/plugin/store/storage.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/storage/plugin/store/v1/storage.proto @@ -29,10 +29,7 @@ const ( ) type StorageBucket struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PublicId string `protobuf:"bytes,1,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -73,15 +70,15 @@ type StorageBucket struct { // storage_bucket_credential_id is the private key of the storage bucket credential. // @inject_tag: `gorm:"default:null"` StorageBucketCredentialId string `protobuf:"bytes,14,opt,name=storage_bucket_credential_id,json=storageBucketCredentialId,proto3" json:"storage_bucket_credential_id,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StorageBucket) Reset() { *x = StorageBucket{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StorageBucket) String() string { @@ -92,7 +89,7 @@ func (*StorageBucket) ProtoMessage() {} func (x *StorageBucket) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -206,25 +203,22 @@ func (x *StorageBucket) GetStorageBucketCredentialId() string { } type StorageBucketCredential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is a surrogate key suitable for use via API. // @inject_tag: `gorm:"primary_key"` PrivateId string `protobuf:"bytes,1,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` // storage_bucket_id is the public id of the storage bucket. // @inject_tag: `gorm:"not_null"` StorageBucketId string `protobuf:"bytes,2,opt,name=storage_bucket_id,json=storageBucketId,proto3" json:"storage_bucket_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StorageBucketCredential) Reset() { *x = StorageBucketCredential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StorageBucketCredential) String() string { @@ -235,7 +229,7 @@ func (*StorageBucketCredential) ProtoMessage() {} func (x *StorageBucketCredential) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -265,25 +259,22 @@ func (x *StorageBucketCredential) GetStorageBucketId() string { } type StorageBucketCredentialEnvironmental struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is a surrogate key suitable for use in a public API. // @inject_tag: `gorm:"primary_key"` PrivateId string `protobuf:"bytes,1,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` // storage_bucket_id is the public id of the storage bucket. // @inject_tag: `gorm:"not_null"` StorageBucketId string `protobuf:"bytes,2,opt,name=storage_bucket_id,json=storageBucketId,proto3" json:"storage_bucket_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StorageBucketCredentialEnvironmental) Reset() { *x = StorageBucketCredentialEnvironmental{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StorageBucketCredentialEnvironmental) String() string { @@ -294,7 +285,7 @@ func (*StorageBucketCredentialEnvironmental) ProtoMessage() {} func (x *StorageBucketCredentialEnvironmental) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -324,10 +315,7 @@ func (x *StorageBucketCredentialEnvironmental) GetStorageBucketId() string { } type StorageBucketCredentialManagedSecret struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // private_id is a surrogate key suitable for use via API. // @inject_tag: `gorm:"primary_key"` PrivateId string `protobuf:"bytes,1,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` @@ -344,16 +332,16 @@ type StorageBucketCredentialManagedSecret struct { // The key_id of the kms database key used for encrypting this entry. // It must be set. // @inject_tag: `gorm:"not_null"` - KeyId string `protobuf:"bytes,5,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + KeyId string `protobuf:"bytes,5,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StorageBucketCredentialManagedSecret) Reset() { *x = StorageBucketCredentialManagedSecret{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StorageBucketCredentialManagedSecret) String() string { @@ -364,7 +352,7 @@ func (*StorageBucketCredentialManagedSecret) ProtoMessage() {} func (x *StorageBucketCredentialManagedSecret) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -539,56 +527,6 @@ func file_controller_storage_storage_plugin_store_v1_storage_proto_init() { if File_controller_storage_storage_plugin_store_v1_storage_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*StorageBucket); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*StorageBucketCredential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*StorageBucketCredentialEnvironmental); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_storage_plugin_store_v1_storage_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*StorageBucketCredentialManagedSecret); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/target/store/target.pb.go b/internal/target/store/target.pb.go index bf7c855a69..b22bf43449 100644 --- a/internal/target/store/target.pb.go +++ b/internal/target/store/target.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/target/store/v1/target.proto @@ -27,10 +27,7 @@ const ( // TargetView is a view that contains all the target subtypes type TargetView struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is used to access the Target via an API // @inject_tag: gorm:"primary_key" PublicId string `protobuf:"bytes,10,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -82,15 +79,15 @@ type TargetView struct { // PublicId of the storage bucket associated with the target // @inject_tag: `gorm:"default:null"` StorageBucketId string `protobuf:"bytes,160,opt,name=storage_bucket_id,json=storageBucketId,proto3" json:"storage_bucket_id,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TargetView) Reset() { *x = TargetView{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TargetView) String() string { @@ -101,7 +98,7 @@ func (*TargetView) ProtoMessage() {} func (x *TargetView) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -236,10 +233,7 @@ func (x *TargetView) GetStorageBucketId() string { } type TargetHostSet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // target_id of the TargetHostSet // @inject_tag: gorm:"primary_key" TargetId string `protobuf:"bytes,10,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty" gorm:"primary_key"` @@ -248,16 +242,16 @@ type TargetHostSet struct { HostSetId string `protobuf:"bytes,20,opt,name=host_set_id,json=hostSetId,proto3" json:"host_set_id,omitempty" gorm:"primary_key"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TargetHostSet) Reset() { *x = TargetHostSet{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TargetHostSet) String() string { @@ -268,7 +262,7 @@ func (*TargetHostSet) ProtoMessage() {} func (x *TargetHostSet) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -305,25 +299,22 @@ func (x *TargetHostSet) GetCreateTime() *timestamp.Timestamp { } type TargetAddress struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // target_id of the Target // @inject_tag: gorm:"primary_key" TargetId string `protobuf:"bytes,10,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty" gorm:"primary_key"` // address associated to the Target // @inject_tag: `gorm:"not_null"` - Address string `protobuf:"bytes,20,opt,name=address,proto3" json:"address,omitempty" gorm:"not_null"` + Address string `protobuf:"bytes,20,opt,name=address,proto3" json:"address,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TargetAddress) Reset() { *x = TargetAddress{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TargetAddress) String() string { @@ -334,7 +325,7 @@ func (*TargetAddress) ProtoMessage() {} func (x *TargetAddress) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -364,10 +355,7 @@ func (x *TargetAddress) GetAddress() string { } type CredentialLibrary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // target_id of the Target // @inject_tag: gorm:"primary_key" TargetId string `protobuf:"bytes,10,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty" gorm:"primary_key"` @@ -379,16 +367,16 @@ type CredentialLibrary struct { CredentialPurpose string `protobuf:"bytes,30,opt,name=credential_purpose,json=credentialPurpose,proto3" json:"credential_purpose,omitempty" gorm:"primary_key"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,40,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,40,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CredentialLibrary) Reset() { *x = CredentialLibrary{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CredentialLibrary) String() string { @@ -399,7 +387,7 @@ func (*CredentialLibrary) ProtoMessage() {} func (x *CredentialLibrary) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -443,10 +431,7 @@ func (x *CredentialLibrary) GetCreateTime() *timestamp.Timestamp { } type StaticCredential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // target_id of the Target // @inject_tag: gorm:"primary_key" TargetId string `protobuf:"bytes,10,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty" gorm:"primary_key"` @@ -458,16 +443,16 @@ type StaticCredential struct { CredentialPurpose string `protobuf:"bytes,30,opt,name=credential_purpose,json=credentialPurpose,proto3" json:"credential_purpose,omitempty" gorm:"primary_key"` // create_time from the RDBMS // @inject_tag: `gorm:"default:current_timestamp"` - CreateTime *timestamp.Timestamp `protobuf:"bytes,40,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,40,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StaticCredential) Reset() { *x = StaticCredential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StaticCredential) String() string { @@ -478,7 +463,7 @@ func (*StaticCredential) ProtoMessage() {} func (x *StaticCredential) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -522,10 +507,7 @@ func (x *StaticCredential) GetCreateTime() *timestamp.Timestamp { } type CredentialSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // target_id of the Target // @inject_tag: gorm:"primary_key" TargetId string `protobuf:"bytes,10,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty" gorm:"primary_key"` @@ -540,16 +522,16 @@ type CredentialSource struct { CreateTime *timestamp.Timestamp `protobuf:"bytes,40,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` // type of credential source (library or static) // @inject_tag: `gorm:"not_null"` - Type string `protobuf:"bytes,50,opt,name=type,proto3" json:"type,omitempty" gorm:"not_null"` + Type string `protobuf:"bytes,50,opt,name=type,proto3" json:"type,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CredentialSource) Reset() { *x = CredentialSource{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CredentialSource) String() string { @@ -560,7 +542,7 @@ func (*CredentialSource) ProtoMessage() {} func (x *CredentialSource) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -611,25 +593,22 @@ func (x *CredentialSource) GetType() string { } type CredentialSourceView struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id of the Credential source // @inject_tag: gorm:"primary_key" PublicId string `protobuf:"bytes,10,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` // type of credential source (library or static) // @inject_tag: `gorm:"not_null"` - Type string `protobuf:"bytes,20,opt,name=type,proto3" json:"type,omitempty" gorm:"not_null"` + Type string `protobuf:"bytes,20,opt,name=type,proto3" json:"type,omitempty" gorm:"not_null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CredentialSourceView) Reset() { *x = CredentialSourceView{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CredentialSourceView) String() string { @@ -640,7 +619,7 @@ func (*CredentialSourceView) ProtoMessage() {} func (x *CredentialSourceView) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_target_store_v1_target_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -843,92 +822,6 @@ func file_controller_storage_target_store_v1_target_proto_init() { if File_controller_storage_target_store_v1_target_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_target_store_v1_target_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*TargetView); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_target_store_v1_target_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*TargetHostSet); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_target_store_v1_target_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*TargetAddress); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_target_store_v1_target_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*CredentialLibrary); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_target_store_v1_target_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*StaticCredential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_target_store_v1_target_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CredentialSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_storage_target_store_v1_target_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*CredentialSourceView); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/target/targettest/store/target.pb.go b/internal/target/targettest/store/target.pb.go index 0ef64d7fc8..89c81275ab 100644 --- a/internal/target/targettest/store/target.pb.go +++ b/internal/target/targettest/store/target.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/target/targettest/store/v1/target.proto @@ -26,10 +26,7 @@ const ( ) type Target struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is used to access the targettest.Target via an API // @inject_tag: gorm:"primary_key" PublicId string `protobuf:"bytes,10,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -74,15 +71,15 @@ type Target struct { // A boolean expression that allows filtering the ingress workers that can handle a session // @inject_tag: `gorm:"default:null"` IngressWorkerFilter string `protobuf:"bytes,140,opt,name=ingress_worker_filter,json=ingressWorkerFilter,proto3" json:"ingress_worker_filter,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Target) Reset() { *x = Target{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_target_targettest_store_v1_target_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_target_targettest_store_v1_target_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Target) String() string { @@ -93,7 +90,7 @@ func (*Target) ProtoMessage() {} func (x *Target) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_target_targettest_store_v1_target_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -325,20 +322,6 @@ func file_controller_storage_target_targettest_store_v1_target_proto_init() { if File_controller_storage_target_targettest_store_v1_target_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_target_targettest_store_v1_target_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Target); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/internal/target/tcp/store/target.pb.go b/internal/target/tcp/store/target.pb.go index c3ced4edac..1445363c37 100644 --- a/internal/target/tcp/store/target.pb.go +++ b/internal/target/tcp/store/target.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/storage/target/tcp/store/v1/target.proto @@ -26,10 +26,7 @@ const ( ) type Target struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // public_id is used to access the tcp.Target via an API // @inject_tag: gorm:"primary_key" PublicId string `protobuf:"bytes,10,opt,name=public_id,json=publicId,proto3" json:"public_id,omitempty" gorm:"primary_key"` @@ -74,15 +71,15 @@ type Target struct { // A boolean expression that allows filtering the ingress workers that can handle a session // @inject_tag: `gorm:"default:null"` IngressWorkerFilter string `protobuf:"bytes,140,opt,name=ingress_worker_filter,json=ingressWorkerFilter,proto3" json:"ingress_worker_filter,omitempty" gorm:"default:null"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Target) Reset() { *x = Target{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_storage_target_tcp_store_v1_target_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_storage_target_tcp_store_v1_target_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Target) String() string { @@ -93,7 +90,7 @@ func (*Target) ProtoMessage() {} func (x *Target) ProtoReflect() protoreflect.Message { mi := &file_controller_storage_target_tcp_store_v1_target_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -323,20 +320,6 @@ func file_controller_storage_target_tcp_store_v1_target_proto_init() { if File_controller_storage_target_tcp_store_v1_target_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_storage_target_tcp_store_v1_target_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Target); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/plugins/boundary/mains/aws/go.mod b/plugins/boundary/mains/aws/go.mod index 050f1f5615..685ed14e7b 100644 --- a/plugins/boundary/mains/aws/go.mod +++ b/plugins/boundary/mains/aws/go.mod @@ -39,7 +39,7 @@ require ( github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-plugin v1.6.2 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-secure-stdlib/awsutil/v2 v2.1.0 // indirect github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect github.com/hashicorp/go-secure-stdlib/pluginutil/v2 v2.0.7 // indirect @@ -55,13 +55,13 @@ require ( github.com/oklog/run v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/stretchr/testify v1.10.0 // indirect - golang.org/x/crypto v0.31.0 // indirect - golang.org/x/net v0.33.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect google.golang.org/grpc v1.68.0 // indirect - google.golang.org/protobuf v1.35.2 // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/plugins/boundary/mains/aws/go.sum b/plugins/boundary/mains/aws/go.sum index a6f24e7ef2..01ac57d3c0 100644 --- a/plugins/boundary/mains/aws/go.sum +++ b/plugins/boundary/mains/aws/go.sum @@ -86,8 +86,8 @@ github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 h1:WZeXfD26QMWYC35at25KgE021SF9L github.com/hashicorp/go-kms-wrapping/v2 v2.0.16/go.mod h1:ZiKZctjRTLEppuRwrttWkp71VYMbTTCkazK4xT7U/NQ= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog= -github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-secure-stdlib/awsutil/v2 v2.1.0 h1:V3TJFolOHYSDqQLbTUBygXtbX4jKXyBcDoU+KNZE1Ak= github.com/hashicorp/go-secure-stdlib/awsutil/v2 v2.1.0/go.mod h1:OeRwM2eWNW62L1Z+8GvoZM5nQJMRWBewHSoo77qmb4Y= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 h1:ET4pqyjiGmY09R5y+rSd70J2w45CtbWDNvGqWp/R3Ng= @@ -167,10 +167,10 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -178,8 +178,8 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38 h1:2oV8dfuIkM1Ti7DwXc0BJfnwr9csz4TDXI9EmiI+Rbw= @@ -188,8 +188,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= -google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= -google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/plugins/boundary/mains/azure/go.mod b/plugins/boundary/mains/azure/go.mod index 6d82b511ab..f42f1959ed 100644 --- a/plugins/boundary/mains/azure/go.mod +++ b/plugins/boundary/mains/azure/go.mod @@ -31,7 +31,7 @@ require ( github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect github.com/hashicorp/go-secure-stdlib/pluginutil/v2 v2.0.6 // indirect @@ -43,7 +43,6 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/pointerstructure v1.2.1 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect @@ -51,14 +50,14 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/stretchr/testify v1.8.4 // indirect - golang.org/x/crypto v0.31.0 // indirect - golang.org/x/net v0.33.0 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/net v0.34.0 // indirect golang.org/x/oauth2 v0.11.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/plugins/boundary/mains/azure/go.sum b/plugins/boundary/mains/azure/go.sum index 716ddc917e..c5526c9978 100644 --- a/plugins/boundary/mains/azure/go.sum +++ b/plugins/boundary/mains/azure/go.sum @@ -177,8 +177,8 @@ github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 h1:WZeXfD26QMWYC35at25KgE021SF9L github.com/hashicorp/go-kms-wrapping/v2 v2.0.16/go.mod h1:ZiKZctjRTLEppuRwrttWkp71VYMbTTCkazK4xT7U/NQ= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= -github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= @@ -250,8 +250,6 @@ github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa1 github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -304,8 +302,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= 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= @@ -368,8 +366,8 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= 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= @@ -422,8 +420,8 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 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= @@ -565,8 +563,8 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= 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.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= diff --git a/plugins/boundary/mains/gcp/go.mod b/plugins/boundary/mains/gcp/go.mod index ca3e649152..f62e2a4c08 100644 --- a/plugins/boundary/mains/gcp/go.mod +++ b/plugins/boundary/mains/gcp/go.mod @@ -32,7 +32,7 @@ require ( github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect github.com/hashicorp/go-secure-stdlib/pluginutil/v2 v2.0.6 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect @@ -40,7 +40,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.19 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/pointerstructure v1.2.1 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect @@ -53,11 +52,11 @@ require ( go.opentelemetry.io/otel v1.29.0 // indirect go.opentelemetry.io/otel/metric v1.29.0 // indirect go.opentelemetry.io/otel/trace v1.29.0 // indirect - golang.org/x/crypto v0.31.0 // indirect - golang.org/x/net v0.33.0 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/net v0.34.0 // indirect golang.org/x/oauth2 v0.22.0 // indirect golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.6.0 // indirect google.golang.org/api v0.196.0 // indirect @@ -65,6 +64,6 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/grpc v1.66.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/plugins/boundary/mains/gcp/go.sum b/plugins/boundary/mains/gcp/go.sum index e1a9ada79e..3346a5ce88 100644 --- a/plugins/boundary/mains/gcp/go.sum +++ b/plugins/boundary/mains/gcp/go.sum @@ -105,8 +105,8 @@ github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 h1:WZeXfD26QMWYC35at25KgE021SF9L github.com/hashicorp/go-kms-wrapping/v2 v2.0.16/go.mod h1:ZiKZctjRTLEppuRwrttWkp71VYMbTTCkazK4xT7U/NQ= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= -github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-secure-stdlib/base62 v0.1.1/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 h1:ET4pqyjiGmY09R5y+rSd70J2w45CtbWDNvGqWp/R3Ng= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= @@ -163,8 +163,6 @@ github.com/mitchellh/cli v1.1.5 h1:OxRIeJXpAMztws/XHlN2vu6imG5Dpq+j61AzAX5fLng= github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -220,8 +218,8 @@ go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -239,8 +237,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -261,8 +259,8 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= @@ -311,8 +309,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= diff --git a/plugins/boundary/mains/minio/go.mod b/plugins/boundary/mains/minio/go.mod index 7675fe0070..82d0fffdbe 100644 --- a/plugins/boundary/mains/minio/go.mod +++ b/plugins/boundary/mains/minio/go.mod @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect github.com/hashicorp/go-secure-stdlib/pluginutil/v2 v2.0.6 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect @@ -34,7 +34,6 @@ require ( github.com/minio/md5-simd v1.1.2 // indirect github.com/minio/minio-go/v7 v7.0.83 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/pointerstructure v1.2.1 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect @@ -44,13 +43,13 @@ require ( github.com/secure-io/sio-go v0.3.1 // indirect github.com/stretchr/testify v1.9.0 // indirect golang.org/x/crypto v0.32.0 // indirect - golang.org/x/net v0.33.0 // indirect + golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect google.golang.org/grpc v1.61.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/plugins/boundary/mains/minio/go.sum b/plugins/boundary/mains/minio/go.sum index f70e15c8d9..c59c7bd7d1 100644 --- a/plugins/boundary/mains/minio/go.sum +++ b/plugins/boundary/mains/minio/go.sum @@ -79,8 +79,8 @@ github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 h1:WZeXfD26QMWYC35at25KgE021SF9L github.com/hashicorp/go-kms-wrapping/v2 v2.0.16/go.mod h1:ZiKZctjRTLEppuRwrttWkp71VYMbTTCkazK4xT7U/NQ= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= -github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-secure-stdlib/base62 v0.1.1/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 h1:ET4pqyjiGmY09R5y+rSd70J2w45CtbWDNvGqWp/R3Ng= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= @@ -146,8 +146,6 @@ github.com/mitchellh/cli v1.1.5 h1:OxRIeJXpAMztws/XHlN2vu6imG5Dpq+j61AzAX5fLng= github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -222,8 +220,8 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -263,8 +261,8 @@ google.golang.org/grpc v1.61.0 h1:TOvOcuXn30kRao+gfcvsebNEa5iZIiLkisYEkf7R7o0= google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= 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.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/plugins/kms/mains/alicloudkms/go.mod b/plugins/kms/mains/alicloudkms/go.mod index ab4adde5d5..866125a5c1 100644 --- a/plugins/kms/mains/alicloudkms/go.mod +++ b/plugins/kms/mains/alicloudkms/go.mod @@ -14,7 +14,7 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 // indirect - github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/yamux v0.1.1 // indirect @@ -22,7 +22,6 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.17 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/oklog/run v1.1.0 // indirect @@ -30,12 +29,12 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/stretchr/testify v1.8.4 // indirect - golang.org/x/net v0.33.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/plugins/kms/mains/alicloudkms/go.sum b/plugins/kms/mains/alicloudkms/go.sum index 059fa18038..5aa8be765b 100644 --- a/plugins/kms/mains/alicloudkms/go.sum +++ b/plugins/kms/mains/alicloudkms/go.sum @@ -24,8 +24,8 @@ github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 h1:WZeXfD26QMWYC35at25KgE021SF9L github.com/hashicorp/go-kms-wrapping/v2 v2.0.16/go.mod h1:ZiKZctjRTLEppuRwrttWkp71VYMbTTCkazK4xT7U/NQ= github.com/hashicorp/go-kms-wrapping/wrappers/alicloudkms/v2 v2.0.3 h1:36Pxy8BQd7DAJ2Mk6vuJlIjqQ80e20vlO7a4Ep3RTOg= github.com/hashicorp/go-kms-wrapping/wrappers/alicloudkms/v2 v2.0.3/go.mod h1:heY2PS1SGU0cMamgv+zId/sKT+XFHaf61bLOSnP1Gb8= -github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= -github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 h1:ET4pqyjiGmY09R5y+rSd70J2w45CtbWDNvGqWp/R3Ng= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -59,8 +59,6 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -90,16 +88,16 @@ github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVK github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -109,8 +107,8 @@ google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= 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.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= diff --git a/plugins/kms/mains/awskms/go.mod b/plugins/kms/mains/awskms/go.mod index aa4d3f3eaa..027b8c6fe6 100644 --- a/plugins/kms/mains/awskms/go.mod +++ b/plugins/kms/mains/awskms/go.mod @@ -17,7 +17,7 @@ require ( github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-secure-stdlib/awsutil v0.1.6 // indirect github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect @@ -25,17 +25,16 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.17 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/oklog/run v1.1.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/stretchr/testify v1.8.4 // indirect - golang.org/x/net v0.33.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/plugins/kms/mains/awskms/go.sum b/plugins/kms/mains/awskms/go.sum index fcf6d06d00..92abe7a60b 100644 --- a/plugins/kms/mains/awskms/go.sum +++ b/plugins/kms/mains/awskms/go.sum @@ -34,8 +34,8 @@ github.com/hashicorp/go-kms-wrapping/wrappers/awskms/v2 v2.0.10 h1:YOSmJpqZt2X3K github.com/hashicorp/go-kms-wrapping/wrappers/awskms/v2 v2.0.10/go.mod h1:eX4b0InOUfJ3NjfNWlJruBDT3rHXxOVw+7qNFmtjNbo= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= -github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-secure-stdlib/awsutil v0.1.6 h1:W9WN8p6moV1fjKLkeqEgkAMu5rauy9QeYDAmIaPuuiA= github.com/hashicorp/go-secure-stdlib/awsutil v0.1.6/go.mod h1:MpCPSPGLDILGb4JMm94/mMi3YysIqsXzGCzkEZjcjXg= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 h1:ET4pqyjiGmY09R5y+rSd70J2w45CtbWDNvGqWp/R3Ng= @@ -72,8 +72,6 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= @@ -92,8 +90,8 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -104,8 +102,8 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/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-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= @@ -116,8 +114,8 @@ google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= 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.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= diff --git a/plugins/kms/mains/azurekeyvault/go.mod b/plugins/kms/mains/azurekeyvault/go.mod index 7801deec6e..b78072b2fa 100644 --- a/plugins/kms/mains/azurekeyvault/go.mod +++ b/plugins/kms/mains/azurekeyvault/go.mod @@ -29,24 +29,23 @@ require ( github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 // indirect - github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.19 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/oklog/run v1.1.0 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/stretchr/testify v1.9.0 // indirect - golang.org/x/crypto v0.31.0 // indirect - golang.org/x/net v0.33.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/plugins/kms/mains/azurekeyvault/go.sum b/plugins/kms/mains/azurekeyvault/go.sum index 7895cd84e6..40e6a45de2 100644 --- a/plugins/kms/mains/azurekeyvault/go.sum +++ b/plugins/kms/mains/azurekeyvault/go.sum @@ -66,8 +66,8 @@ github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 h1:WZeXfD26QMWYC35at25KgE021SF9L github.com/hashicorp/go-kms-wrapping/v2 v2.0.16/go.mod h1:ZiKZctjRTLEppuRwrttWkp71VYMbTTCkazK4xT7U/NQ= github.com/hashicorp/go-kms-wrapping/wrappers/azurekeyvault/v2 v2.0.11 h1:/7SKkYIhA8cr3l8m1EKT6Q90bPoSVqqVBuQ6HgoMIkw= github.com/hashicorp/go-kms-wrapping/wrappers/azurekeyvault/v2 v2.0.11/go.mod h1:LepS5s6ESGE0qQMpYaui5lX+mQYeiYiy06VzwWRioO8= -github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= -github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 h1:ET4pqyjiGmY09R5y+rSd70J2w45CtbWDNvGqWp/R3Ng= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -94,8 +94,6 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k 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/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= @@ -120,16 +118,16 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk 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.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 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.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -147,8 +145,8 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= @@ -170,8 +168,8 @@ google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= 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.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/plugins/kms/mains/gcpckms/go.mod b/plugins/kms/mains/gcpckms/go.mod index 79f6ecf670..02e312d60b 100644 --- a/plugins/kms/mains/gcpckms/go.mod +++ b/plugins/kms/mains/gcpckms/go.mod @@ -21,23 +21,22 @@ require ( github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 // indirect - github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.17 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/oklog/run v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/stretchr/testify v1.8.4 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.31.0 // indirect - golang.org/x/net v0.33.0 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/net v0.34.0 // indirect golang.org/x/oauth2 v0.13.0 // indirect golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/api v0.149.0 // indirect google.golang.org/appengine v1.6.7 // indirect @@ -45,6 +44,6 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/plugins/kms/mains/gcpckms/go.sum b/plugins/kms/mains/gcpckms/go.sum index d2f9d2a16c..df19507be5 100644 --- a/plugins/kms/mains/gcpckms/go.sum +++ b/plugins/kms/mains/gcpckms/go.sum @@ -67,8 +67,8 @@ github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 h1:WZeXfD26QMWYC35at25KgE021SF9L github.com/hashicorp/go-kms-wrapping/v2 v2.0.16/go.mod h1:ZiKZctjRTLEppuRwrttWkp71VYMbTTCkazK4xT7U/NQ= github.com/hashicorp/go-kms-wrapping/wrappers/gcpckms/v2 v2.0.12 h1:PCqWzT/Hii0KL07JsBZ3lJbv/wx02IAHYlhWQq8rxRY= github.com/hashicorp/go-kms-wrapping/wrappers/gcpckms/v2 v2.0.12/go.mod h1:HSaOaX/lv3ShCdilUYbOTPnSvmoZ9xtQhgw+8hYcZkg= -github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= -github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 h1:ET4pqyjiGmY09R5y+rSd70J2w45CtbWDNvGqWp/R3Ng= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -94,8 +94,6 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= @@ -117,8 +115,8 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -130,8 +128,8 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= @@ -150,8 +148,8 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/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-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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= @@ -196,8 +194,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= 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.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= diff --git a/plugins/kms/mains/ocikms/go.mod b/plugins/kms/mains/ocikms/go.mod index 5c55ec3069..3bdec952a1 100644 --- a/plugins/kms/mains/ocikms/go.mod +++ b/plugins/kms/mains/ocikms/go.mod @@ -13,24 +13,23 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 // indirect - github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.17 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/oklog/run v1.1.0 // indirect github.com/oracle/oci-go-sdk/v60 v60.0.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/sony/gobreaker v0.5.0 // indirect github.com/stretchr/testify v1.8.4 // indirect - golang.org/x/net v0.33.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/plugins/kms/mains/ocikms/go.sum b/plugins/kms/mains/ocikms/go.sum index a42fa4097b..640f949c91 100644 --- a/plugins/kms/mains/ocikms/go.sum +++ b/plugins/kms/mains/ocikms/go.sum @@ -20,8 +20,8 @@ github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 h1:WZeXfD26QMWYC35at25KgE021SF9L github.com/hashicorp/go-kms-wrapping/v2 v2.0.16/go.mod h1:ZiKZctjRTLEppuRwrttWkp71VYMbTTCkazK4xT7U/NQ= github.com/hashicorp/go-kms-wrapping/wrappers/ocikms/v2 v2.0.8 h1:F2RNYvXq9yJKbXRxfHBSzOCx0YxRdkaQ8qu0EECeu5U= github.com/hashicorp/go-kms-wrapping/wrappers/ocikms/v2 v2.0.8/go.mod h1:ULlMyM1QKNuq1JIENcNCRAkgo/RYxxCkm26pjR6w/ko= -github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= -github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 h1:ET4pqyjiGmY09R5y+rSd70J2w45CtbWDNvGqWp/R3Ng= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -47,8 +47,6 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/oracle/oci-go-sdk/v60 v60.0.0 h1:EJAWjEi4SY5Raha6iUzq4LTQ0uM5YFw/wat/L1ehIEM= @@ -69,16 +67,16 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -88,8 +86,8 @@ google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= 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.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= diff --git a/plugins/kms/mains/transit/go.mod b/plugins/kms/mains/transit/go.mod index 3961f26c4c..1ef9dd5446 100644 --- a/plugins/kms/mains/transit/go.mod +++ b/plugins/kms/mains/transit/go.mod @@ -18,7 +18,7 @@ require ( github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect @@ -32,19 +32,18 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/oklog/run v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/stretchr/testify v1.8.4 // indirect - golang.org/x/crypto v0.31.0 // indirect - golang.org/x/net v0.33.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.3.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/plugins/kms/mains/transit/go.sum b/plugins/kms/mains/transit/go.sum index cd165dab60..61357cc058 100644 --- a/plugins/kms/mains/transit/go.sum +++ b/plugins/kms/mains/transit/go.sum @@ -37,8 +37,8 @@ github.com/hashicorp/go-kms-wrapping/wrappers/transit/v2 v2.0.12/go.mod h1:YRqgu github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= -github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= @@ -82,8 +82,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -107,8 +105,8 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= 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/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -116,8 +114,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v 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.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -137,8 +135,8 @@ 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.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= @@ -166,8 +164,8 @@ google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= 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.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/sdk/go.mod b/sdk/go.mod index 218a1cd305..a09d4217ae 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -7,31 +7,23 @@ require ( github.com/hashicorp/eventlogger v0.2.6-0.20231025104552-802587e608f0 github.com/hashicorp/eventlogger/filters/encrypt v0.1.8-0.20231025104552-802587e608f0 github.com/hashicorp/go-hclog v1.5.0 - github.com/hashicorp/go-plugin v1.5.2 + github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 + github.com/hashicorp/go-plugin v1.6.3 + github.com/hashicorp/go-secure-stdlib/configutil/v2 v2.0.11 github.com/hashicorp/go-secure-stdlib/pluginutil/v2 v2.0.6 github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 + github.com/hashicorp/hcl v1.0.0 github.com/stretchr/testify v1.8.4 google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe google.golang.org/grpc v1.61.0 - google.golang.org/protobuf v1.34.2 + google.golang.org/protobuf v1.36.1 nhooyr.io/websocket v1.8.10 ) require ( + github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.2.0 // indirect github.com/Masterminds/sprig/v3 v3.2.3 // indirect - github.com/hashicorp/go-kms-wrapping/plugin/v2 v2.0.7 // indirect - github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect - github.com/rogpeppe/go-internal v1.9.0 // indirect - github.com/shopspring/decimal v1.3.1 // indirect - github.com/spf13/cast v1.5.0 // indirect - go.uber.org/goleak v1.1.12 // indirect - google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect -) - -require ( - github.com/Masterminds/goutils v1.1.1 // indirect github.com/armon/go-radix v1.0.0 // indirect github.com/bgentry/speakeasy v0.1.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -39,16 +31,15 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/google/uuid v1.4.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect - github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 + github.com/hashicorp/go-kms-wrapping/plugin/v2 v2.0.7 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-secure-stdlib/configutil/v2 v2.0.11 + github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect github.com/hashicorp/go-secure-stdlib/listenerutil v0.1.9 // indirect github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 // indirect github.com/hashicorp/go-secure-stdlib/reloadutil v0.1.1 // indirect github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.3 // indirect github.com/hashicorp/go-sockaddr v1.0.5 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect - github.com/hashicorp/hcl v1.0.0 github.com/hashicorp/yamux v0.1.1 // indirect github.com/huandu/xstrings v1.4.0 // indirect github.com/imdario/mergo v0.3.13 // indirect @@ -57,17 +48,22 @@ require ( github.com/mattn/go-isatty v0.0.19 // indirect github.com/mitchellh/cli v1.1.5 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/pointerstructure v1.2.1 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/oklog/run v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/posener/complete v1.2.3 // indirect + github.com/rogpeppe/go-internal v1.9.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect - golang.org/x/crypto v0.31.0 // indirect - golang.org/x/net v0.33.0 // indirect - golang.org/x/sys v0.28.0 // indirect + github.com/shopspring/decimal v1.3.1 // indirect + github.com/spf13/cast v1.5.0 // indirect + go.uber.org/goleak v1.1.12 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/sdk/go.sum b/sdk/go.sum index f7a179232a..a03b3f4df5 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -54,8 +54,8 @@ github.com/hashicorp/go-kms-wrapping/v2 v2.0.16/go.mod h1:ZiKZctjRTLEppuRwrttWkp github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= -github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-secure-stdlib/base62 v0.1.1/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 h1:ET4pqyjiGmY09R5y+rSd70J2w45CtbWDNvGqWp/R3Ng= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= @@ -119,8 +119,6 @@ github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2c github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -169,8 +167,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= @@ -186,8 +184,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -209,8 +207,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -242,8 +240,8 @@ google.golang.org/grpc v1.61.0 h1:TOvOcuXn30kRao+gfcvsebNEa5iZIiLkisYEkf7R7o0= google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= 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.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/sdk/pbs/controller/api/resources/accounts/account.pb.go b/sdk/pbs/controller/api/resources/accounts/account.pb.go index 76fa616b39..09b3aa96b2 100644 --- a/sdk/pbs/controller/api/resources/accounts/account.pb.go +++ b/sdk/pbs/controller/api/resources/accounts/account.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/accounts/v1/account.proto @@ -33,10 +33,7 @@ const ( // Account contains all fields related to an account resource type Account struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the account. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Scope information for the account. @@ -57,7 +54,7 @@ type Account struct { Type string `protobuf:"bytes,80,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The ID of the auth method that is associated with this account. AuthMethodId string `protobuf:"bytes,90,opt,name=auth_method_id,proto3" json:"auth_method_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *Account_Attributes // *Account_PasswordAccountAttributes @@ -68,15 +65,15 @@ type Account struct { ManagedGroupIds []string `protobuf:"bytes,110,rep,name=managed_group_ids,proto3" json:"managed_group_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Account) Reset() { *x = Account{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_accounts_v1_account_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_accounts_v1_account_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Account) String() string { @@ -87,7 +84,7 @@ func (*Account) ProtoMessage() {} func (x *Account) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_accounts_v1_account_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -165,37 +162,45 @@ func (x *Account) GetAuthMethodId() string { return "" } -func (m *Account) GetAttrs() isAccount_Attrs { - if m != nil { - return m.Attrs +func (x *Account) GetAttrs() isAccount_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *Account) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*Account_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*Account_Attributes); ok { + return x.Attributes + } } return nil } func (x *Account) GetPasswordAccountAttributes() *PasswordAccountAttributes { - if x, ok := x.GetAttrs().(*Account_PasswordAccountAttributes); ok { - return x.PasswordAccountAttributes + if x != nil { + if x, ok := x.Attrs.(*Account_PasswordAccountAttributes); ok { + return x.PasswordAccountAttributes + } } return nil } func (x *Account) GetOidcAccountAttributes() *OidcAccountAttributes { - if x, ok := x.GetAttrs().(*Account_OidcAccountAttributes); ok { - return x.OidcAccountAttributes + if x != nil { + if x, ok := x.Attrs.(*Account_OidcAccountAttributes); ok { + return x.OidcAccountAttributes + } } return nil } func (x *Account) GetLdapAccountAttributes() *LdapAccountAttributes { - if x, ok := x.GetAttrs().(*Account_LdapAccountAttributes); ok { - return x.LdapAccountAttributes + if x != nil { + if x, ok := x.Attrs.(*Account_LdapAccountAttributes); ok { + return x.LdapAccountAttributes + } } return nil } @@ -245,23 +250,20 @@ func (*Account_LdapAccountAttributes) isAccount_Attrs() {} // Attributes associated only with accounts with type "password". type PasswordAccountAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The login name of this account. This is unique per auth method. LoginName string `protobuf:"bytes,10,opt,name=login_name,proto3" json:"login_name,omitempty" class:"sensitive"` // @gotags: `class:"sensitive"` // The password for this account. - Password *wrapperspb.StringValue `protobuf:"bytes,20,opt,name=password,proto3" json:"password,omitempty" class:"secret"` // @gotags: `class:"secret"` + Password *wrapperspb.StringValue `protobuf:"bytes,20,opt,name=password,proto3" json:"password,omitempty" class:"secret"` // @gotags: `class:"secret"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PasswordAccountAttributes) Reset() { *x = PasswordAccountAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_accounts_v1_account_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_accounts_v1_account_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PasswordAccountAttributes) String() string { @@ -272,7 +274,7 @@ func (*PasswordAccountAttributes) ProtoMessage() {} func (x *PasswordAccountAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_accounts_v1_account_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -303,10 +305,7 @@ func (x *PasswordAccountAttributes) GetPassword() *wrapperspb.StringValue { // Attributes associated only with accounts with type "oidc". type OidcAccountAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // issuer is a case sensitive URL that maps to the OIDC iss claim. // This value is immutable after creation time. Issuer string `protobuf:"bytes,80,opt,name=issuer,proto3" json:"issuer,omitempty" class:"public"` // @gotags: `class:"public"` @@ -321,15 +320,15 @@ type OidcAccountAttributes struct { TokenClaims *structpb.Struct `protobuf:"bytes,120,opt,name=token_claims,json=tokenClaims,proto3" json:"token_claims,omitempty"` // The marshaled claims from userinfo. UserinfoClaims *structpb.Struct `protobuf:"bytes,130,opt,name=userinfo_claims,json=userinfoClaims,proto3" json:"userinfo_claims,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OidcAccountAttributes) Reset() { *x = OidcAccountAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_accounts_v1_account_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_accounts_v1_account_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OidcAccountAttributes) String() string { @@ -340,7 +339,7 @@ func (*OidcAccountAttributes) ProtoMessage() {} func (x *OidcAccountAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_accounts_v1_account_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -399,10 +398,7 @@ func (x *OidcAccountAttributes) GetUserinfoClaims() *structpb.Struct { // Attributes associated only with accounts with type "ldap". type LdapAccountAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // login_name of the authenticated user. This is the login_name (or username) // entered by the user when authenticating (typically the uid or cn // attribute). Account login names must be lower case. @@ -424,15 +420,15 @@ type LdapAccountAttributes struct { // successful authentication. This attribute is updated every time a user // successfully authenticates. MemberOfGroups []string `protobuf:"bytes,140,rep,name=member_of_groups,json=memberOfGroups,proto3" json:"member_of_groups,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LdapAccountAttributes) Reset() { *x = LdapAccountAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_accounts_v1_account_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_accounts_v1_account_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LdapAccountAttributes) String() string { @@ -443,7 +439,7 @@ func (*LdapAccountAttributes) ProtoMessage() {} func (x *LdapAccountAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_accounts_v1_account_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -738,56 +734,6 @@ func file_controller_api_resources_accounts_v1_account_proto_init() { if File_controller_api_resources_accounts_v1_account_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_accounts_v1_account_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Account); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_accounts_v1_account_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*PasswordAccountAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_accounts_v1_account_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*OidcAccountAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_accounts_v1_account_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*LdapAccountAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_resources_accounts_v1_account_proto_msgTypes[0].OneofWrappers = []any{ (*Account_Attributes)(nil), (*Account_PasswordAccountAttributes)(nil), diff --git a/sdk/pbs/controller/api/resources/aliases/alias.pb.go b/sdk/pbs/controller/api/resources/aliases/alias.pb.go index 7eee8a73e1..cea4d49079 100644 --- a/sdk/pbs/controller/api/resources/aliases/alias.pb.go +++ b/sdk/pbs/controller/api/resources/aliases/alias.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/aliases/v1/alias.proto @@ -33,10 +33,7 @@ const ( // Alias contains all fields related to an alias resource type Alias struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the alias. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The ID of the scope of which this alias is a part. @@ -62,22 +59,22 @@ type Alias struct { DestinationId *wrapperspb.StringValue `protobuf:"bytes,100,opt,name=destination_id,proto3" json:"destination_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // type is the type of the alias. Type string `protobuf:"bytes,110,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *Alias_Attributes // *Alias_TargetAliasAttributes Attrs isAlias_Attrs `protobuf_oneof:"attrs"` // The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Alias) Reset() { *x = Alias{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_aliases_v1_alias_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_aliases_v1_alias_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Alias) String() string { @@ -88,7 +85,7 @@ func (*Alias) ProtoMessage() {} func (x *Alias) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_aliases_v1_alias_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -180,23 +177,27 @@ func (x *Alias) GetType() string { return "" } -func (m *Alias) GetAttrs() isAlias_Attrs { - if m != nil { - return m.Attrs +func (x *Alias) GetAttrs() isAlias_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *Alias) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*Alias_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*Alias_Attributes); ok { + return x.Attributes + } } return nil } func (x *Alias) GetTargetAliasAttributes() *TargetAliasAttributes { - if x, ok := x.GetAttrs().(*Alias_TargetAliasAttributes); ok { - return x.TargetAliasAttributes + if x != nil { + if x, ok := x.Attrs.(*Alias_TargetAliasAttributes); ok { + return x.TargetAliasAttributes + } } return nil } @@ -227,21 +228,18 @@ func (*Alias_TargetAliasAttributes) isAlias_Attrs() {} // Attributes associated only with aliases with type "target". type TargetAliasAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The arguments to provide to authorize_session of the target. AuthorizeSessionArguments *AuthorizeSessionArguments `protobuf:"bytes,1,opt,name=authorize_session_arguments,proto3" json:"authorize_session_arguments,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TargetAliasAttributes) Reset() { *x = TargetAliasAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_aliases_v1_alias_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_aliases_v1_alias_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TargetAliasAttributes) String() string { @@ -252,7 +250,7 @@ func (*TargetAliasAttributes) ProtoMessage() {} func (x *TargetAliasAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_aliases_v1_alias_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -275,26 +273,23 @@ func (x *TargetAliasAttributes) GetAuthorizeSessionArguments() *AuthorizeSession } type AuthorizeSessionArguments struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // host_id is the id of the host that the session will be authorized for. // When specified authorizing a session using this alias will have the same // effect of authorizing a session to the aliase's destination_id and passing // in this value through the -host-id flag. If the host-id flag is also // specified when calling authorize-session an error will be returned unless // the provided host-id matches this value. - HostId string `protobuf:"bytes,100,opt,name=host_id,proto3" json:"host_id,omitempty" class:"public"` // @gotags: `class:"public"` + HostId string `protobuf:"bytes,100,opt,name=host_id,proto3" json:"host_id,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthorizeSessionArguments) Reset() { *x = AuthorizeSessionArguments{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_aliases_v1_alias_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_aliases_v1_alias_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthorizeSessionArguments) String() string { @@ -305,7 +300,7 @@ func (*AuthorizeSessionArguments) ProtoMessage() {} func (x *AuthorizeSessionArguments) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_aliases_v1_alias_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -503,44 +498,6 @@ func file_controller_api_resources_aliases_v1_alias_proto_init() { if File_controller_api_resources_aliases_v1_alias_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_aliases_v1_alias_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Alias); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_aliases_v1_alias_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*TargetAliasAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_aliases_v1_alias_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*AuthorizeSessionArguments); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_resources_aliases_v1_alias_proto_msgTypes[0].OneofWrappers = []any{ (*Alias_Attributes)(nil), (*Alias_TargetAliasAttributes)(nil), diff --git a/sdk/pbs/controller/api/resources/authmethods/auth_method.pb.go b/sdk/pbs/controller/api/resources/authmethods/auth_method.pb.go index 216af755ba..8cac1273dc 100644 --- a/sdk/pbs/controller/api/resources/authmethods/auth_method.pb.go +++ b/sdk/pbs/controller/api/resources/authmethods/auth_method.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/authmethods/v1/auth_method.proto @@ -33,10 +33,7 @@ const ( // AuthMethod contains all fields related to an auth method resource type AuthMethod struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the auth method. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The ID of the Scope of which this auth method is a part. @@ -57,7 +54,7 @@ type AuthMethod struct { Version uint32 `protobuf:"varint,80,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` // The auth method type. Type string `protobuf:"bytes,90,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *AuthMethod_Attributes // *AuthMethod_PasswordAuthMethodAttributes @@ -70,16 +67,16 @@ type AuthMethod struct { // The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` // The authorized actions for the scope's collections. - AuthorizedCollectionActions map[string]*structpb.ListValue `protobuf:"bytes,310,rep,name=authorized_collection_actions,proto3" json:"authorized_collection_actions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // classified as public via taggable implementation + AuthorizedCollectionActions map[string]*structpb.ListValue `protobuf:"bytes,310,rep,name=authorized_collection_actions,proto3" json:"authorized_collection_actions,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // classified as public via taggable implementation + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthMethod) Reset() { *x = AuthMethod{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthMethod) String() string { @@ -90,7 +87,7 @@ func (*AuthMethod) ProtoMessage() {} func (x *AuthMethod) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -168,37 +165,45 @@ func (x *AuthMethod) GetType() string { return "" } -func (m *AuthMethod) GetAttrs() isAuthMethod_Attrs { - if m != nil { - return m.Attrs +func (x *AuthMethod) GetAttrs() isAuthMethod_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *AuthMethod) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*AuthMethod_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*AuthMethod_Attributes); ok { + return x.Attributes + } } return nil } func (x *AuthMethod) GetPasswordAuthMethodAttributes() *PasswordAuthMethodAttributes { - if x, ok := x.GetAttrs().(*AuthMethod_PasswordAuthMethodAttributes); ok { - return x.PasswordAuthMethodAttributes + if x != nil { + if x, ok := x.Attrs.(*AuthMethod_PasswordAuthMethodAttributes); ok { + return x.PasswordAuthMethodAttributes + } } return nil } func (x *AuthMethod) GetOidcAuthMethodsAttributes() *OidcAuthMethodAttributes { - if x, ok := x.GetAttrs().(*AuthMethod_OidcAuthMethodsAttributes); ok { - return x.OidcAuthMethodsAttributes + if x != nil { + if x, ok := x.Attrs.(*AuthMethod_OidcAuthMethodsAttributes); ok { + return x.OidcAuthMethodsAttributes + } } return nil } func (x *AuthMethod) GetLdapAuthMethodsAttributes() *LdapAuthMethodAttributes { - if x, ok := x.GetAttrs().(*AuthMethod_LdapAuthMethodsAttributes); ok { - return x.LdapAuthMethodsAttributes + if x != nil { + if x, ok := x.Attrs.(*AuthMethod_LdapAuthMethodsAttributes); ok { + return x.LdapAuthMethodsAttributes + } } return nil } @@ -255,23 +260,20 @@ func (*AuthMethod_LdapAuthMethodsAttributes) isAuthMethod_Attrs() {} // The attributes of a password typed auth method. type PasswordAuthMethodAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The minimum length allowed for user names for accounts in this auth method. MinLoginNameLength uint32 `protobuf:"varint,10,opt,name=min_login_name_length,proto3" json:"min_login_name_length,omitempty" class:"public"` // @gotags: `class:"public"` // The minimum length allowed for passwords for accounts in this auth method. MinPasswordLength uint32 `protobuf:"varint,20,opt,name=min_password_length,proto3" json:"min_password_length,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PasswordAuthMethodAttributes) Reset() { *x = PasswordAuthMethodAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PasswordAuthMethodAttributes) String() string { @@ -282,7 +284,7 @@ func (*PasswordAuthMethodAttributes) ProtoMessage() {} func (x *PasswordAuthMethodAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -313,10 +315,7 @@ func (x *PasswordAuthMethodAttributes) GetMinPasswordLength() uint32 { // The attributes of an OIDC typed auth method. type OidcAuthMethodAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The state of the auth method. Will be "inactive", // "active-private", or "active-public". State string `protobuf:"bytes,10,opt,name=state,proto3" json:"state,omitempty" class:"public"` // @gotags: `class:"public"` @@ -376,16 +375,16 @@ type OidcAuthMethodAttributes struct { // a result of the update request. DryRun bool `protobuf:"varint,130,opt,name=dry_run,proto3" json:"dry_run,omitempty" class:"public"` // @gotags: `class:"public"` // The prompts allowed for the auth method. - Prompts []string `protobuf:"bytes,140,rep,name=prompts,proto3" json:"prompts,omitempty" class:"public"` // @gotags: `class:"public"` + Prompts []string `protobuf:"bytes,140,rep,name=prompts,proto3" json:"prompts,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OidcAuthMethodAttributes) Reset() { *x = OidcAuthMethodAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OidcAuthMethodAttributes) String() string { @@ -396,7 +395,7 @@ func (*OidcAuthMethodAttributes) ProtoMessage() {} func (x *OidcAuthMethodAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -525,23 +524,20 @@ func (x *OidcAuthMethodAttributes) GetPrompts() []string { // The structure of the OIDC authenticate start response, in the JSON object type OidcAuthMethodAuthenticateStartResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The returned authentication URL AuthUrl string `protobuf:"bytes,10,opt,name=auth_url,proto3" json:"auth_url,omitempty" class:"public"` // @gotags: `class:"public"` // The returned token ID - TokenId string `protobuf:"bytes,30,opt,name=token_id,proto3" json:"token_id,omitempty" class:"public"` // @gotags: `class:"public"` + TokenId string `protobuf:"bytes,30,opt,name=token_id,proto3" json:"token_id,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OidcAuthMethodAuthenticateStartResponse) Reset() { *x = OidcAuthMethodAuthenticateStartResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OidcAuthMethodAuthenticateStartResponse) String() string { @@ -552,7 +548,7 @@ func (*OidcAuthMethodAuthenticateStartResponse) ProtoMessage() {} func (x *OidcAuthMethodAuthenticateStartResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -583,10 +579,7 @@ func (x *OidcAuthMethodAuthenticateStartResponse) GetTokenId() string { // The structure of OIDC callback request parameters type OidcAuthMethodAuthenticateCallbackRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The returned code Code string `protobuf:"bytes,10,opt,name=code,proto3" json:"code,omitempty" class:"secret"` // @gotags: `class:"secret"` // The returned state @@ -595,15 +588,15 @@ type OidcAuthMethodAuthenticateCallbackRequest struct { Error string `protobuf:"bytes,30,opt,name=error,proto3" json:"error,omitempty" class:"public"` // @gotags: `class:"public"` ErrorDescription string `protobuf:"bytes,40,opt,name=error_description,proto3" json:"error_description,omitempty" class:"public"` // @gotags: `class:"public"` ErrorUri string `protobuf:"bytes,50,opt,name=error_uri,proto3" json:"error_uri,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OidcAuthMethodAuthenticateCallbackRequest) Reset() { *x = OidcAuthMethodAuthenticateCallbackRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OidcAuthMethodAuthenticateCallbackRequest) String() string { @@ -614,7 +607,7 @@ func (*OidcAuthMethodAuthenticateCallbackRequest) ProtoMessage() {} func (x *OidcAuthMethodAuthenticateCallbackRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -666,21 +659,18 @@ func (x *OidcAuthMethodAuthenticateCallbackRequest) GetErrorUri() string { // The structure of OIDC callback response parameters type OidcAuthMethodAuthenticateCallbackResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The final redirection URL FinalRedirectUrl string `protobuf:"bytes,10,opt,name=final_redirect_url,proto3" json:"final_redirect_url,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OidcAuthMethodAuthenticateCallbackResponse) Reset() { *x = OidcAuthMethodAuthenticateCallbackResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OidcAuthMethodAuthenticateCallbackResponse) String() string { @@ -691,7 +681,7 @@ func (*OidcAuthMethodAuthenticateCallbackResponse) ProtoMessage() {} func (x *OidcAuthMethodAuthenticateCallbackResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -715,21 +705,18 @@ func (x *OidcAuthMethodAuthenticateCallbackResponse) GetFinalRedirectUrl() strin // The structure of OIDC token request parameters type OidcAuthMethodAuthenticateTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the pending token - TokenId string `protobuf:"bytes,10,opt,name=token_id,proto3" json:"token_id,omitempty" class:"secret"` // @gotags: `class:"secret"` + TokenId string `protobuf:"bytes,10,opt,name=token_id,proto3" json:"token_id,omitempty" class:"secret"` // @gotags: `class:"secret"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OidcAuthMethodAuthenticateTokenRequest) Reset() { *x = OidcAuthMethodAuthenticateTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OidcAuthMethodAuthenticateTokenRequest) String() string { @@ -740,7 +727,7 @@ func (*OidcAuthMethodAuthenticateTokenRequest) ProtoMessage() {} func (x *OidcAuthMethodAuthenticateTokenRequest) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -765,22 +752,19 @@ func (x *OidcAuthMethodAuthenticateTokenRequest) GetTokenId() string { // Internal only: the structure of a token response if it _does not_ contain a // token. type OidcAuthMethodAuthenticateTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The status. This will always be "unknown". It will never be forwarded to // the consumer. - Status string `protobuf:"bytes,10,opt,name=status,proto3" json:"status,omitempty" class:"public"` // @gotags: `class:"public"` + Status string `protobuf:"bytes,10,opt,name=status,proto3" json:"status,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OidcAuthMethodAuthenticateTokenResponse) Reset() { *x = OidcAuthMethodAuthenticateTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OidcAuthMethodAuthenticateTokenResponse) String() string { @@ -791,7 +775,7 @@ func (*OidcAuthMethodAuthenticateTokenResponse) ProtoMessage() {} func (x *OidcAuthMethodAuthenticateTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -815,10 +799,7 @@ func (x *OidcAuthMethodAuthenticateTokenResponse) GetStatus() string { // The attributes of an LDAP typed auth method. type LdapAuthMethodAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The state of the auth method. Will be "inactive", // "active-private", or "active-public". State string `protobuf:"bytes,10,opt,name=state,proto3" json:"state,omitempty" class:"public"` // @gotags: `class:"public"` @@ -920,15 +901,15 @@ type LdapAuthMethodAttributes struct { // base. When set to "searching", it will dereference aliases after name // resolution. DereferenceAliases *wrapperspb.StringValue `protobuf:"bytes,250,opt,name=dereference_aliases,proto3" json:"dereference_aliases,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LdapAuthMethodAttributes) Reset() { *x = LdapAuthMethodAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LdapAuthMethodAttributes) String() string { @@ -939,7 +920,7 @@ func (*LdapAuthMethodAttributes) ProtoMessage() {} func (x *LdapAuthMethodAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1713,116 +1694,6 @@ func file_controller_api_resources_authmethods_v1_auth_method_proto_init() { if File_controller_api_resources_authmethods_v1_auth_method_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*AuthMethod); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*PasswordAuthMethodAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*OidcAuthMethodAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*OidcAuthMethodAuthenticateStartResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*OidcAuthMethodAuthenticateCallbackRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*OidcAuthMethodAuthenticateCallbackResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*OidcAuthMethodAuthenticateTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*OidcAuthMethodAuthenticateTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*LdapAuthMethodAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_resources_authmethods_v1_auth_method_proto_msgTypes[0].OneofWrappers = []any{ (*AuthMethod_Attributes)(nil), (*AuthMethod_PasswordAuthMethodAttributes)(nil), diff --git a/sdk/pbs/controller/api/resources/authtokens/authtoken.pb.go b/sdk/pbs/controller/api/resources/authtokens/authtoken.pb.go index 162f0544c1..f48bc87d29 100644 --- a/sdk/pbs/controller/api/resources/authtokens/authtoken.pb.go +++ b/sdk/pbs/controller/api/resources/authtokens/authtoken.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/authtokens/v1/authtoken.proto @@ -27,10 +27,7 @@ const ( // AuthToken contains all fields related to an Auth Token resource type AuthToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the Auth Token. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // The Scope in which this Auth Token was generated. @@ -55,15 +52,15 @@ type AuthToken struct { ExpirationTime *timestamppb.Timestamp `protobuf:"bytes,110,opt,name=expiration_time,proto3" json:"expiration_time,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthToken) Reset() { *x = AuthToken{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_authtokens_v1_authtoken_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_authtokens_v1_authtoken_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthToken) String() string { @@ -74,7 +71,7 @@ func (*AuthToken) ProtoMessage() {} func (x *AuthToken) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_authtokens_v1_authtoken_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -268,20 +265,6 @@ func file_controller_api_resources_authtokens_v1_authtoken_proto_init() { if File_controller_api_resources_authtokens_v1_authtoken_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_authtokens_v1_authtoken_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*AuthToken); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/sdk/pbs/controller/api/resources/billing/billing.pb.go b/sdk/pbs/controller/api/resources/billing/billing.pb.go index 011b88119a..e63e60abb0 100644 --- a/sdk/pbs/controller/api/resources/billing/billing.pb.go +++ b/sdk/pbs/controller/api/resources/billing/billing.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/billing/v1/billing.proto @@ -25,25 +25,22 @@ const ( ) type ActiveUsers struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The number of active users between the start time and end time. Count uint32 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The start time of the active users count, inclusive. StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,proto3" json:"start_time,omitempty" class:"public"` // @gotags: class:"public" // Output only. The end time of the active users count, exclusive. - EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,proto3" json:"end_time,omitempty" class:"public"` // @gotags: class:"public" + EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,proto3" json:"end_time,omitempty" class:"public"` // @gotags: class:"public" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ActiveUsers) Reset() { *x = ActiveUsers{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_billing_v1_billing_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_billing_v1_billing_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ActiveUsers) String() string { @@ -54,7 +51,7 @@ func (*ActiveUsers) ProtoMessage() {} func (x *ActiveUsers) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_billing_v1_billing_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -150,20 +147,6 @@ func file_controller_api_resources_billing_v1_billing_proto_init() { if File_controller_api_resources_billing_v1_billing_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_billing_v1_billing_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*ActiveUsers); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/sdk/pbs/controller/api/resources/credentiallibraries/credential_library.pb.go b/sdk/pbs/controller/api/resources/credentiallibraries/credential_library.pb.go index e7ccf93dc2..b7b297c3f1 100644 --- a/sdk/pbs/controller/api/resources/credentiallibraries/credential_library.pb.go +++ b/sdk/pbs/controller/api/resources/credentiallibraries/credential_library.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/credentiallibraries/v1/credential_library.proto @@ -31,10 +31,7 @@ const ( // CredentialLibrary contains all fields related to an Credential Library resource type CredentialLibrary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the Credential Library. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // The ID of the Credential Store of which this Credential Library is a part. @@ -54,7 +51,7 @@ type CredentialLibrary struct { Version uint32 `protobuf:"varint,80,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` // The Credential Library type. Type string `protobuf:"bytes,90,opt,name=type,proto3" json:"type,omitempty" class:"public"` // @gotags: `class:"public"` - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *CredentialLibrary_Attributes // *CredentialLibrary_VaultCredentialLibraryAttributes @@ -67,15 +64,15 @@ type CredentialLibrary struct { CredentialType string `protobuf:"bytes,310,opt,name=credential_type,proto3" json:"credential_type,omitempty" class:"public"` // @gotags: `class:"public"` // The credential mapping overrides CredentialMappingOverrides *structpb.Struct `protobuf:"bytes,320,opt,name=credential_mapping_overrides,proto3" json:"credential_mapping_overrides,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CredentialLibrary) Reset() { *x = CredentialLibrary{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_credentiallibraries_v1_credential_library_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_credentiallibraries_v1_credential_library_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CredentialLibrary) String() string { @@ -86,7 +83,7 @@ func (*CredentialLibrary) ProtoMessage() {} func (x *CredentialLibrary) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_credentiallibraries_v1_credential_library_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -164,37 +161,45 @@ func (x *CredentialLibrary) GetType() string { return "" } -func (m *CredentialLibrary) GetAttrs() isCredentialLibrary_Attrs { - if m != nil { - return m.Attrs +func (x *CredentialLibrary) GetAttrs() isCredentialLibrary_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *CredentialLibrary) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*CredentialLibrary_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*CredentialLibrary_Attributes); ok { + return x.Attributes + } } return nil } func (x *CredentialLibrary) GetVaultCredentialLibraryAttributes() *VaultCredentialLibraryAttributes { - if x, ok := x.GetAttrs().(*CredentialLibrary_VaultCredentialLibraryAttributes); ok { - return x.VaultCredentialLibraryAttributes + if x != nil { + if x, ok := x.Attrs.(*CredentialLibrary_VaultCredentialLibraryAttributes); ok { + return x.VaultCredentialLibraryAttributes + } } return nil } func (x *CredentialLibrary) GetVaultSshCertificateCredentialLibraryAttributes() *VaultSSHCertificateCredentialLibraryAttributes { - if x, ok := x.GetAttrs().(*CredentialLibrary_VaultSshCertificateCredentialLibraryAttributes); ok { - return x.VaultSshCertificateCredentialLibraryAttributes + if x != nil { + if x, ok := x.Attrs.(*CredentialLibrary_VaultSshCertificateCredentialLibraryAttributes); ok { + return x.VaultSshCertificateCredentialLibraryAttributes + } } return nil } func (x *CredentialLibrary) GetVaultGenericCredentialLibraryAttributes() *VaultCredentialLibraryAttributes { - if x, ok := x.GetAttrs().(*CredentialLibrary_VaultGenericCredentialLibraryAttributes); ok { - return x.VaultGenericCredentialLibraryAttributes + if x != nil { + if x, ok := x.Attrs.(*CredentialLibrary_VaultGenericCredentialLibraryAttributes); ok { + return x.VaultGenericCredentialLibraryAttributes + } } return nil } @@ -252,25 +257,22 @@ func (*CredentialLibrary_VaultGenericCredentialLibraryAttributes) isCredentialLi // The attributes of a vault typed Credential Library. type VaultCredentialLibraryAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The path in Vault to request credentials from. Path *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=path,proto3" json:"path,omitempty" class:"public"` // @gotags: `class:"public"` // The HTTP method the library uses to communicate with Vault. HttpMethod *wrapperspb.StringValue `protobuf:"bytes,20,opt,name=http_method,proto3" json:"http_method,omitempty" class:"public"` // @gotags: `class:"public"` // The body of the HTTP request the library sends to vault. When set http_method must be "POST" HttpRequestBody *wrapperspb.StringValue `protobuf:"bytes,30,opt,name=http_request_body,proto3" json:"http_request_body,omitempty" class:"secret"` // @gotags: `class:"secret"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VaultCredentialLibraryAttributes) Reset() { *x = VaultCredentialLibraryAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_credentiallibraries_v1_credential_library_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_credentiallibraries_v1_credential_library_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VaultCredentialLibraryAttributes) String() string { @@ -281,7 +283,7 @@ func (*VaultCredentialLibraryAttributes) ProtoMessage() {} func (x *VaultCredentialLibraryAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_credentiallibraries_v1_credential_library_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -319,10 +321,7 @@ func (x *VaultCredentialLibraryAttributes) GetHttpRequestBody() *wrapperspb.Stri // The attributes of a vault SSH Certificate Credential Library. type VaultSSHCertificateCredentialLibraryAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The path in Vault to request credentials from. Path *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=path,proto3" json:"path,omitempty" class:"public"` // @gotags: `class:"public"` // The username to use when making an SSH connection. @@ -336,20 +335,20 @@ type VaultSSHCertificateCredentialLibraryAttributes struct { // The key id that the created certificate should have. KeyId *wrapperspb.StringValue `protobuf:"bytes,60,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty" class:"public"` // @gotags: `class:"public"` // The critical options that the certificate should be signed for. - CriticalOptions map[string]string `protobuf:"bytes,70,rep,name=critical_options,json=criticalOptions,proto3" json:"critical_options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: `class:"public"` + CriticalOptions map[string]string `protobuf:"bytes,70,rep,name=critical_options,json=criticalOptions,proto3" json:"critical_options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" class:"public"` // @gotags: `class:"public"` // The extensions that the certificate should be signed for. - Extensions map[string]string `protobuf:"bytes,80,rep,name=extensions,proto3" json:"extensions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: `class:"public"` + Extensions map[string]string `protobuf:"bytes,80,rep,name=extensions,proto3" json:"extensions,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" class:"public"` // @gotags: `class:"public"` // Principals to be signed as "valid_principles" in addition to username. AdditionalValidPrincipals []*wrapperspb.StringValue `protobuf:"bytes,90,rep,name=additional_valid_principals,json=additionalValidPrincipals,proto3" json:"additional_valid_principals,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VaultSSHCertificateCredentialLibraryAttributes) Reset() { *x = VaultSSHCertificateCredentialLibraryAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_credentiallibraries_v1_credential_library_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_credentiallibraries_v1_credential_library_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VaultSSHCertificateCredentialLibraryAttributes) String() string { @@ -360,7 +359,7 @@ func (*VaultSSHCertificateCredentialLibraryAttributes) ProtoMessage() {} func (x *VaultSSHCertificateCredentialLibraryAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_credentiallibraries_v1_credential_library_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -728,44 +727,6 @@ func file_controller_api_resources_credentiallibraries_v1_credential_library_pro if File_controller_api_resources_credentiallibraries_v1_credential_library_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_credentiallibraries_v1_credential_library_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*CredentialLibrary); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_credentiallibraries_v1_credential_library_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*VaultCredentialLibraryAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_credentiallibraries_v1_credential_library_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*VaultSSHCertificateCredentialLibraryAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_resources_credentiallibraries_v1_credential_library_proto_msgTypes[0].OneofWrappers = []any{ (*CredentialLibrary_Attributes)(nil), (*CredentialLibrary_VaultCredentialLibraryAttributes)(nil), diff --git a/sdk/pbs/controller/api/resources/credentials/credential.pb.go b/sdk/pbs/controller/api/resources/credentials/credential.pb.go index 5ad236445e..29628781de 100644 --- a/sdk/pbs/controller/api/resources/credentials/credential.pb.go +++ b/sdk/pbs/controller/api/resources/credentials/credential.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/credentials/v1/credential.proto @@ -31,10 +31,7 @@ const ( // Credential contains all fields related to an Credential resource type Credential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the Credential. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // The ID of the Credential Store of which this Credential is a part. @@ -54,7 +51,7 @@ type Credential struct { Version uint32 `protobuf:"varint,80,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` // The Credential type. Type string `protobuf:"bytes,90,opt,name=type,proto3" json:"type,omitempty" class:"public"` // @gotags: `class:"public"` - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *Credential_Attributes // *Credential_UsernamePasswordAttributes @@ -63,15 +60,15 @@ type Credential struct { Attrs isCredential_Attrs `protobuf_oneof:"attrs"` // Output only. The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Credential) Reset() { *x = Credential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_credentials_v1_credential_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_credentials_v1_credential_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Credential) String() string { @@ -82,7 +79,7 @@ func (*Credential) ProtoMessage() {} func (x *Credential) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_credentials_v1_credential_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -160,37 +157,45 @@ func (x *Credential) GetType() string { return "" } -func (m *Credential) GetAttrs() isCredential_Attrs { - if m != nil { - return m.Attrs +func (x *Credential) GetAttrs() isCredential_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *Credential) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*Credential_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*Credential_Attributes); ok { + return x.Attributes + } } return nil } func (x *Credential) GetUsernamePasswordAttributes() *UsernamePasswordAttributes { - if x, ok := x.GetAttrs().(*Credential_UsernamePasswordAttributes); ok { - return x.UsernamePasswordAttributes + if x != nil { + if x, ok := x.Attrs.(*Credential_UsernamePasswordAttributes); ok { + return x.UsernamePasswordAttributes + } } return nil } func (x *Credential) GetSshPrivateKeyAttributes() *SshPrivateKeyAttributes { - if x, ok := x.GetAttrs().(*Credential_SshPrivateKeyAttributes); ok { - return x.SshPrivateKeyAttributes + if x != nil { + if x, ok := x.Attrs.(*Credential_SshPrivateKeyAttributes); ok { + return x.SshPrivateKeyAttributes + } } return nil } func (x *Credential) GetJsonAttributes() *JsonAttributes { - if x, ok := x.GetAttrs().(*Credential_JsonAttributes); ok { - return x.JsonAttributes + if x != nil { + if x, ok := x.Attrs.(*Credential_JsonAttributes); ok { + return x.JsonAttributes + } } return nil } @@ -233,25 +238,22 @@ func (*Credential_JsonAttributes) isCredential_Attrs() {} // The attributes of a UsernamePassword Credential. type UsernamePasswordAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The username associated with the credential. Username *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=username,proto3" json:"username,omitempty" class:"public"` // @gotags: `class:"public"` // Input only. The password associated with the credential. Password *wrapperspb.StringValue `protobuf:"bytes,20,opt,name=password,proto3" json:"password,omitempty" class:"secret"` // @gotags: `class:"secret"` // Output only. The hmac value of the password. - PasswordHmac string `protobuf:"bytes,30,opt,name=password_hmac,proto3" json:"password_hmac,omitempty" class:"public"` // @gotags: `class:"public"` + PasswordHmac string `protobuf:"bytes,30,opt,name=password_hmac,proto3" json:"password_hmac,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UsernamePasswordAttributes) Reset() { *x = UsernamePasswordAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_credentials_v1_credential_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_credentials_v1_credential_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UsernamePasswordAttributes) String() string { @@ -262,7 +264,7 @@ func (*UsernamePasswordAttributes) ProtoMessage() {} func (x *UsernamePasswordAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_credentials_v1_credential_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -300,10 +302,7 @@ func (x *UsernamePasswordAttributes) GetPasswordHmac() string { // The attributes of a SshPrivateKey Credential. type SshPrivateKeyAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The username associated with the credential. Username *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=username,proto3" json:"username,omitempty" class:"public"` // @gotags: `class:"public"` // Input only. The SSH private key associated with the credential. @@ -314,15 +313,15 @@ type SshPrivateKeyAttributes struct { PrivateKeyPassphrase *wrapperspb.StringValue `protobuf:"bytes,40,opt,name=private_key_passphrase,proto3" json:"private_key_passphrase,omitempty" class:"secret"` // @gotags: `class:"secret"` // Output only. The hmac value of the SSH private key passphrase. PrivateKeyPassphraseHmac string `protobuf:"bytes,50,opt,name=private_key_passphrase_hmac,proto3" json:"private_key_passphrase_hmac,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SshPrivateKeyAttributes) Reset() { *x = SshPrivateKeyAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_credentials_v1_credential_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_credentials_v1_credential_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SshPrivateKeyAttributes) String() string { @@ -333,7 +332,7 @@ func (*SshPrivateKeyAttributes) ProtoMessage() {} func (x *SshPrivateKeyAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_credentials_v1_credential_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -385,23 +384,20 @@ func (x *SshPrivateKeyAttributes) GetPrivateKeyPassphraseHmac() string { // The attributes of a JSON Credential. type JsonAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Input only. The secret associated with the credential. Object *structpb.Struct `protobuf:"bytes,10,opt,name=object,proto3" json:"object,omitempty" class:"secret"` // @gotags: `class:"secret"` // Output only. The hmac value of the object. - ObjectHmac string `protobuf:"bytes,20,opt,name=object_hmac,proto3" json:"object_hmac,omitempty" class:"public"` // @gotags: `class:"public"` + ObjectHmac string `protobuf:"bytes,20,opt,name=object_hmac,proto3" json:"object_hmac,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JsonAttributes) Reset() { *x = JsonAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_credentials_v1_credential_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_credentials_v1_credential_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JsonAttributes) String() string { @@ -412,7 +408,7 @@ func (*JsonAttributes) ProtoMessage() {} func (x *JsonAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_credentials_v1_credential_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -663,56 +659,6 @@ func file_controller_api_resources_credentials_v1_credential_proto_init() { if File_controller_api_resources_credentials_v1_credential_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_credentials_v1_credential_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Credential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_credentials_v1_credential_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*UsernamePasswordAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_credentials_v1_credential_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*SshPrivateKeyAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_credentials_v1_credential_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*JsonAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_resources_credentials_v1_credential_proto_msgTypes[0].OneofWrappers = []any{ (*Credential_Attributes)(nil), (*Credential_UsernamePasswordAttributes)(nil), diff --git a/sdk/pbs/controller/api/resources/credentialstores/credential_store.pb.go b/sdk/pbs/controller/api/resources/credentialstores/credential_store.pb.go index 9ffd853ca1..a078eff3f0 100644 --- a/sdk/pbs/controller/api/resources/credentialstores/credential_store.pb.go +++ b/sdk/pbs/controller/api/resources/credentialstores/credential_store.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/credentialstores/v1/credential_store.proto @@ -31,10 +31,7 @@ const ( // CredentialStore contains all fields related to an Credential Store resource type CredentialStore struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the Credential Store. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // The ID of the Scope of which this Credential Store is a part. @@ -54,7 +51,7 @@ type CredentialStore struct { Version uint32 `protobuf:"varint,80,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` // The Credential Store type. Type string `protobuf:"bytes,90,opt,name=type,proto3" json:"type,omitempty" class:"public"` // @gotags: `class:"public"` - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *CredentialStore_Attributes // *CredentialStore_VaultCredentialStoreAttributes @@ -62,16 +59,16 @@ type CredentialStore struct { // Output only. The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The authorized actions for the scope's collections. - AuthorizedCollectionActions map[string]*structpb.ListValue `protobuf:"bytes,310,rep,name=authorized_collection_actions,proto3" json:"authorized_collection_actions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // classified as public via taggable implementation + AuthorizedCollectionActions map[string]*structpb.ListValue `protobuf:"bytes,310,rep,name=authorized_collection_actions,proto3" json:"authorized_collection_actions,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // classified as public via taggable implementation + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CredentialStore) Reset() { *x = CredentialStore{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_credentialstores_v1_credential_store_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_credentialstores_v1_credential_store_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CredentialStore) String() string { @@ -82,7 +79,7 @@ func (*CredentialStore) ProtoMessage() {} func (x *CredentialStore) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_credentialstores_v1_credential_store_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -160,23 +157,27 @@ func (x *CredentialStore) GetType() string { return "" } -func (m *CredentialStore) GetAttrs() isCredentialStore_Attrs { - if m != nil { - return m.Attrs +func (x *CredentialStore) GetAttrs() isCredentialStore_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *CredentialStore) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*CredentialStore_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*CredentialStore_Attributes); ok { + return x.Attributes + } } return nil } func (x *CredentialStore) GetVaultCredentialStoreAttributes() *VaultCredentialStoreAttributes { - if x, ok := x.GetAttrs().(*CredentialStore_VaultCredentialStoreAttributes); ok { - return x.VaultCredentialStoreAttributes + if x != nil { + if x, ok := x.Attrs.(*CredentialStore_VaultCredentialStoreAttributes); ok { + return x.VaultCredentialStoreAttributes + } } return nil } @@ -214,10 +215,7 @@ func (*CredentialStore_VaultCredentialStoreAttributes) isCredentialStore_Attrs() // The attributes of a vault typed Credential Store. type VaultCredentialStoreAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The complete url address of vault. Address *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=address,proto3" json:"address,omitempty" class:"public"` // @gotags: `class:"public"` // The namespace of vault used by this store @@ -244,16 +242,16 @@ type VaultCredentialStoreAttributes struct { // worker_filter is optional. Filters to the worker(s) who can handle Vault requests for this cred store WorkerFilter *wrapperspb.StringValue `protobuf:"bytes,110,opt,name=worker_filter,proto3" json:"worker_filter,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The status of the vault token used by this credential store (current or expired). - TokenStatus string `protobuf:"bytes,120,opt,name=token_status,proto3" json:"token_status,omitempty" class:"public"` // @gotags: `class:"public"` + TokenStatus string `protobuf:"bytes,120,opt,name=token_status,proto3" json:"token_status,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VaultCredentialStoreAttributes) Reset() { *x = VaultCredentialStoreAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_credentialstores_v1_credential_store_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_credentialstores_v1_credential_store_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VaultCredentialStoreAttributes) String() string { @@ -264,7 +262,7 @@ func (*VaultCredentialStoreAttributes) ProtoMessage() {} func (x *VaultCredentialStoreAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_credentialstores_v1_credential_store_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -593,32 +591,6 @@ func file_controller_api_resources_credentialstores_v1_credential_store_proto_in if File_controller_api_resources_credentialstores_v1_credential_store_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_credentialstores_v1_credential_store_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*CredentialStore); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_credentialstores_v1_credential_store_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*VaultCredentialStoreAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_resources_credentialstores_v1_credential_store_proto_msgTypes[0].OneofWrappers = []any{ (*CredentialStore_Attributes)(nil), (*CredentialStore_VaultCredentialStoreAttributes)(nil), diff --git a/sdk/pbs/controller/api/resources/groups/group.pb.go b/sdk/pbs/controller/api/resources/groups/group.pb.go index a3c17173e7..d00d5dc22f 100644 --- a/sdk/pbs/controller/api/resources/groups/group.pb.go +++ b/sdk/pbs/controller/api/resources/groups/group.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/groups/v1/group.proto @@ -28,23 +28,20 @@ const ( ) type Member struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the member. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. The Scope ID of the member. - ScopeId string `protobuf:"bytes,20,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + ScopeId string `protobuf:"bytes,20,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Member) Reset() { *x = Member{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_groups_v1_group_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_groups_v1_group_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Member) String() string { @@ -55,7 +52,7 @@ func (*Member) ProtoMessage() {} func (x *Member) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_groups_v1_group_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -86,10 +83,7 @@ func (x *Member) GetScopeId() string { // Group contains all fields related to a Group resource type Group struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the Group. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The ID of the scope of which this Group is a part. @@ -113,15 +107,15 @@ type Group struct { Members []*Member `protobuf:"bytes,100,rep,name=members,proto3" json:"members,omitempty"` // Output only. The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Group) Reset() { *x = Group{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_groups_v1_group_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_groups_v1_group_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Group) String() string { @@ -132,7 +126,7 @@ func (*Group) ProtoMessage() {} func (x *Group) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_groups_v1_group_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -330,32 +324,6 @@ func file_controller_api_resources_groups_v1_group_proto_init() { if File_controller_api_resources_groups_v1_group_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_groups_v1_group_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Member); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_groups_v1_group_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Group); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/sdk/pbs/controller/api/resources/hostcatalogs/host_catalog.pb.go b/sdk/pbs/controller/api/resources/hostcatalogs/host_catalog.pb.go index 1ba193e049..b7ba1b1bbd 100644 --- a/sdk/pbs/controller/api/resources/hostcatalogs/host_catalog.pb.go +++ b/sdk/pbs/controller/api/resources/hostcatalogs/host_catalog.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/hostcatalogs/v1/host_catalog.proto @@ -31,10 +31,7 @@ const ( // HostCatalog manages Hosts and Host Sets type HostCatalog struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the host. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The ID of the Scope of which this Host Catalog is a part. @@ -58,7 +55,7 @@ type HostCatalog struct { Version uint32 `protobuf:"varint,80,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` // The type of Host Catalog. Type string `protobuf:"bytes,90,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *HostCatalog_Attributes Attrs isHostCatalog_Attrs `protobuf_oneof:"attrs"` @@ -71,16 +68,16 @@ type HostCatalog struct { // Output only. The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The authorized actions for the scope's collections. - AuthorizedCollectionActions map[string]*structpb.ListValue `protobuf:"bytes,310,rep,name=authorized_collection_actions,proto3" json:"authorized_collection_actions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // classified as public via taggable implementation + AuthorizedCollectionActions map[string]*structpb.ListValue `protobuf:"bytes,310,rep,name=authorized_collection_actions,proto3" json:"authorized_collection_actions,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // classified as public via taggable implementation + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostCatalog) Reset() { *x = HostCatalog{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_hostcatalogs_v1_host_catalog_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_hostcatalogs_v1_host_catalog_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HostCatalog) String() string { @@ -91,7 +88,7 @@ func (*HostCatalog) ProtoMessage() {} func (x *HostCatalog) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_hostcatalogs_v1_host_catalog_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -183,16 +180,18 @@ func (x *HostCatalog) GetType() string { return "" } -func (m *HostCatalog) GetAttrs() isHostCatalog_Attrs { - if m != nil { - return m.Attrs +func (x *HostCatalog) GetAttrs() isHostCatalog_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *HostCatalog) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*HostCatalog_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*HostCatalog_Attributes); ok { + return x.Attributes + } } return nil } @@ -397,20 +396,6 @@ func file_controller_api_resources_hostcatalogs_v1_host_catalog_proto_init() { if File_controller_api_resources_hostcatalogs_v1_host_catalog_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_hostcatalogs_v1_host_catalog_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*HostCatalog); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_resources_hostcatalogs_v1_host_catalog_proto_msgTypes[0].OneofWrappers = []any{ (*HostCatalog_Attributes)(nil), } diff --git a/sdk/pbs/controller/api/resources/hosts/host.pb.go b/sdk/pbs/controller/api/resources/hosts/host.pb.go index b11cb147d0..08db1f8eda 100644 --- a/sdk/pbs/controller/api/resources/hosts/host.pb.go +++ b/sdk/pbs/controller/api/resources/hosts/host.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/hosts/v1/host.proto @@ -32,10 +32,7 @@ const ( // Host contains all fields related to a Host resource type Host struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the Host. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The Host Catalog of which this Host is a part. @@ -59,7 +56,7 @@ type Host struct { Type string `protobuf:"bytes,90,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. A list of Host Sets containing this Host. HostSetIds []string `protobuf:"bytes,100,rep,name=host_set_ids,proto3" json:"host_set_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *Host_Attributes // *Host_StaticHostAttributes @@ -74,15 +71,15 @@ type Host struct { ExternalName string `protobuf:"bytes,150,opt,name=external_name,json=externalName,proto3" json:"external_name,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Host) Reset() { *x = Host{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_hosts_v1_host_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_hosts_v1_host_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Host) String() string { @@ -93,7 +90,7 @@ func (*Host) ProtoMessage() {} func (x *Host) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_hosts_v1_host_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -185,23 +182,27 @@ func (x *Host) GetHostSetIds() []string { return nil } -func (m *Host) GetAttrs() isHost_Attrs { - if m != nil { - return m.Attrs +func (x *Host) GetAttrs() isHost_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *Host) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*Host_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*Host_Attributes); ok { + return x.Attributes + } } return nil } func (x *Host) GetStaticHostAttributes() *StaticHostAttributes { - if x, ok := x.GetAttrs().(*Host_StaticHostAttributes); ok { - return x.StaticHostAttributes + if x != nil { + if x, ok := x.Attrs.(*Host_StaticHostAttributes); ok { + return x.StaticHostAttributes + } } return nil } @@ -259,21 +260,18 @@ func (*Host_Attributes) isHost_Attrs() {} func (*Host_StaticHostAttributes) isHost_Attrs() {} type StaticHostAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The address (DNS or IP name) used to reach the Host. - Address *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=address,proto3" json:"address,omitempty" class:"public"` // @gotags: `class:"public"` + Address *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=address,proto3" json:"address,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StaticHostAttributes) Reset() { *x = StaticHostAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_hosts_v1_host_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_hosts_v1_host_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StaticHostAttributes) String() string { @@ -284,7 +282,7 @@ func (*StaticHostAttributes) ProtoMessage() {} func (x *StaticHostAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_hosts_v1_host_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -453,32 +451,6 @@ func file_controller_api_resources_hosts_v1_host_proto_init() { if File_controller_api_resources_hosts_v1_host_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_hosts_v1_host_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Host); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_hosts_v1_host_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*StaticHostAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_resources_hosts_v1_host_proto_msgTypes[0].OneofWrappers = []any{ (*Host_Attributes)(nil), (*Host_StaticHostAttributes)(nil), diff --git a/sdk/pbs/controller/api/resources/hostsets/host_set.pb.go b/sdk/pbs/controller/api/resources/hostsets/host_set.pb.go index 1ca80ab837..cd89b848fc 100644 --- a/sdk/pbs/controller/api/resources/hostsets/host_set.pb.go +++ b/sdk/pbs/controller/api/resources/hostsets/host_set.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/hostsets/v1/host_set.proto @@ -31,10 +31,7 @@ const ( // HostSet is a collection of Hosts created and managed by a Host Catalog type HostSet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the Host Set. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // The Host Catalog of which this Host Set is a part. @@ -72,21 +69,21 @@ type HostSet struct { // use Boundary's default. The default may change between releases. May not // be valid for all plugin types. SyncIntervalSeconds *wrapperspb.Int32Value `protobuf:"bytes,102,opt,name=sync_interval_seconds,proto3" json:"sync_interval_seconds,omitempty" class:"public"` // @gotags: `class:"public"` - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *HostSet_Attributes Attrs isHostSet_Attrs `protobuf_oneof:"attrs"` // Output only. The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostSet) Reset() { *x = HostSet{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_hostsets_v1_host_set_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_hostsets_v1_host_set_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HostSet) String() string { @@ -97,7 +94,7 @@ func (*HostSet) ProtoMessage() {} func (x *HostSet) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_hostsets_v1_host_set_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -203,16 +200,18 @@ func (x *HostSet) GetSyncIntervalSeconds() *wrapperspb.Int32Value { return nil } -func (m *HostSet) GetAttrs() isHostSet_Attrs { - if m != nil { - return m.Attrs +func (x *HostSet) GetAttrs() isHostSet_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *HostSet) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*HostSet_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*HostSet_Attributes); ok { + return x.Attributes + } } return nil } @@ -370,20 +369,6 @@ func file_controller_api_resources_hostsets_v1_host_set_proto_init() { if File_controller_api_resources_hostsets_v1_host_set_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_hostsets_v1_host_set_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*HostSet); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_resources_hostsets_v1_host_set_proto_msgTypes[0].OneofWrappers = []any{ (*HostSet_Attributes)(nil), } diff --git a/sdk/pbs/controller/api/resources/managedgroups/managed_group.pb.go b/sdk/pbs/controller/api/resources/managedgroups/managed_group.pb.go index d65f704837..5d2b183c0f 100644 --- a/sdk/pbs/controller/api/resources/managedgroups/managed_group.pb.go +++ b/sdk/pbs/controller/api/resources/managedgroups/managed_group.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/managedgroups/v1/managed_group.proto @@ -31,10 +31,7 @@ const ( // ManagedGroup contains all fields related to an ManagedGroup resource type ManagedGroup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the ManagedGroup. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. Scope information for the ManagedGroup. @@ -54,7 +51,7 @@ type ManagedGroup struct { Type string `protobuf:"bytes,80,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The ID of the Auth Method that is associated with this ManagedGroup. AuthMethodId string `protobuf:"bytes,90,opt,name=auth_method_id,proto3" json:"auth_method_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *ManagedGroup_Attributes // *ManagedGroup_OidcManagedGroupAttributes @@ -64,15 +61,15 @@ type ManagedGroup struct { MemberIds []string `protobuf:"bytes,110,rep,name=member_ids,proto3" json:"member_ids,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ManagedGroup) Reset() { *x = ManagedGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_managedgroups_v1_managed_group_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_managedgroups_v1_managed_group_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ManagedGroup) String() string { @@ -83,7 +80,7 @@ func (*ManagedGroup) ProtoMessage() {} func (x *ManagedGroup) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_managedgroups_v1_managed_group_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -161,30 +158,36 @@ func (x *ManagedGroup) GetAuthMethodId() string { return "" } -func (m *ManagedGroup) GetAttrs() isManagedGroup_Attrs { - if m != nil { - return m.Attrs +func (x *ManagedGroup) GetAttrs() isManagedGroup_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *ManagedGroup) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*ManagedGroup_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*ManagedGroup_Attributes); ok { + return x.Attributes + } } return nil } func (x *ManagedGroup) GetOidcManagedGroupAttributes() *OidcManagedGroupAttributes { - if x, ok := x.GetAttrs().(*ManagedGroup_OidcManagedGroupAttributes); ok { - return x.OidcManagedGroupAttributes + if x != nil { + if x, ok := x.Attrs.(*ManagedGroup_OidcManagedGroupAttributes); ok { + return x.OidcManagedGroupAttributes + } } return nil } func (x *ManagedGroup) GetLdapManagedGroupAttributes() *LdapManagedGroupAttributes { - if x, ok := x.GetAttrs().(*ManagedGroup_LdapManagedGroupAttributes); ok { - return x.LdapManagedGroupAttributes + if x != nil { + if x, ok := x.Attrs.(*ManagedGroup_LdapManagedGroupAttributes); ok { + return x.LdapManagedGroupAttributes + } } return nil } @@ -228,21 +231,18 @@ func (*ManagedGroup_LdapManagedGroupAttributes) isManagedGroup_Attrs() {} // Attributes associated only with ManagedGroups with type "oidc". type OidcManagedGroupAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The boolean expression filter to use to determine membership. - Filter string `protobuf:"bytes,10,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` + Filter string `protobuf:"bytes,10,opt,name=filter,proto3" json:"filter,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OidcManagedGroupAttributes) Reset() { *x = OidcManagedGroupAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_managedgroups_v1_managed_group_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_managedgroups_v1_managed_group_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OidcManagedGroupAttributes) String() string { @@ -253,7 +253,7 @@ func (*OidcManagedGroupAttributes) ProtoMessage() {} func (x *OidcManagedGroupAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_managedgroups_v1_managed_group_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -277,21 +277,18 @@ func (x *OidcManagedGroupAttributes) GetFilter() string { // Attributes associated only with ManagedGroups with type "ldap". type LdapManagedGroupAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The list of groups that make up the ManagedGroup - GroupNames []string `protobuf:"bytes,100,rep,name=group_names,proto3" json:"group_names,omitempty" class:"public"` // @gotags: `class:"public"` + GroupNames []string `protobuf:"bytes,100,rep,name=group_names,proto3" json:"group_names,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LdapManagedGroupAttributes) Reset() { *x = LdapManagedGroupAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_managedgroups_v1_managed_group_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_managedgroups_v1_managed_group_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LdapManagedGroupAttributes) String() string { @@ -302,7 +299,7 @@ func (*LdapManagedGroupAttributes) ProtoMessage() {} func (x *LdapManagedGroupAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_managedgroups_v1_managed_group_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -474,44 +471,6 @@ func file_controller_api_resources_managedgroups_v1_managed_group_proto_init() { if File_controller_api_resources_managedgroups_v1_managed_group_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_managedgroups_v1_managed_group_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*ManagedGroup); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_managedgroups_v1_managed_group_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*OidcManagedGroupAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_managedgroups_v1_managed_group_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*LdapManagedGroupAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_resources_managedgroups_v1_managed_group_proto_msgTypes[0].OneofWrappers = []any{ (*ManagedGroup_Attributes)(nil), (*ManagedGroup_OidcManagedGroupAttributes)(nil), diff --git a/sdk/pbs/controller/api/resources/plugins/plugin.pb.go b/sdk/pbs/controller/api/resources/plugins/plugin.pb.go index 1e8f45e189..c61bd092c6 100644 --- a/sdk/pbs/controller/api/resources/plugins/plugin.pb.go +++ b/sdk/pbs/controller/api/resources/plugins/plugin.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/plugins/v1/plugin.proto @@ -24,25 +24,22 @@ const ( ) type PluginInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the Plugin. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. The name of the plugin resource in boundary, if any. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The description of the plugin in boundary, if any. - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty" class:"public"` // @gotags: `class:"public"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PluginInfo) Reset() { *x = PluginInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_plugins_v1_plugin_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_plugins_v1_plugin_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PluginInfo) String() string { @@ -53,7 +50,7 @@ func (*PluginInfo) ProtoMessage() {} func (x *PluginInfo) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_plugins_v1_plugin_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -140,20 +137,6 @@ func file_controller_api_resources_plugins_v1_plugin_proto_init() { if File_controller_api_resources_plugins_v1_plugin_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_plugins_v1_plugin_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*PluginInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/sdk/pbs/controller/api/resources/policies/policy.pb.go b/sdk/pbs/controller/api/resources/policies/policy.pb.go index ae16b3222d..5054d37025 100644 --- a/sdk/pbs/controller/api/resources/policies/policy.pb.go +++ b/sdk/pbs/controller/api/resources/policies/policy.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/policies/v1/policy.proto @@ -30,10 +30,7 @@ const ( ) type Policy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The id of the storage policy. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The scope id of this policy. This must be defined for policy creation, but @@ -57,22 +54,22 @@ type Policy struct { Version uint32 `protobuf:"varint,90,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` // The attributes that are applicable to each policy type. // - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *Policy_Attributes // *Policy_StoragePolicyAttributes Attrs isPolicy_Attrs `protobuf_oneof:"attrs"` // Output only. The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Policy) Reset() { *x = Policy{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_policies_v1_policy_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_policies_v1_policy_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Policy) String() string { @@ -83,7 +80,7 @@ func (*Policy) ProtoMessage() {} func (x *Policy) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_policies_v1_policy_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -161,23 +158,27 @@ func (x *Policy) GetVersion() uint32 { return 0 } -func (m *Policy) GetAttrs() isPolicy_Attrs { - if m != nil { - return m.Attrs +func (x *Policy) GetAttrs() isPolicy_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *Policy) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*Policy_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*Policy_Attributes); ok { + return x.Attributes + } } return nil } func (x *Policy) GetStoragePolicyAttributes() *StoragePolicyAttributes { - if x, ok := x.GetAttrs().(*Policy_StoragePolicyAttributes); ok { - return x.StoragePolicyAttributes + if x != nil { + if x, ok := x.Attrs.(*Policy_StoragePolicyAttributes); ok { + return x.StoragePolicyAttributes + } } return nil } @@ -206,21 +207,18 @@ func (*Policy_Attributes) isPolicy_Attrs() {} func (*Policy_StoragePolicyAttributes) isPolicy_Attrs() {} type StoragePolicyAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + RetainFor *StoragePolicyRetainFor `protobuf:"bytes,10,opt,name=retain_for,proto3" json:"retain_for,omitempty"` + DeleteAfter *StoragePolicyDeleteAfter `protobuf:"bytes,20,opt,name=delete_after,proto3" json:"delete_after,omitempty"` unknownFields protoimpl.UnknownFields - - RetainFor *StoragePolicyRetainFor `protobuf:"bytes,10,opt,name=retain_for,proto3" json:"retain_for,omitempty"` - DeleteAfter *StoragePolicyDeleteAfter `protobuf:"bytes,20,opt,name=delete_after,proto3" json:"delete_after,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StoragePolicyAttributes) Reset() { *x = StoragePolicyAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_policies_v1_policy_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_policies_v1_policy_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StoragePolicyAttributes) String() string { @@ -231,7 +229,7 @@ func (*StoragePolicyAttributes) ProtoMessage() {} func (x *StoragePolicyAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_policies_v1_policy_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -261,25 +259,22 @@ func (x *StoragePolicyAttributes) GetDeleteAfter() *StoragePolicyDeleteAfter { } type StoragePolicyRetainFor struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // days is the number of days for which a session recording will be // retained. Must be provided. Days int32 `protobuf:"varint,10,opt,name=days,proto3" json:"days,omitempty" class:"public"` // @gotags: `class:"public"` // overridable signals whether this storage policy's retention duration can be // overridden. - Overridable *wrapperspb.BoolValue `protobuf:"bytes,20,opt,name=overridable,proto3" json:"overridable,omitempty" class:"public"` // @gotags: `class:"public"` + Overridable *wrapperspb.BoolValue `protobuf:"bytes,20,opt,name=overridable,proto3" json:"overridable,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StoragePolicyRetainFor) Reset() { *x = StoragePolicyRetainFor{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_policies_v1_policy_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_policies_v1_policy_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StoragePolicyRetainFor) String() string { @@ -290,7 +285,7 @@ func (*StoragePolicyRetainFor) ProtoMessage() {} func (x *StoragePolicyRetainFor) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_policies_v1_policy_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -320,25 +315,22 @@ func (x *StoragePolicyRetainFor) GetOverridable() *wrapperspb.BoolValue { } type StoragePolicyDeleteAfter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // days is the number of days after which a session recording will be // automatically deleted. Days int32 `protobuf:"varint,10,opt,name=days,proto3" json:"days,omitempty" class:"public"` // @gotags: `class:"public"` // overridable signals whether this storage policy's deletion policy can be // overridden. - Overridable *wrapperspb.BoolValue `protobuf:"bytes,20,opt,name=overridable,proto3" json:"overridable,omitempty" class:"public"` // @gotags: `class:"public"` + Overridable *wrapperspb.BoolValue `protobuf:"bytes,20,opt,name=overridable,proto3" json:"overridable,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StoragePolicyDeleteAfter) Reset() { *x = StoragePolicyDeleteAfter{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_policies_v1_policy_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_policies_v1_policy_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StoragePolicyDeleteAfter) String() string { @@ -349,7 +341,7 @@ func (*StoragePolicyDeleteAfter) ProtoMessage() {} func (x *StoragePolicyDeleteAfter) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_policies_v1_policy_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -547,56 +539,6 @@ func file_controller_api_resources_policies_v1_policy_proto_init() { if File_controller_api_resources_policies_v1_policy_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_policies_v1_policy_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Policy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_policies_v1_policy_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*StoragePolicyAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_policies_v1_policy_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*StoragePolicyRetainFor); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_policies_v1_policy_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*StoragePolicyDeleteAfter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_resources_policies_v1_policy_proto_msgTypes[0].OneofWrappers = []any{ (*Policy_Attributes)(nil), (*Policy_StoragePolicyAttributes)(nil), diff --git a/sdk/pbs/controller/api/resources/roles/role.pb.go b/sdk/pbs/controller/api/resources/roles/role.pb.go index cd43dab02e..bac6060d5f 100644 --- a/sdk/pbs/controller/api/resources/roles/role.pb.go +++ b/sdk/pbs/controller/api/resources/roles/role.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/roles/v1/role.proto @@ -28,25 +28,22 @@ const ( ) type Principal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the principal. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. The type of the principal. Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. The Scope of the principal. - ScopeId string `protobuf:"bytes,3,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + ScopeId string `protobuf:"bytes,3,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Principal) Reset() { *x = Principal{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_roles_v1_role_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_roles_v1_role_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Principal) String() string { @@ -57,7 +54,7 @@ func (*Principal) ProtoMessage() {} func (x *Principal) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_roles_v1_role_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -94,10 +91,7 @@ func (x *Principal) GetScopeId() string { } type GrantJson struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID, if set. // Deprecated: use "ids" instead. // @@ -108,16 +102,16 @@ type GrantJson struct { // Output only. The type, if set. Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The actions. - Actions []string `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty" class:"public"` // @gotags: `class:"public"` + Actions []string `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GrantJson) Reset() { *x = GrantJson{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_roles_v1_role_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_roles_v1_role_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GrantJson) String() string { @@ -128,7 +122,7 @@ func (*GrantJson) ProtoMessage() {} func (x *GrantJson) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_roles_v1_role_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -173,25 +167,22 @@ func (x *GrantJson) GetActions() []string { } type Grant struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The original user-supplied string. Raw string `protobuf:"bytes,1,opt,name=raw,proto3" json:"raw,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The canonically-formatted string. Canonical string `protobuf:"bytes,2,opt,name=canonical,proto3" json:"canonical,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The JSON representation of the grant. - Json *GrantJson `protobuf:"bytes,3,opt,name=json,proto3" json:"json,omitempty"` + Json *GrantJson `protobuf:"bytes,3,opt,name=json,proto3" json:"json,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Grant) Reset() { *x = Grant{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_roles_v1_role_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_roles_v1_role_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Grant) String() string { @@ -202,7 +193,7 @@ func (*Grant) ProtoMessage() {} func (x *Grant) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_roles_v1_role_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -240,10 +231,7 @@ func (x *Grant) GetJson() *GrantJson { // Role contains all fields related to a Role resource type Role struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the Role. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The ID of the Scope containing this Role. @@ -279,15 +267,15 @@ type Role struct { Grants []*Grant `protobuf:"bytes,130,rep,name=grants,proto3" json:"grants,omitempty"` // Output only. The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Role) Reset() { *x = Role{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_roles_v1_role_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_roles_v1_role_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Role) String() string { @@ -298,7 +286,7 @@ func (*Role) ProtoMessage() {} func (x *Role) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_roles_v1_role_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -547,56 +535,6 @@ func file_controller_api_resources_roles_v1_role_proto_init() { if File_controller_api_resources_roles_v1_role_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_roles_v1_role_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Principal); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_roles_v1_role_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GrantJson); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_roles_v1_role_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*Grant); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_roles_v1_role_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*Role); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/sdk/pbs/controller/api/resources/scopes/scope.pb.go b/sdk/pbs/controller/api/resources/scopes/scope.pb.go index b6bb0524db..6a12843abe 100644 --- a/sdk/pbs/controller/api/resources/scopes/scope.pb.go +++ b/sdk/pbs/controller/api/resources/scopes/scope.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/scopes/v1/scope.proto @@ -29,10 +29,7 @@ const ( ) type ScopeInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the scope. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The type of the scope. @@ -43,15 +40,15 @@ type ScopeInfo struct { Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty" class:"public"` // @gotags: `class:"public"` // The ID of the parent scope, if any. This field is empty if it is the "global" scope. ParentScopeId string `protobuf:"bytes,5,opt,name=parent_scope_id,proto3" json:"parent_scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ScopeInfo) Reset() { *x = ScopeInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ScopeInfo) String() string { @@ -62,7 +59,7 @@ func (*ScopeInfo) ProtoMessage() {} func (x *ScopeInfo) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -114,10 +111,7 @@ func (x *ScopeInfo) GetParentScopeId() string { // Scope contains all fields related to a scope resource type Scope struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the scope. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The ID of the scope this resource is in. If this is the "global" scope this field will be empty. @@ -143,18 +137,18 @@ type Scope struct { // The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` // The authorized actions for the scope's collections. - AuthorizedCollectionActions map[string]*structpb.ListValue `protobuf:"bytes,310,rep,name=authorized_collection_actions,proto3" json:"authorized_collection_actions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AuthorizedCollectionActions map[string]*structpb.ListValue `protobuf:"bytes,310,rep,name=authorized_collection_actions,proto3" json:"authorized_collection_actions,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // The attached storage policy id. StoragePolicyId string `protobuf:"bytes,320,opt,name=storage_policy_id,proto3" json:"storage_policy_id,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Scope) Reset() { *x = Scope{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Scope) String() string { @@ -165,7 +159,7 @@ func (*Scope) ProtoMessage() {} func (x *Scope) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -273,25 +267,22 @@ func (x *Scope) GetStoragePolicyId() string { // KeyVersion describes a specific version of a key and holds the actual key material type KeyVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the key version. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // The iteration of the Key that this version represents. Version uint32 `protobuf:"varint,20,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"` // When this version was created. - CreatedTime *timestamppb.Timestamp `protobuf:"bytes,30,opt,name=created_time,proto3" json:"created_time,omitempty" class:"public"` // @gotags: `class:"public"` + CreatedTime *timestamppb.Timestamp `protobuf:"bytes,30,opt,name=created_time,proto3" json:"created_time,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *KeyVersion) Reset() { *x = KeyVersion{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KeyVersion) String() string { @@ -302,7 +293,7 @@ func (*KeyVersion) ProtoMessage() {} func (x *KeyVersion) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -340,10 +331,7 @@ func (x *KeyVersion) GetCreatedTime() *timestamppb.Timestamp { // Key contains all fields related to a Key in a Scope. type Key struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the Key. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Scope information for this resource. @@ -355,16 +343,16 @@ type Key struct { // The type of the Key. Type string `protobuf:"bytes,50,opt,name=type,proto3" json:"type,omitempty" class:"public"` // @gotags: `class:"public"` // The versions of the key. - Versions []*KeyVersion `protobuf:"bytes,60,rep,name=versions,proto3" json:"versions,omitempty"` + Versions []*KeyVersion `protobuf:"bytes,60,rep,name=versions,proto3" json:"versions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Key) Reset() { *x = Key{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Key) String() string { @@ -375,7 +363,7 @@ func (*Key) ProtoMessage() {} func (x *Key) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -434,10 +422,7 @@ func (x *Key) GetVersions() []*KeyVersion { // KeyVersionDestructionJob holds information about a pending key version destruction job. type KeyVersionDestructionJob struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the Key version this job relates to. KeyVersionId string `protobuf:"bytes,10,opt,name=key_version_id,json=keyVersionId,proto3" json:"key_version_id,omitempty" class:"public"` // @gotags: `class:"public"` // Scope information for this resource. @@ -450,16 +435,16 @@ type KeyVersionDestructionJob struct { // All rows must be re-encrypted before the key version can be destroyed. CompletedCount int64 `protobuf:"varint,50,opt,name=completed_count,json=completedCount,proto3" json:"completed_count,omitempty" class:"public"` // @gotags: `class:"public"` // The total number of rows that need re-encrypting. - TotalCount int64 `protobuf:"varint,60,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty" class:"public"` // @gotags: `class:"public"` + TotalCount int64 `protobuf:"varint,60,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *KeyVersionDestructionJob) Reset() { *x = KeyVersionDestructionJob{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KeyVersionDestructionJob) String() string { @@ -470,7 +455,7 @@ func (*KeyVersionDestructionJob) ProtoMessage() {} func (x *KeyVersionDestructionJob) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_scopes_v1_scope_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -722,68 +707,6 @@ func file_controller_api_resources_scopes_v1_scope_proto_init() { if File_controller_api_resources_scopes_v1_scope_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_scopes_v1_scope_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*ScopeInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_scopes_v1_scope_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Scope); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_scopes_v1_scope_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*KeyVersion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_scopes_v1_scope_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*Key); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_scopes_v1_scope_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*KeyVersionDestructionJob); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/sdk/pbs/controller/api/resources/session_recordings/session_recording.pb.go b/sdk/pbs/controller/api/resources/session_recordings/session_recording.pb.go index b5adac5885..53a28cbacf 100644 --- a/sdk/pbs/controller/api/resources/session_recordings/session_recording.pb.go +++ b/sdk/pbs/controller/api/resources/session_recordings/session_recording.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/sessionrecordings/v1/session_recording.proto @@ -32,10 +32,7 @@ const ( // ChannelRecording contains recorded information about a single Channel within a Connection. // Channels are only present in multiplexed protocols, such as SSH. type ChannelRecording struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the Channel recording. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The total number of bytes uploaded from the client in the Channel. @@ -55,16 +52,16 @@ type ChannelRecording struct { // MimeTypes define the mime types that can // be used to consume the recording of this Channel. // The only supported mime type is "application/x-asciicast". - MimeTypes []string `protobuf:"bytes,9,rep,name=mime_types,proto3" json:"mime_types,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + MimeTypes []string `protobuf:"bytes,9,rep,name=mime_types,proto3" json:"mime_types,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ChannelRecording) Reset() { *x = ChannelRecording{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ChannelRecording) String() string { @@ -75,7 +72,7 @@ func (*ChannelRecording) ProtoMessage() {} func (x *ChannelRecording) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -155,10 +152,7 @@ func (x *ChannelRecording) GetMimeTypes() []string { // ConnectionRecording contains the recording of a single Connection within a Session. type ConnectionRecording struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the Connection recording. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The total number of bytes uploaded from the client in the Connection. @@ -184,15 +178,15 @@ type ConnectionRecording struct { // Optionally, the channels used in this Connection, // if it is using a multiplexed protocol, such as SSH. ChannelRecordings []*ChannelRecording `protobuf:"bytes,10,rep,name=channel_recordings,proto3" json:"channel_recordings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConnectionRecording) Reset() { *x = ConnectionRecording{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConnectionRecording) String() string { @@ -203,7 +197,7 @@ func (*ConnectionRecording) ProtoMessage() {} func (x *ConnectionRecording) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -290,10 +284,7 @@ func (x *ConnectionRecording) GetChannelRecordings() []*ChannelRecording { // User describes an authenticated user in Boundary. type User struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the User. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The name of the User that created the Session. @@ -301,16 +292,16 @@ type User struct { // The description of the User that created the Session. Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty" class:"sensitive"` // @gotags: class:"sensitive" // The scope that the User is in. - Scope *scopes.ScopeInfo `protobuf:"bytes,7,opt,name=scope,proto3" json:"scope,omitempty"` + Scope *scopes.ScopeInfo `protobuf:"bytes,7,opt,name=scope,proto3" json:"scope,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *User) Reset() { *x = User{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *User) String() string { @@ -321,7 +312,7 @@ func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -367,10 +358,7 @@ func (x *User) GetScope() *scopes.ScopeInfo { // HostCatalog describes the HostCatalog that contains the host chosen for the // recorded session. type HostCatalog struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the Host Catalog Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The scope that the Host Catalog is in @@ -383,19 +371,19 @@ type HostCatalog struct { Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty" class:"public"` // @gotags: class:"public" // The type of the Host Catalog. This will be either "static" or "plugin" Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *HostCatalog_Attributes - Attrs isHostCatalog_Attrs `protobuf_oneof:"attrs"` + Attrs isHostCatalog_Attrs `protobuf_oneof:"attrs"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostCatalog) Reset() { *x = HostCatalog{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HostCatalog) String() string { @@ -406,7 +394,7 @@ func (*HostCatalog) ProtoMessage() {} func (x *HostCatalog) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -463,16 +451,18 @@ func (x *HostCatalog) GetType() string { return "" } -func (m *HostCatalog) GetAttrs() isHostCatalog_Attrs { - if m != nil { - return m.Attrs +func (x *HostCatalog) GetAttrs() isHostCatalog_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *HostCatalog) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*HostCatalog_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*HostCatalog_Attributes); ok { + return x.Attributes + } } return nil } @@ -490,10 +480,7 @@ func (*HostCatalog_Attributes) isHostCatalog_Attrs() {} // Host describes the Host that was chosen for the recorded session. type Host struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the Host Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The Host Catalog this Host is in @@ -504,7 +491,7 @@ type Host struct { Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty" class:"public"` // @gotags: class:"public" // The type of the host. This will be either "static" or "plugin" Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *Host_Attributes // *Host_StaticHostAttributes @@ -512,16 +499,16 @@ type Host struct { // The external id of the Host, if any. ExternalId string `protobuf:"bytes,7,opt,name=external_id,proto3" json:"external_id,omitempty" class:"public"` // @gotags: class:"public" // The external name of the Host, if any. - ExternalName string `protobuf:"bytes,8,opt,name=external_name,proto3" json:"external_name,omitempty" class:"public"` // @gotags: class:"public" + ExternalName string `protobuf:"bytes,8,opt,name=external_name,proto3" json:"external_name,omitempty" class:"public"` // @gotags: class:"public" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Host) Reset() { *x = Host{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Host) String() string { @@ -532,7 +519,7 @@ func (*Host) ProtoMessage() {} func (x *Host) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -582,23 +569,27 @@ func (x *Host) GetType() string { return "" } -func (m *Host) GetAttrs() isHost_Attrs { - if m != nil { - return m.Attrs +func (x *Host) GetAttrs() isHost_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *Host) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*Host_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*Host_Attributes); ok { + return x.Attributes + } } return nil } func (x *Host) GetStaticHostAttributes() *StaticHostAttributes { - if x, ok := x.GetAttrs().(*Host_StaticHostAttributes); ok { - return x.StaticHostAttributes + if x != nil { + if x, ok := x.Attrs.(*Host_StaticHostAttributes); ok { + return x.StaticHostAttributes + } } return nil } @@ -635,21 +626,18 @@ func (*Host_Attributes) isHost_Attrs() {} func (*Host_StaticHostAttributes) isHost_Attrs() {} type StaticHostAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The address specified on a static host - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty" class:"public"` // @gotags: class:"public" + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty" class:"public"` // @gotags: class:"public" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StaticHostAttributes) Reset() { *x = StaticHostAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StaticHostAttributes) String() string { @@ -660,7 +648,7 @@ func (*StaticHostAttributes) ProtoMessage() {} func (x *StaticHostAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -684,10 +672,7 @@ func (x *StaticHostAttributes) GetAddress() string { // Target describes a target in Boundary. type Target struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the Target. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The name of the Target, if set. @@ -708,20 +693,20 @@ type Target struct { IngressWorkerFilter string `protobuf:"bytes,9,opt,name=ingress_worker_filter,proto3" json:"ingress_worker_filter,omitempty" class:"public"` // @gotags: class:"public" // The type of the Target. Type string `protobuf:"bytes,10,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *Target_Attributes // *Target_SshTargetAttributes - Attrs isTarget_Attrs `protobuf_oneof:"attrs"` + Attrs isTarget_Attrs `protobuf_oneof:"attrs"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Target) Reset() { *x = Target{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Target) String() string { @@ -732,7 +717,7 @@ func (*Target) ProtoMessage() {} func (x *Target) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -817,23 +802,27 @@ func (x *Target) GetType() string { return "" } -func (m *Target) GetAttrs() isTarget_Attrs { - if m != nil { - return m.Attrs +func (x *Target) GetAttrs() isTarget_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *Target) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*Target_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*Target_Attributes); ok { + return x.Attributes + } } return nil } func (x *Target) GetSshTargetAttributes() *SshTargetAttributes { - if x, ok := x.GetAttrs().(*Target_SshTargetAttributes); ok { - return x.SshTargetAttributes + if x != nil { + if x, ok := x.Attrs.(*Target_SshTargetAttributes); ok { + return x.SshTargetAttributes + } } return nil } @@ -857,23 +846,20 @@ func (*Target_SshTargetAttributes) isTarget_Attrs() {} // SshTargetAttributes contains attributes relevant to Targets of type "ssh" type SshTargetAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The default SSH port that is used when connecting to the endpoint. DefaultPort uint32 `protobuf:"varint,1,opt,name=default_port,proto3" json:"default_port,omitempty" class:"public"` // @gotags: class:"public" // The default TCP port that will be listened on by the client's local proxy. DefaultClientPort uint32 `protobuf:"varint,2,opt,name=default_client_port,proto3" json:"default_client_port,omitempty" class:"public"` // @gotags: class:"public" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SshTargetAttributes) Reset() { *x = SshTargetAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SshTargetAttributes) String() string { @@ -884,7 +870,7 @@ func (*SshTargetAttributes) ProtoMessage() {} func (x *SshTargetAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -915,10 +901,7 @@ func (x *SshTargetAttributes) GetDefaultClientPort() uint32 { // CredentialStore contains all fields related to a Credential Store resource type CredentialStore struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the Credential Store. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The ID of the Scope of which this Credential Store is a part. @@ -929,20 +912,20 @@ type CredentialStore struct { Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty" class:"public"` // @gotags: class:"public" // The Credential Store type. Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *CredentialStore_Attributes // *CredentialStore_VaultCredentialStoreAttributes - Attrs isCredentialStore_Attrs `protobuf_oneof:"attrs"` + Attrs isCredentialStore_Attrs `protobuf_oneof:"attrs"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CredentialStore) Reset() { *x = CredentialStore{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CredentialStore) String() string { @@ -953,7 +936,7 @@ func (*CredentialStore) ProtoMessage() {} func (x *CredentialStore) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1003,23 +986,27 @@ func (x *CredentialStore) GetType() string { return "" } -func (m *CredentialStore) GetAttrs() isCredentialStore_Attrs { - if m != nil { - return m.Attrs +func (x *CredentialStore) GetAttrs() isCredentialStore_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *CredentialStore) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*CredentialStore_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*CredentialStore_Attributes); ok { + return x.Attributes + } } return nil } func (x *CredentialStore) GetVaultCredentialStoreAttributes() *VaultCredentialStoreAttributes { - if x, ok := x.GetAttrs().(*CredentialStore_VaultCredentialStoreAttributes); ok { - return x.VaultCredentialStoreAttributes + if x != nil { + if x, ok := x.Attrs.(*CredentialStore_VaultCredentialStoreAttributes); ok { + return x.VaultCredentialStoreAttributes + } } return nil } @@ -1043,10 +1030,7 @@ func (*CredentialStore_VaultCredentialStoreAttributes) isCredentialStore_Attrs() // The attributes of a vault typed Credential Store. type VaultCredentialStoreAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The complete url address of vault. Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty" class:"public"` // @gotags: class:"public" // The namespace of vault used by this store @@ -1056,16 +1040,16 @@ type VaultCredentialStoreAttributes struct { // Indicates if verification of the TLS certificate is disabled. TlsSkipVerify bool `protobuf:"varint,4,opt,name=tls_skip_verify,proto3" json:"tls_skip_verify,omitempty" class:"public"` // @gotags: class:"public" // Filters to the worker(s) who can handle Vault requests for this cred store if set. - WorkerFilter string `protobuf:"bytes,5,opt,name=worker_filter,proto3" json:"worker_filter,omitempty" class:"public"` // @gotags: class:"public" + WorkerFilter string `protobuf:"bytes,5,opt,name=worker_filter,proto3" json:"worker_filter,omitempty" class:"public"` // @gotags: class:"public" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VaultCredentialStoreAttributes) Reset() { *x = VaultCredentialStoreAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VaultCredentialStoreAttributes) String() string { @@ -1076,7 +1060,7 @@ func (*VaultCredentialStoreAttributes) ProtoMessage() {} func (x *VaultCredentialStoreAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1128,10 +1112,7 @@ func (x *VaultCredentialStoreAttributes) GetWorkerFilter() string { // Credential contains fields related to an Credential resource type Credential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the Credential. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The Credential Store of which this Credential is a part. @@ -1144,22 +1125,22 @@ type Credential struct { Purposes []string `protobuf:"bytes,5,rep,name=purposes,proto3" json:"purposes,omitempty" class:"public"` // @gotags: class:"public" // The Credential type. Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *Credential_Attributes // *Credential_UsernamePasswordAttributes // *Credential_SshPrivateKeyAttributes // *Credential_JsonAttributes - Attrs isCredential_Attrs `protobuf_oneof:"attrs"` + Attrs isCredential_Attrs `protobuf_oneof:"attrs"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Credential) Reset() { *x = Credential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Credential) String() string { @@ -1170,7 +1151,7 @@ func (*Credential) ProtoMessage() {} func (x *Credential) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1227,37 +1208,45 @@ func (x *Credential) GetType() string { return "" } -func (m *Credential) GetAttrs() isCredential_Attrs { - if m != nil { - return m.Attrs +func (x *Credential) GetAttrs() isCredential_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *Credential) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*Credential_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*Credential_Attributes); ok { + return x.Attributes + } } return nil } func (x *Credential) GetUsernamePasswordAttributes() *UsernamePasswordCredentialAttributes { - if x, ok := x.GetAttrs().(*Credential_UsernamePasswordAttributes); ok { - return x.UsernamePasswordAttributes + if x != nil { + if x, ok := x.Attrs.(*Credential_UsernamePasswordAttributes); ok { + return x.UsernamePasswordAttributes + } } return nil } func (x *Credential) GetSshPrivateKeyAttributes() *SshPrivateKeyCredentialAttributes { - if x, ok := x.GetAttrs().(*Credential_SshPrivateKeyAttributes); ok { - return x.SshPrivateKeyAttributes + if x != nil { + if x, ok := x.Attrs.(*Credential_SshPrivateKeyAttributes); ok { + return x.SshPrivateKeyAttributes + } } return nil } func (x *Credential) GetJsonAttributes() *JsonCredentialAttributes { - if x, ok := x.GetAttrs().(*Credential_JsonAttributes); ok { - return x.JsonAttributes + if x != nil { + if x, ok := x.Attrs.(*Credential_JsonAttributes); ok { + return x.JsonAttributes + } } return nil } @@ -1293,23 +1282,20 @@ func (*Credential_JsonAttributes) isCredential_Attrs() {} // The attributes of a UsernamePassword Credential. type UsernamePasswordCredentialAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The username associated with the credential. Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty" class:"public"` // @gotags: class:"public" // The hmac value of the password. - PasswordHmac string `protobuf:"bytes,2,opt,name=password_hmac,json=passwordHmac,proto3" json:"password_hmac,omitempty" class:"public"` // @gotags: class:"public" + PasswordHmac string `protobuf:"bytes,2,opt,name=password_hmac,json=passwordHmac,proto3" json:"password_hmac,omitempty" class:"public"` // @gotags: class:"public" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UsernamePasswordCredentialAttributes) Reset() { *x = UsernamePasswordCredentialAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UsernamePasswordCredentialAttributes) String() string { @@ -1320,7 +1306,7 @@ func (*UsernamePasswordCredentialAttributes) ProtoMessage() {} func (x *UsernamePasswordCredentialAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1351,25 +1337,22 @@ func (x *UsernamePasswordCredentialAttributes) GetPasswordHmac() string { // The attributes of a SshPrivateKey Credential. type SshPrivateKeyCredentialAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The username associated with the credential. Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty" class:"public"` // @gotags: class:"public" // The hmac value of the SSH private key. PrivateKeyHmac string `protobuf:"bytes,2,opt,name=private_key_hmac,json=privateKeyHmac,proto3" json:"private_key_hmac,omitempty" class:"public"` // @gotags: class:"public" // The hmac value of the SSH private key passphrase. PrivateKeyPassphraseHmac string `protobuf:"bytes,3,opt,name=private_key_passphrase_hmac,json=privateKeyPassphraseHmac,proto3" json:"private_key_passphrase_hmac,omitempty" class:"public"` // @gotags: class:"public" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SshPrivateKeyCredentialAttributes) Reset() { *x = SshPrivateKeyCredentialAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SshPrivateKeyCredentialAttributes) String() string { @@ -1380,7 +1363,7 @@ func (*SshPrivateKeyCredentialAttributes) ProtoMessage() {} func (x *SshPrivateKeyCredentialAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1418,21 +1401,18 @@ func (x *SshPrivateKeyCredentialAttributes) GetPrivateKeyPassphraseHmac() string // The attributes of a JSON Credential. type JsonCredentialAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The hmac value of the object. - ObjectHmac string `protobuf:"bytes,1,opt,name=object_hmac,json=objectHmac,proto3" json:"object_hmac,omitempty" class:"public"` // @gotags: class:"public" + ObjectHmac string `protobuf:"bytes,1,opt,name=object_hmac,json=objectHmac,proto3" json:"object_hmac,omitempty" class:"public"` // @gotags: class:"public" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JsonCredentialAttributes) Reset() { *x = JsonCredentialAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JsonCredentialAttributes) String() string { @@ -1443,7 +1423,7 @@ func (*JsonCredentialAttributes) ProtoMessage() {} func (x *JsonCredentialAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1467,10 +1447,7 @@ func (x *JsonCredentialAttributes) GetObjectHmac() string { // CredentialLibrary contains all fields related to an Credential Library resource type CredentialLibrary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the Credential Library. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The credential store of which this library is a part. @@ -1483,22 +1460,22 @@ type CredentialLibrary struct { Purposes []string `protobuf:"bytes,5,rep,name=purposes,proto3" json:"purposes,omitempty" class:"public"` // @gotags: class:"public" // The Credential Library type. Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *CredentialLibrary_Attributes // *CredentialLibrary_VaultCredentialLibraryAttributes // *CredentialLibrary_VaultGenericCredentialLibraryAttributes // *CredentialLibrary_VaultSshCertificateCredentialLibraryAttributes - Attrs isCredentialLibrary_Attrs `protobuf_oneof:"attrs"` + Attrs isCredentialLibrary_Attrs `protobuf_oneof:"attrs"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CredentialLibrary) Reset() { *x = CredentialLibrary{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CredentialLibrary) String() string { @@ -1509,7 +1486,7 @@ func (*CredentialLibrary) ProtoMessage() {} func (x *CredentialLibrary) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1566,37 +1543,45 @@ func (x *CredentialLibrary) GetType() string { return "" } -func (m *CredentialLibrary) GetAttrs() isCredentialLibrary_Attrs { - if m != nil { - return m.Attrs +func (x *CredentialLibrary) GetAttrs() isCredentialLibrary_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *CredentialLibrary) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*CredentialLibrary_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*CredentialLibrary_Attributes); ok { + return x.Attributes + } } return nil } func (x *CredentialLibrary) GetVaultCredentialLibraryAttributes() *VaultCredentialLibraryAttributes { - if x, ok := x.GetAttrs().(*CredentialLibrary_VaultCredentialLibraryAttributes); ok { - return x.VaultCredentialLibraryAttributes + if x != nil { + if x, ok := x.Attrs.(*CredentialLibrary_VaultCredentialLibraryAttributes); ok { + return x.VaultCredentialLibraryAttributes + } } return nil } func (x *CredentialLibrary) GetVaultGenericCredentialLibraryAttributes() *VaultCredentialLibraryAttributes { - if x, ok := x.GetAttrs().(*CredentialLibrary_VaultGenericCredentialLibraryAttributes); ok { - return x.VaultGenericCredentialLibraryAttributes + if x != nil { + if x, ok := x.Attrs.(*CredentialLibrary_VaultGenericCredentialLibraryAttributes); ok { + return x.VaultGenericCredentialLibraryAttributes + } } return nil } func (x *CredentialLibrary) GetVaultSshCertificateCredentialLibraryAttributes() *VaultSSHCertificateCredentialLibraryAttributes { - if x, ok := x.GetAttrs().(*CredentialLibrary_VaultSshCertificateCredentialLibraryAttributes); ok { - return x.VaultSshCertificateCredentialLibraryAttributes + if x != nil { + if x, ok := x.Attrs.(*CredentialLibrary_VaultSshCertificateCredentialLibraryAttributes); ok { + return x.VaultSshCertificateCredentialLibraryAttributes + } } return nil } @@ -1633,25 +1618,22 @@ func (*CredentialLibrary_VaultSshCertificateCredentialLibraryAttributes) isCrede // The attributes of a vault typed Credential Library. type VaultCredentialLibraryAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The path in Vault to request credentials from. Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty" class:"public"` // @gotags: class:"public" // The HTTP method the library uses to communicate with Vault. HttpMethod string `protobuf:"bytes,2,opt,name=http_method,json=httpMethod,proto3" json:"http_method,omitempty" class:"public"` // @gotags: class:"public" // The body of the HTTP request the library sends to vault. HttpRequestBody string `protobuf:"bytes,3,opt,name=http_request_body,json=httpRequestBody,proto3" json:"http_request_body,omitempty" class:"secret"` // @gotags: `class:"secret"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VaultCredentialLibraryAttributes) Reset() { *x = VaultCredentialLibraryAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VaultCredentialLibraryAttributes) String() string { @@ -1662,7 +1644,7 @@ func (*VaultCredentialLibraryAttributes) ProtoMessage() {} func (x *VaultCredentialLibraryAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1700,10 +1682,7 @@ func (x *VaultCredentialLibraryAttributes) GetHttpRequestBody() string { // The attributes of a vault SSH Certificate Credential Library. type VaultSSHCertificateCredentialLibraryAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The path in Vault to request credentials from. Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty" class:"public"` // @gotags: class:"public" // The username used when making an SSH connection. @@ -1715,20 +1694,20 @@ type VaultSSHCertificateCredentialLibraryAttributes struct { // The requested time to live for the certificate. Ttl string `protobuf:"bytes,5,opt,name=ttl,proto3" json:"ttl,omitempty" class:"public"` // @gotags: class:"public" // The critical options that the certificate should be signed for. - CriticalOptions map[string]string `protobuf:"bytes,6,rep,name=critical_options,json=criticalOptions,proto3" json:"critical_options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: class:"public" + CriticalOptions map[string]string `protobuf:"bytes,6,rep,name=critical_options,json=criticalOptions,proto3" json:"critical_options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" class:"public"` // @gotags: class:"public" // The extensions that the certificate should be signed for. - Extensions map[string]string `protobuf:"bytes,7,rep,name=extensions,proto3" json:"extensions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: class:"public" + Extensions map[string]string `protobuf:"bytes,7,rep,name=extensions,proto3" json:"extensions,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" class:"public"` // @gotags: class:"public" // Principals to be signed as "valid_principles" in addition to username. AdditionalValidPrincipals []string `protobuf:"bytes,8,rep,name=additional_valid_principals,json=additionalValidPrincipals,proto3" json:"additional_valid_principals,omitempty" class:"public"` // @gotags: class:"public" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VaultSSHCertificateCredentialLibraryAttributes) Reset() { *x = VaultSSHCertificateCredentialLibraryAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VaultSSHCertificateCredentialLibraryAttributes) String() string { @@ -1739,7 +1718,7 @@ func (*VaultSSHCertificateCredentialLibraryAttributes) ProtoMessage() {} func (x *VaultSSHCertificateCredentialLibraryAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1813,10 +1792,7 @@ func (x *VaultSSHCertificateCredentialLibraryAttributes) GetAdditionalValidPrinc // ValuesAtTime contain information about other Boundary resources as they // were at a certain time through the lifetime of the Session Recording. type ValuesAtTime struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Information about the User that created the Session. User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty" class:"public"` // @gotags: class:"public" // Information about the Target the Session connected to. @@ -1827,15 +1803,15 @@ type ValuesAtTime struct { Credentials []*Credential `protobuf:"bytes,4,rep,name=credentials,proto3" json:"credentials,omitempty"` // Information about the Credential Libraries used for this session. CredentialLibraries []*CredentialLibrary `protobuf:"bytes,5,rep,name=credential_libraries,proto3" json:"credential_libraries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValuesAtTime) Reset() { *x = ValuesAtTime{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ValuesAtTime) String() string { @@ -1846,7 +1822,7 @@ func (*ValuesAtTime) ProtoMessage() {} func (x *ValuesAtTime) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1898,10 +1874,7 @@ func (x *ValuesAtTime) GetCredentialLibraries() []*CredentialLibrary { // SessionRecording contains information about the recording of a Session. type SessionRecording struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the Session recording. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: class:"public" // The scope that the Session Recording is in. @@ -1955,16 +1928,16 @@ type SessionRecording struct { // The time until a session recording is required to be stored. RetainUntil *timestamppb.Timestamp `protobuf:"bytes,20,opt,name=retain_until,proto3" json:"retain_until,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" // The time a session recording is scheduled to be automatically deleted. - DeleteAfter *timestamppb.Timestamp `protobuf:"bytes,21,opt,name=delete_after,proto3" json:"delete_after,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + DeleteAfter *timestamppb.Timestamp `protobuf:"bytes,21,opt,name=delete_after,proto3" json:"delete_after,omitempty" class:"public" eventstream:"observation"` // @gotags: class:"public" eventstream:"observation" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionRecording) Reset() { *x = SessionRecording{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionRecording) String() string { @@ -1975,7 +1948,7 @@ func (*SessionRecording) ProtoMessage() {} func (x *SessionRecording) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2762,236 +2735,6 @@ func file_controller_api_resources_sessionrecordings_v1_session_recording_proto_ if File_controller_api_resources_sessionrecordings_v1_session_recording_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*ChannelRecording); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*ConnectionRecording); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*User); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*HostCatalog); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*Host); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*StaticHostAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*Target); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*SshTargetAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*CredentialStore); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*VaultCredentialStoreAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*Credential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*UsernamePasswordCredentialAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*SshPrivateKeyCredentialAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*JsonCredentialAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*CredentialLibrary); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*VaultCredentialLibraryAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*VaultSSHCertificateCredentialLibraryAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*ValuesAtTime); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*SessionRecording); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_resources_sessionrecordings_v1_session_recording_proto_msgTypes[3].OneofWrappers = []any{ (*HostCatalog_Attributes)(nil), } diff --git a/sdk/pbs/controller/api/resources/sessions/session.pb.go b/sdk/pbs/controller/api/resources/sessions/session.pb.go index 9239805186..feef0f65cf 100644 --- a/sdk/pbs/controller/api/resources/sessions/session.pb.go +++ b/sdk/pbs/controller/api/resources/sessions/session.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/sessions/v1/session.proto @@ -26,25 +26,22 @@ const ( ) type SessionState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The status of the Session, e.g. "pending", "active", "canceling", "terminated". Status string `protobuf:"bytes,10,opt,name=status,proto3" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. The time the Session entered this state. StartTime *timestamppb.Timestamp `protobuf:"bytes,20,opt,name=start_time,proto3" json:"start_time,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. The time the Session stopped being in this state. - EndTime *timestamppb.Timestamp `protobuf:"bytes,30,opt,name=end_time,proto3" json:"end_time,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + EndTime *timestamppb.Timestamp `protobuf:"bytes,30,opt,name=end_time,proto3" json:"end_time,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionState) Reset() { *x = SessionState{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionState) String() string { @@ -55,7 +52,7 @@ func (*SessionState) ProtoMessage() {} func (x *SessionState) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -93,10 +90,7 @@ func (x *SessionState) GetEndTime() *timestamppb.Timestamp { // Connection contains information about a specific connection in a session type Connection struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // client_tcp_address of the connection ClientTcpAddress string `protobuf:"bytes,3,opt,name=client_tcp_address,json=clientTcpAddress,proto3" json:"client_tcp_address,omitempty" class:"public"` // @gotags: `class:"public"` // client_tcp_port of the connection @@ -110,16 +104,16 @@ type Connection struct { // bytes_down of the connection BytesDown int64 `protobuf:"varint,8,opt,name=bytes_down,json=bytesDown,proto3" json:"bytes_down,omitempty" class:"public"` // @gotags: `class:"public"` // closed_reason of the connection - ClosedReason string `protobuf:"bytes,9,opt,name=closed_reason,json=closedReason,proto3" json:"closed_reason,omitempty" class:"public"` // @gotags: `class:"public"` + ClosedReason string `protobuf:"bytes,9,opt,name=closed_reason,json=closedReason,proto3" json:"closed_reason,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Connection) Reset() { *x = Connection{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Connection) String() string { @@ -130,7 +124,7 @@ func (*Connection) ProtoMessage() {} func (x *Connection) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -196,10 +190,7 @@ func (x *Connection) GetClosedReason() string { // Session contains all fields related to a Session resource type Session struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the Session. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. The ID of the Target that created this Session. @@ -239,16 +230,16 @@ type Session struct { // Output only. The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The associated connections with this session. - Connections []*Connection `protobuf:"bytes,310,rep,name=connections,proto3" json:"connections,omitempty"` + Connections []*Connection `protobuf:"bytes,310,rep,name=connections,proto3" json:"connections,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Session) Reset() { *x = Session{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Session) String() string { @@ -259,7 +250,7 @@ func (*Session) ProtoMessage() {} func (x *Session) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -560,44 +551,6 @@ func file_controller_api_resources_sessions_v1_session_proto_init() { if File_controller_api_resources_sessions_v1_session_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_sessions_v1_session_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*SessionState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessions_v1_session_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Connection); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_sessions_v1_session_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*Session); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/sdk/pbs/controller/api/resources/storagebuckets/storage_bucket.pb.go b/sdk/pbs/controller/api/resources/storagebuckets/storage_bucket.pb.go index deb1089def..70bf6d0bfe 100644 --- a/sdk/pbs/controller/api/resources/storagebuckets/storage_bucket.pb.go +++ b/sdk/pbs/controller/api/resources/storagebuckets/storage_bucket.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/storagebuckets/v1/storage_bucket.proto @@ -31,10 +31,7 @@ const ( // StorageBucket manages external object stores type StorageBucket struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the storage bucket. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The ID of the Scope of which this storage bucket is a part. @@ -74,15 +71,15 @@ type StorageBucket struct { StorageBucketCredentialId string `protobuf:"bytes,160,opt,name=storage_bucket_credential_id,json=storageBucketCredentialId,proto3" json:"storage_bucket_credential_id,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The available actions on this resource for this user. AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StorageBucket) Reset() { *x = StorageBucket{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_storagebuckets_v1_storage_bucket_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_storagebuckets_v1_storage_bucket_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StorageBucket) String() string { @@ -93,7 +90,7 @@ func (*StorageBucket) ProtoMessage() {} func (x *StorageBucket) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_storagebuckets_v1_storage_bucket_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -244,10 +241,7 @@ func (x *StorageBucket) GetAuthorizedActions() []string { // StorageBucketPersisted is data that the plugin can read from and write // to that will always be provided by the host. type StorageBucketPersisted struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Data has no explicit structure other than valid json. // Data may contain sensitive information, such as // credentials, rotated secrets, or configuration data. @@ -255,16 +249,16 @@ type StorageBucketPersisted struct { // a series of different method calls. // Data is encrypted at-rest by Boundary. // Data is never returned to the end user. - Data *structpb.Struct `protobuf:"bytes,10,opt,name=data,proto3" json:"data,omitempty"` + Data *structpb.Struct `protobuf:"bytes,10,opt,name=data,proto3" json:"data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StorageBucketPersisted) Reset() { *x = StorageBucketPersisted{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_storagebuckets_v1_storage_bucket_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_storagebuckets_v1_storage_bucket_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StorageBucketPersisted) String() string { @@ -275,7 +269,7 @@ func (*StorageBucketPersisted) ProtoMessage() {} func (x *StorageBucketPersisted) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_storagebuckets_v1_storage_bucket_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -443,32 +437,6 @@ func file_controller_api_resources_storagebuckets_v1_storage_bucket_proto_init() if File_controller_api_resources_storagebuckets_v1_storage_bucket_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_storagebuckets_v1_storage_bucket_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*StorageBucket); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_storagebuckets_v1_storage_bucket_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*StorageBucketPersisted); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/sdk/pbs/controller/api/resources/targets/target.pb.go b/sdk/pbs/controller/api/resources/targets/target.pb.go index aee4d500b1..4df210e3f5 100644 --- a/sdk/pbs/controller/api/resources/targets/target.pb.go +++ b/sdk/pbs/controller/api/resources/targets/target.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/targets/v1/target.proto @@ -31,25 +31,22 @@ const ( // Alias is the alias information related to the aliases associated with the target. type Alias struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the alias referencing this target. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Ouput only. The value of the alias referencing this target. - Value string `protobuf:"bytes,20,opt,name=value,proto3" json:"value,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` - ScopeId string `protobuf:"bytes,30,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`; - Attributes *TargetAliasAttributes `protobuf:"bytes,40,opt,name=attributes,proto3" json:"attributes,omitempty"` + Value string `protobuf:"bytes,20,opt,name=value,proto3" json:"value,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + ScopeId string `protobuf:"bytes,30,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`; + Attributes *TargetAliasAttributes `protobuf:"bytes,40,opt,name=attributes,proto3" json:"attributes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Alias) Reset() { *x = Alias{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Alias) String() string { @@ -60,7 +57,7 @@ func (*Alias) ProtoMessage() {} func (x *Alias) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -104,20 +101,17 @@ func (x *Alias) GetAttributes() *TargetAliasAttributes { } type TargetAliasAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` AuthorizeSessionArguments *AuthorizeSessionArguments `protobuf:"bytes,1,opt,name=authorize_session_arguments,proto3" json:"authorize_session_arguments,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TargetAliasAttributes) Reset() { *x = TargetAliasAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TargetAliasAttributes) String() string { @@ -128,7 +122,7 @@ func (*TargetAliasAttributes) ProtoMessage() {} func (x *TargetAliasAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -151,26 +145,23 @@ func (x *TargetAliasAttributes) GetAuthorizeSessionArguments() *AuthorizeSession } type AuthorizeSessionArguments struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // host_id is the id of the host that the session will be authorized for. // When specified authorizing a session using this alias will have the same // effect of authorizing a session to the alias' destination_id and passing // in this value through the -host-id flag. If the host-id flag is also // specified when calling authorize-session an error will be returned unless // the provided host-id matches this value. - HostId string `protobuf:"bytes,1,opt,name=host_id,proto3" json:"host_id,omitempty" class:"public"` // @gotags: `class:"public"` + HostId string `protobuf:"bytes,1,opt,name=host_id,proto3" json:"host_id,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthorizeSessionArguments) Reset() { *x = AuthorizeSessionArguments{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthorizeSessionArguments) String() string { @@ -181,7 +172,7 @@ func (*AuthorizeSessionArguments) ProtoMessage() {} func (x *AuthorizeSessionArguments) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -204,23 +195,20 @@ func (x *AuthorizeSessionArguments) GetHostId() string { } type HostSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the Host Set. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. The Host Catalog to which this Host Source belongs. HostCatalogId string `protobuf:"bytes,20,opt,name=host_catalog_id,proto3" json:"host_catalog_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostSource) Reset() { *x = HostSource{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HostSource) String() string { @@ -231,7 +219,7 @@ func (*HostSource) ProtoMessage() {} func (x *HostSource) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -261,10 +249,7 @@ func (x *HostSource) GetHostCatalogId() string { } type CredentialSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The ID of the Credential. May be empty if the credential is dynamically generated from a library. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The name of the Credential source. @@ -277,15 +262,15 @@ type CredentialSource struct { Type string `protobuf:"bytes,60,opt,name=type,proto3" json:"type,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The type of the credential, empty if unspecified. CredentialType string `protobuf:"bytes,70,opt,name=credential_type,json=credentialType,proto3" json:"credential_type,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CredentialSource) Reset() { *x = CredentialSource{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CredentialSource) String() string { @@ -296,7 +281,7 @@ func (*CredentialSource) ProtoMessage() {} func (x *CredentialSource) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -355,24 +340,21 @@ func (x *CredentialSource) GetCredentialType() string { // The actual secret for a session credential. type SessionSecret struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The base64-encoded value representing the raw bytes from the // credential provider. Raw string `protobuf:"bytes,10,opt,name=raw,proto3" json:"raw,omitempty" class:"secret"` // @gotags: `class:"secret"` // Output only. The decoded raw string, if a JSON object. - Decoded *structpb.Struct `protobuf:"bytes,20,opt,name=decoded,proto3" json:"decoded,omitempty"` + Decoded *structpb.Struct `protobuf:"bytes,20,opt,name=decoded,proto3" json:"decoded,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionSecret) Reset() { *x = SessionSecret{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionSecret) String() string { @@ -383,7 +365,7 @@ func (*SessionSecret) ProtoMessage() {} func (x *SessionSecret) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -414,26 +396,23 @@ func (x *SessionSecret) GetDecoded() *structpb.Struct { // Credential information for a session. type SessionCredential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The credential source information. CredentialSource *CredentialSource `protobuf:"bytes,1,opt,name=credential_source,json=credentialSource,proto3" json:"credential_source,omitempty"` // Output only. The secret of this credential base64 encoded. Secret *SessionSecret `protobuf:"bytes,20,opt,name=secret,proto3" json:"secret,omitempty"` // Output only. The fields of the strongly typed credential, empty if the credential type of the // credential source is unspecified. - Credential *structpb.Struct `protobuf:"bytes,40,opt,name=credential,proto3" json:"credential,omitempty"` + Credential *structpb.Struct `protobuf:"bytes,40,opt,name=credential,proto3" json:"credential,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionCredential) Reset() { *x = SessionCredential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionCredential) String() string { @@ -444,7 +423,7 @@ func (*SessionCredential) ProtoMessage() {} func (x *SessionCredential) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -482,10 +461,7 @@ func (x *SessionCredential) GetCredential() *structpb.Struct { // Target contains all fields related to a Target resource type Target struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the resource. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The Scope of of this resource. This must be defined for creation of this resource, but is otherwise output only. @@ -531,7 +507,7 @@ type Target struct { InjectedApplicationCredentialSourceIds []string `protobuf:"bytes,520,rep,name=injected_application_credential_source_ids,proto3" json:"injected_application_credential_source_ids,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The injected application credential sources associated with this Target. InjectedApplicationCredentialSources []*CredentialSource `protobuf:"bytes,530,rep,name=injected_application_credential_sources,proto3" json:"injected_application_credential_sources,omitempty"` - // Types that are assignable to Attrs: + // Types that are valid to be assigned to Attrs: // // *Target_Attributes // *Target_TcpTargetAttributes @@ -545,16 +521,16 @@ type Target struct { Aliases []*Alias `protobuf:"bytes,550,rep,name=aliases,proto3" json:"aliases,omitempty" class:"public"` // @gotags: `class:"public"` // Input only. with_aliases specify the aliases that should be created when // the target is created. This field is only usable at target creation time. - WithAliases []*Alias `protobuf:"bytes,560,rep,name=with_aliases,proto3" json:"with_aliases,omitempty" class:"public"` // @gotags: `class:"public"` + WithAliases []*Alias `protobuf:"bytes,560,rep,name=with_aliases,proto3" json:"with_aliases,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Target) Reset() { *x = Target{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Target) String() string { @@ -565,7 +541,7 @@ func (*Target) ProtoMessage() {} func (x *Target) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -721,30 +697,36 @@ func (x *Target) GetInjectedApplicationCredentialSources() []*CredentialSource { return nil } -func (m *Target) GetAttrs() isTarget_Attrs { - if m != nil { - return m.Attrs +func (x *Target) GetAttrs() isTarget_Attrs { + if x != nil { + return x.Attrs } return nil } func (x *Target) GetAttributes() *structpb.Struct { - if x, ok := x.GetAttrs().(*Target_Attributes); ok { - return x.Attributes + if x != nil { + if x, ok := x.Attrs.(*Target_Attributes); ok { + return x.Attributes + } } return nil } func (x *Target) GetTcpTargetAttributes() *TcpTargetAttributes { - if x, ok := x.GetAttrs().(*Target_TcpTargetAttributes); ok { - return x.TcpTargetAttributes + if x != nil { + if x, ok := x.Attrs.(*Target_TcpTargetAttributes); ok { + return x.TcpTargetAttributes + } } return nil } func (x *Target) GetSshTargetAttributes() *SshTargetAttributes { - if x, ok := x.GetAttrs().(*Target_SshTargetAttributes); ok { - return x.SshTargetAttributes + if x != nil { + if x, ok := x.Attrs.(*Target_SshTargetAttributes); ok { + return x.SshTargetAttributes + } } return nil } @@ -802,23 +784,20 @@ func (*Target_SshTargetAttributes) isTarget_Attrs() {} // TcpTargetAttributes contains attributes relevant to Targets of type "tcp" type TcpTargetAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The default TCP port that will be used when connecting to the endpoint unless overridden by a Host Set or Host. DefaultPort *wrapperspb.UInt32Value `protobuf:"bytes,10,opt,name=default_port,proto3" json:"default_port,omitempty" class:"public"` // @gotags: `class:"public"` // The default TCP port that will be listened on by the client's local proxy. DefaultClientPort *wrapperspb.UInt32Value `protobuf:"bytes,20,opt,name=default_client_port,proto3" json:"default_client_port,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TcpTargetAttributes) Reset() { *x = TcpTargetAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TcpTargetAttributes) String() string { @@ -829,7 +808,7 @@ func (*TcpTargetAttributes) ProtoMessage() {} func (x *TcpTargetAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -860,10 +839,7 @@ func (x *TcpTargetAttributes) GetDefaultClientPort() *wrapperspb.UInt32Value { // SshTargetAttributes contains attributes relevant to Targets of type "ssh" type SshTargetAttributes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The default SSH port that will be used when connecting to the endpoint unless overridden by a Host Set or Host. // If this is not specified the DefaultPort will be 22. DefaultPort *wrapperspb.UInt32Value `protobuf:"bytes,10,opt,name=default_port,proto3" json:"default_port,omitempty" class:"public"` // @gotags: `class:"public"` @@ -873,15 +849,15 @@ type SshTargetAttributes struct { StorageBucketId *wrapperspb.StringValue `protobuf:"bytes,30,opt,name=storage_bucket_id,proto3" json:"storage_bucket_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // A boolean indicating if session recording has been enabled EnableSessionRecording *wrapperspb.BoolValue `protobuf:"bytes,40,opt,name=enable_session_recording,proto3" json:"enable_session_recording,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SshTargetAttributes) Reset() { *x = SshTargetAttributes{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SshTargetAttributes) String() string { @@ -892,7 +868,7 @@ func (*SshTargetAttributes) ProtoMessage() {} func (x *SshTargetAttributes) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -937,21 +913,18 @@ func (x *SshTargetAttributes) GetEnableSessionRecording() *wrapperspb.BoolValue // WorkerInfo contains information about workers, returned in to the client in SessionAuthorization type WorkerInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The address of the worker. - Address string `protobuf:"bytes,10,opt,name=address,proto3" json:"address,omitempty" class:"public"` // @gotags: `class:"public"` + Address string `protobuf:"bytes,10,opt,name=address,proto3" json:"address,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkerInfo) Reset() { *x = WorkerInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WorkerInfo) String() string { @@ -962,7 +935,7 @@ func (*WorkerInfo) ProtoMessage() {} func (x *WorkerInfo) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -987,10 +960,7 @@ func (x *WorkerInfo) GetAddress() string { // SessionAuthorizationData contains the fields needed by the proxy command to // connect to a worker. It is marshaled inside the SessionAuthorization message. type SessionAuthorizationData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the session. SessionId string `protobuf:"bytes,10,opt,name=session_id,proto3" json:"session_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. The ID of the Target authorizing this session. @@ -1020,15 +990,15 @@ type SessionAuthorizationData struct { WorkerInfo []*WorkerInfo `protobuf:"bytes,150,rep,name=worker_info,proto3" json:"worker_info,omitempty"` // Output only. A default port to listen on for client connections. DefaultClientPort uint32 `protobuf:"varint,160,opt,name=default_client_port,proto3" json:"default_client_port,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionAuthorizationData) Reset() { *x = SessionAuthorizationData{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionAuthorizationData) String() string { @@ -1039,7 +1009,7 @@ func (*SessionAuthorizationData) ProtoMessage() {} func (x *SessionAuthorizationData) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1154,10 +1124,7 @@ func (x *SessionAuthorizationData) GetDefaultClientPort() uint32 { // SessionAuthorization contains all fields related to authorization for a Session. It's in the Targets package because it's returned by a Target's authorize action. type SessionAuthorization struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the Session. SessionId string `protobuf:"bytes,10,opt,name=session_id,proto3" json:"session_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. The ID of the Target authorizing this Session. @@ -1189,15 +1156,15 @@ type SessionAuthorization struct { Credentials []*SessionCredential `protobuf:"bytes,110,rep,name=credentials,proto3" json:"credentials,omitempty"` // Output only. The ID of the Session Recording. SessionRecordingId string `protobuf:"bytes,115,opt,name=session_recording_id,proto3" json:"session_recording_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionAuthorization) Reset() { *x = SessionAuthorization{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionAuthorization) String() string { @@ -1208,7 +1175,7 @@ func (*SessionAuthorization) ProtoMessage() {} func (x *SessionAuthorization) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1330,23 +1297,20 @@ func (x *SessionAuthorization) GetSessionRecordingId() string { // The layout of the struct for "credential" field in SessionCredential for a username_password credential type. type UsernamePasswordCredential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Username of the credential Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty" class:"sensitive"` // @gotags: `class:"sensitive"` // Password of the credential - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty" class:"secret"` // @gotags: `class:"secret"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty" class:"secret"` // @gotags: `class:"secret"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UsernamePasswordCredential) Reset() { *x = UsernamePasswordCredential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UsernamePasswordCredential) String() string { @@ -1357,7 +1321,7 @@ func (*UsernamePasswordCredential) ProtoMessage() {} func (x *UsernamePasswordCredential) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1388,25 +1352,22 @@ func (x *UsernamePasswordCredential) GetPassword() string { // The layout of the struct for "credential" field in SessionCredential for a ssh_private_key credential type. type SshPrivateKeyCredential struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Username of the credential Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty" class:"sensitive"` // @gotags: `class:"sensitive"` // Private key of the credential PrivateKey string `protobuf:"bytes,2,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty" class:"secret"` // @gotags: `class:"secret"` // The optional passphrase of the private_key PrivateKeyPassphrase string `protobuf:"bytes,3,opt,name=private_key_passphrase,json=privateKeyPassphrase,proto3" json:"private_key_passphrase,omitempty" class:"secret"` // @gotags: `class:"secret"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SshPrivateKeyCredential) Reset() { *x = SshPrivateKeyCredential{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SshPrivateKeyCredential) String() string { @@ -1417,7 +1378,7 @@ func (*SshPrivateKeyCredential) ProtoMessage() {} func (x *SshPrivateKeyCredential) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_targets_v1_target_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1955,188 +1916,6 @@ func file_controller_api_resources_targets_v1_target_proto_init() { if File_controller_api_resources_targets_v1_target_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_targets_v1_target_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Alias); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_targets_v1_target_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*TargetAliasAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_targets_v1_target_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*AuthorizeSessionArguments); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_targets_v1_target_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*HostSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_targets_v1_target_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CredentialSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_targets_v1_target_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*SessionSecret); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_targets_v1_target_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*SessionCredential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_targets_v1_target_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*Target); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_targets_v1_target_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*TcpTargetAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_targets_v1_target_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*SshTargetAttributes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_targets_v1_target_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*WorkerInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_targets_v1_target_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*SessionAuthorizationData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_targets_v1_target_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*SessionAuthorization); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_targets_v1_target_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*UsernamePasswordCredential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_targets_v1_target_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*SshPrivateKeyCredential); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_api_resources_targets_v1_target_proto_msgTypes[7].OneofWrappers = []any{ (*Target_Attributes)(nil), (*Target_TcpTargetAttributes)(nil), diff --git a/sdk/pbs/controller/api/resources/users/user.pb.go b/sdk/pbs/controller/api/resources/users/user.pb.go index ab0e69eb8e..6ef0d5cb57 100644 --- a/sdk/pbs/controller/api/resources/users/user.pb.go +++ b/sdk/pbs/controller/api/resources/users/user.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/users/v1/user.proto @@ -28,23 +28,20 @@ const ( ) type Account struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the Account. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. The Scope containing the Account. - ScopeId string `protobuf:"bytes,20,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + ScopeId string `protobuf:"bytes,20,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Account) Reset() { *x = Account{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_users_v1_user_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_users_v1_user_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Account) String() string { @@ -55,7 +52,7 @@ func (*Account) ProtoMessage() {} func (x *Account) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_users_v1_user_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -86,10 +83,7 @@ func (x *Account) GetScopeId() string { // User contains all fields related to a User resource type User struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the User. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The ID of the Scope this resource is in. @@ -125,15 +119,15 @@ type User struct { // Output only. primary_account_id is a string that maps to the user's account // public_id from the scope's primary auth method PrimaryAccountId string `protobuf:"bytes,140,opt,name=primary_account_id,proto3" json:"primary_account_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *User) Reset() { *x = User{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_users_v1_user_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_users_v1_user_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *User) String() string { @@ -144,7 +138,7 @@ func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_users_v1_user_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -378,32 +372,6 @@ func file_controller_api_resources_users_v1_user_proto_init() { if File_controller_api_resources_users_v1_user_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_users_v1_user_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Account); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_users_v1_user_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*User); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/sdk/pbs/controller/api/resources/workers/worker.pb.go b/sdk/pbs/controller/api/resources/workers/worker.pb.go index 7f943011f5..17e617d708 100644 --- a/sdk/pbs/controller/api/resources/workers/worker.pb.go +++ b/sdk/pbs/controller/api/resources/workers/worker.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/api/resources/workers/v1/worker.proto @@ -30,10 +30,7 @@ const ( // Worker contains all fields related to a Worker resource type Worker struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the User. Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // The ID of the Scope this resource is in. @@ -59,9 +56,9 @@ type Worker struct { // Output only. The deduplicated union of the tags reported by the worker from // its configuration and any tags added through other means. This is used // when applying worker filters. - CanonicalTags map[string]*structpb.ListValue `protobuf:"bytes,120,rep,name=canonical_tags,proto3" json:"canonical_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: `class:"public"` + CanonicalTags map[string]*structpb.ListValue `protobuf:"bytes,120,rep,name=canonical_tags,proto3" json:"canonical_tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" class:"public"` // @gotags: `class:"public"` // Output only. The tags set in the worker's configuration file. - ConfigTags map[string]*structpb.ListValue `protobuf:"bytes,130,rep,name=config_tags,proto3" json:"config_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: `class:"public"` + ConfigTags map[string]*structpb.ListValue `protobuf:"bytes,130,rep,name=config_tags,proto3" json:"config_tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" class:"public"` // @gotags: `class:"public"` // Output only. The time this worker daemon last reported its status. LastStatusTime *timestamppb.Timestamp `protobuf:"bytes,140,opt,name=last_status_time,proto3" json:"last_status_time,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // worker_generated_auth_token is input only. Supports the worker led node @@ -78,7 +75,7 @@ type Worker struct { // or `kms`. Type string `protobuf:"bytes,170,opt,name=type,proto3" json:"type,omitempty"` // Output only. The api tags set for the worker. - ApiTags map[string]*structpb.ListValue `protobuf:"bytes,180,rep,name=api_tags,proto3" json:"api_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: `class:"public"` + ApiTags map[string]*structpb.ListValue `protobuf:"bytes,180,rep,name=api_tags,proto3" json:"api_tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" class:"public"` // @gotags: `class:"public"` // Output only. The version of the Boundary binary the worker is running. ReleaseVersion string `protobuf:"bytes,190,opt,name=release_version,proto3" json:"release_version,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"` // Output only. The ids of the workers directly connected to this worker. @@ -97,16 +94,16 @@ type Worker struct { // Output only. The remote_storage_state indicats the permission state of the storage buckets that the Worker // is actively using. The possible permission state types include: write, read, and delete. The possible // permission state values include: unknown, error, and ok. - RemoteStorageState map[string]*RemoteStorageState `protobuf:"bytes,320,rep,name=remote_storage_state,proto3" json:"remote_storage_state,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: `class:"public"` + RemoteStorageState map[string]*RemoteStorageState `protobuf:"bytes,320,rep,name=remote_storage_state,proto3" json:"remote_storage_state,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Worker) Reset() { *x = Worker{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Worker) String() string { @@ -117,7 +114,7 @@ func (*Worker) ProtoMessage() {} func (x *Worker) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -287,25 +284,22 @@ func (x *Worker) GetRemoteStorageState() map[string]*RemoteStorageState { } type RemoteStorageState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The overall health status of the storage bucket. The possible values include: error and available. // The status exists in an available state if each remote storage permission state does not have an error. An unknown remote // storage permission state does not affect the overall health status. Status string `protobuf:"bytes,10,opt,name=status,proto3" json:"status,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The remote storage permissions contains the permission state for each individual permission type. - Permissions *RemoteStoragePermissions `protobuf:"bytes,20,opt,name=permissions,proto3" json:"permissions,omitempty" class:"public"` // @gotags: `class:"public"` + Permissions *RemoteStoragePermissions `protobuf:"bytes,20,opt,name=permissions,proto3" json:"permissions,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoteStorageState) Reset() { *x = RemoteStorageState{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoteStorageState) String() string { @@ -316,7 +310,7 @@ func (*RemoteStorageState) ProtoMessage() {} func (x *RemoteStorageState) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -346,10 +340,7 @@ func (x *RemoteStorageState) GetPermissions() *RemoteStoragePermissions { } type RemoteStoragePermissions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The status of the write permission state for the given storage bucket. // Possible values are: unknown, error, and ok. Write string `protobuf:"bytes,10,opt,name=write,proto3" json:"write,omitempty" class:"public"` // @gotags: `class:"public"` @@ -358,16 +349,16 @@ type RemoteStoragePermissions struct { Read string `protobuf:"bytes,20,opt,name=read,proto3" json:"read,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The status of the delete permission state for the given storage bucket. // Possible values are: unknown, error, and ok. - Delete string `protobuf:"bytes,30,opt,name=delete,proto3" json:"delete,omitempty" class:"public"` // @gotags: `class:"public"` + Delete string `protobuf:"bytes,30,opt,name=delete,proto3" json:"delete,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoteStoragePermissions) Reset() { *x = RemoteStoragePermissions{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoteStoragePermissions) String() string { @@ -378,7 +369,7 @@ func (*RemoteStoragePermissions) ProtoMessage() {} func (x *RemoteStoragePermissions) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -415,10 +406,7 @@ func (x *RemoteStoragePermissions) GetDelete() string { } type Certificate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Output only. The ID of the certificate Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The public key of the cert authority @@ -426,16 +414,16 @@ type Certificate struct { // Output only. The time before which this CA is invalid NotBeforeTime *timestamppb.Timestamp `protobuf:"bytes,30,opt,name=not_before_time,json=notBeforeTime,proto3" json:"not_before_time,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The time after which this CA is invalid - NotAfterTime *timestamppb.Timestamp `protobuf:"bytes,40,opt,name=not_after_time,json=notAfterTime,proto3" json:"not_after_time,omitempty" class:"public"` // @gotags: `class:"public"` + NotAfterTime *timestamppb.Timestamp `protobuf:"bytes,40,opt,name=not_after_time,json=notAfterTime,proto3" json:"not_after_time,omitempty" class:"public"` // @gotags: `class:"public"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Certificate) Reset() { *x = Certificate{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Certificate) String() string { @@ -446,7 +434,7 @@ func (*Certificate) ProtoMessage() {} func (x *Certificate) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -490,20 +478,17 @@ func (x *Certificate) GetNotAfterTime() *timestamppb.Timestamp { } type CertificateAuthority struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Certs []*Certificate `protobuf:"bytes,10,rep,name=certs,proto3" json:"certs,omitempty" class:"public"` // @gotags: `class:"public"` unknownFields protoimpl.UnknownFields - - Certs []*Certificate `protobuf:"bytes,10,rep,name=certs,proto3" json:"certs,omitempty" class:"public"` // @gotags: `class:"public"` + sizeCache protoimpl.SizeCache } func (x *CertificateAuthority) Reset() { *x = CertificateAuthority{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CertificateAuthority) String() string { @@ -514,7 +499,7 @@ func (*CertificateAuthority) ProtoMessage() {} func (x *CertificateAuthority) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -781,68 +766,6 @@ func file_controller_api_resources_workers_v1_worker_proto_init() { if File_controller_api_resources_workers_v1_worker_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_api_resources_workers_v1_worker_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Worker); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_workers_v1_worker_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*RemoteStorageState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_workers_v1_worker_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*RemoteStoragePermissions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_workers_v1_worker_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*Certificate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_api_resources_workers_v1_worker_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*CertificateAuthority); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/sdk/pbs/controller/protooptions/options.pb.go b/sdk/pbs/controller/protooptions/options.pb.go index bd59533012..c9f9c95bf7 100644 --- a/sdk/pbs/controller/protooptions/options.pb.go +++ b/sdk/pbs/controller/protooptions/options.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/custom_options/v1/options.proto @@ -25,21 +25,18 @@ const ( ) type MaskMapping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + This string `protobuf:"bytes,1,opt,name=this,proto3" json:"this,omitempty"` + That string `protobuf:"bytes,2,opt,name=that,proto3" json:"that,omitempty"` unknownFields protoimpl.UnknownFields - - This string `protobuf:"bytes,1,opt,name=this,proto3" json:"this,omitempty"` - That string `protobuf:"bytes,2,opt,name=that,proto3" json:"that,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MaskMapping) Reset() { *x = MaskMapping{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_custom_options_v1_options_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_custom_options_v1_options_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MaskMapping) String() string { @@ -50,7 +47,7 @@ func (*MaskMapping) ProtoMessage() {} func (x *MaskMapping) ProtoReflect() protoreflect.Message { mi := &file_controller_custom_options_v1_options_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -80,24 +77,21 @@ func (x *MaskMapping) GetThat() string { } type AliasInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Aliasable: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Aliasable: // // *AliasInfo_Always // *AliasInfo_UnlessSet - Aliasable isAliasInfo_Aliasable `protobuf_oneof:"aliasable"` + Aliasable isAliasInfo_Aliasable `protobuf_oneof:"aliasable"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AliasInfo) Reset() { *x = AliasInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_custom_options_v1_options_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_custom_options_v1_options_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AliasInfo) String() string { @@ -108,7 +102,7 @@ func (*AliasInfo) ProtoMessage() {} func (x *AliasInfo) ProtoReflect() protoreflect.Message { mi := &file_controller_custom_options_v1_options_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,23 +117,27 @@ func (*AliasInfo) Descriptor() ([]byte, []int) { return file_controller_custom_options_v1_options_proto_rawDescGZIP(), []int{1} } -func (m *AliasInfo) GetAliasable() isAliasInfo_Aliasable { - if m != nil { - return m.Aliasable +func (x *AliasInfo) GetAliasable() isAliasInfo_Aliasable { + if x != nil { + return x.Aliasable } return nil } func (x *AliasInfo) GetAlways() bool { - if x, ok := x.GetAliasable().(*AliasInfo_Always); ok { - return x.Always + if x != nil { + if x, ok := x.Aliasable.(*AliasInfo_Always); ok { + return x.Always + } } return false } func (x *AliasInfo) GetUnlessSet() *AliasableUnlessSet { - if x, ok := x.GetAliasable().(*AliasInfo_UnlessSet); ok { - return x.UnlessSet + if x != nil { + if x, ok := x.Aliasable.(*AliasInfo_UnlessSet); ok { + return x.UnlessSet + } } return nil } @@ -164,22 +162,19 @@ func (*AliasInfo_Always) isAliasInfo_Aliasable() {} func (*AliasInfo_UnlessSet) isAliasInfo_Aliasable() {} type AliasableUnlessSet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // fields is a list of fields that, if any of them are set with a non zero // value then the field this FieldOption is on should not be treated as an alias. - Fields []string `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` + Fields []string `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AliasableUnlessSet) Reset() { *x = AliasableUnlessSet{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_custom_options_v1_options_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_custom_options_v1_options_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AliasableUnlessSet) String() string { @@ -190,7 +185,7 @@ func (*AliasableUnlessSet) ProtoMessage() {} func (x *AliasableUnlessSet) ProtoReflect() protoreflect.Message { mi := &file_controller_custom_options_v1_options_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -411,44 +406,6 @@ func file_controller_custom_options_v1_options_proto_init() { if File_controller_custom_options_v1_options_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_controller_custom_options_v1_options_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*MaskMapping); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_custom_options_v1_options_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*AliasInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_custom_options_v1_options_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*AliasableUnlessSet); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_controller_custom_options_v1_options_proto_msgTypes[1].OneofWrappers = []any{ (*AliasInfo_Always)(nil), (*AliasInfo_UnlessSet)(nil), diff --git a/sdk/pbs/controller/protooptions/testing.pb.go b/sdk/pbs/controller/protooptions/testing.pb.go index d4ed87060b..f03c6ee15e 100644 --- a/sdk/pbs/controller/protooptions/testing.pb.go +++ b/sdk/pbs/controller/protooptions/testing.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: controller/custom_options/v1/testing.proto @@ -24,23 +24,20 @@ const ( ) type TestBase struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FirstField string `protobuf:"bytes,1,opt,name=first_field,json=firstField,proto3" json:"first_field,omitempty"` - StrangeFormatField string `protobuf:"bytes,2,opt,name=StrangeFormatField,proto3" json:"StrangeFormatField,omitempty"` - FieldWithDifferentJsonName string `protobuf:"bytes,3,opt,name=field_with_different_json_name,json=json_name,proto3" json:"field_with_different_json_name,omitempty"` - ExtraField string `protobuf:"bytes,4,opt,name=extra_field,json=extraField,proto3" json:"extra_field,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FirstField string `protobuf:"bytes,1,opt,name=first_field,json=firstField,proto3" json:"first_field,omitempty"` + StrangeFormatField string `protobuf:"bytes,2,opt,name=StrangeFormatField,proto3" json:"StrangeFormatField,omitempty"` + FieldWithDifferentJsonName string `protobuf:"bytes,3,opt,name=field_with_different_json_name,json=json_name,proto3" json:"field_with_different_json_name,omitempty"` + ExtraField string `protobuf:"bytes,4,opt,name=extra_field,json=extraField,proto3" json:"extra_field,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestBase) Reset() { *x = TestBase{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_custom_options_v1_testing_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_custom_options_v1_testing_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestBase) String() string { @@ -51,7 +48,7 @@ func (*TestBase) ProtoMessage() {} func (x *TestBase) ProtoReflect() protoreflect.Message { mi := &file_controller_custom_options_v1_testing_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -95,22 +92,19 @@ func (x *TestBase) GetExtraField() string { } type TestBaseSplit1 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FirstField string `protobuf:"bytes,1,opt,name=first_field,json=firstField,proto3" json:"first_field,omitempty"` - FieldWithDifferentJsonName string `protobuf:"bytes,2,opt,name=field_with_different_json_name,json=json_name,proto3" json:"field_with_different_json_name,omitempty"` - ExtraField string `protobuf:"bytes,3,opt,name=extra_field,json=extraField,proto3" json:"extra_field,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FirstField string `protobuf:"bytes,1,opt,name=first_field,json=firstField,proto3" json:"first_field,omitempty"` + FieldWithDifferentJsonName string `protobuf:"bytes,2,opt,name=field_with_different_json_name,json=json_name,proto3" json:"field_with_different_json_name,omitempty"` + ExtraField string `protobuf:"bytes,3,opt,name=extra_field,json=extraField,proto3" json:"extra_field,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestBaseSplit1) Reset() { *x = TestBaseSplit1{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_custom_options_v1_testing_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_custom_options_v1_testing_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestBaseSplit1) String() string { @@ -121,7 +115,7 @@ func (*TestBaseSplit1) ProtoMessage() {} func (x *TestBaseSplit1) ProtoReflect() protoreflect.Message { mi := &file_controller_custom_options_v1_testing_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -158,20 +152,17 @@ func (x *TestBaseSplit1) GetExtraField() string { } type TestBaseSplit2 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SplitField1 string `protobuf:"bytes,1,opt,name=split_field1,json=splitField1,proto3" json:"split_field1,omitempty"` unknownFields protoimpl.UnknownFields - - SplitField1 string `protobuf:"bytes,1,opt,name=split_field1,json=splitField1,proto3" json:"split_field1,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TestBaseSplit2) Reset() { *x = TestBaseSplit2{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_custom_options_v1_testing_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_custom_options_v1_testing_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestBaseSplit2) String() string { @@ -182,7 +173,7 @@ func (*TestBaseSplit2) ProtoMessage() {} func (x *TestBaseSplit2) ProtoReflect() protoreflect.Message { mi := &file_controller_custom_options_v1_testing_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -205,23 +196,20 @@ func (x *TestBaseSplit2) GetSplitField1() string { } type TestProperlyNamedFields struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OtherFirstField string `protobuf:"bytes,1,opt,name=other_first_field,json=otherFirstField,proto3" json:"other_first_field,omitempty"` - OtherSecondField string `protobuf:"bytes,2,opt,name=other_second_field,json=otherSecondField,proto3" json:"other_second_field,omitempty"` - OtherThirdField string `protobuf:"bytes,3,opt,name=other_third_field,proto3" json:"other_third_field,omitempty"` - AnotherExtraField string `protobuf:"bytes,4,opt,name=another_extra_field,json=anotherExtraField,proto3" json:"another_extra_field,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + OtherFirstField string `protobuf:"bytes,1,opt,name=other_first_field,json=otherFirstField,proto3" json:"other_first_field,omitempty"` + OtherSecondField string `protobuf:"bytes,2,opt,name=other_second_field,json=otherSecondField,proto3" json:"other_second_field,omitempty"` + OtherThirdField string `protobuf:"bytes,3,opt,name=other_third_field,proto3" json:"other_third_field,omitempty"` + AnotherExtraField string `protobuf:"bytes,4,opt,name=another_extra_field,json=anotherExtraField,proto3" json:"another_extra_field,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestProperlyNamedFields) Reset() { *x = TestProperlyNamedFields{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_custom_options_v1_testing_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_custom_options_v1_testing_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestProperlyNamedFields) String() string { @@ -232,7 +220,7 @@ func (*TestProperlyNamedFields) ProtoMessage() {} func (x *TestProperlyNamedFields) ProtoReflect() protoreflect.Message { mi := &file_controller_custom_options_v1_testing_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -276,23 +264,20 @@ func (x *TestProperlyNamedFields) GetAnotherExtraField() string { } type TestNameDoesntMap struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FirstDoesntMap string `protobuf:"bytes,1,opt,name=first_doesnt_map,json=firstDoesntMap,proto3" json:"first_doesnt_map,omitempty"` - SecondDoesntMap string `protobuf:"bytes,2,opt,name=second_doesnt_map,json=secondDoesntMap,proto3" json:"second_doesnt_map,omitempty"` - ThirdDoesntMap string `protobuf:"bytes,3,opt,name=third_doesnt_map,json=thirdDoesntMap,proto3" json:"third_doesnt_map,omitempty"` - AnotherExtraField string `protobuf:"bytes,4,opt,name=another_extra_field,json=anotherExtraField,proto3" json:"another_extra_field,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FirstDoesntMap string `protobuf:"bytes,1,opt,name=first_doesnt_map,json=firstDoesntMap,proto3" json:"first_doesnt_map,omitempty"` + SecondDoesntMap string `protobuf:"bytes,2,opt,name=second_doesnt_map,json=secondDoesntMap,proto3" json:"second_doesnt_map,omitempty"` + ThirdDoesntMap string `protobuf:"bytes,3,opt,name=third_doesnt_map,json=thirdDoesntMap,proto3" json:"third_doesnt_map,omitempty"` + AnotherExtraField string `protobuf:"bytes,4,opt,name=another_extra_field,json=anotherExtraField,proto3" json:"another_extra_field,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestNameDoesntMap) Reset() { *x = TestNameDoesntMap{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_custom_options_v1_testing_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_custom_options_v1_testing_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestNameDoesntMap) String() string { @@ -303,7 +288,7 @@ func (*TestNameDoesntMap) ProtoMessage() {} func (x *TestNameDoesntMap) ProtoReflect() protoreflect.Message { mi := &file_controller_custom_options_v1_testing_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -347,21 +332,18 @@ func (x *TestNameDoesntMap) GetAnotherExtraField() string { } type TestNotEnoughFields struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OtherFirstField string `protobuf:"bytes,1,opt,name=other_first_field,json=otherFirstField,proto3" json:"other_first_field,omitempty"` - OtherSecondField string `protobuf:"bytes,2,opt,name=other_second_field,json=otherSecondField,proto3" json:"other_second_field,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + OtherFirstField string `protobuf:"bytes,1,opt,name=other_first_field,json=otherFirstField,proto3" json:"other_first_field,omitempty"` + OtherSecondField string `protobuf:"bytes,2,opt,name=other_second_field,json=otherSecondField,proto3" json:"other_second_field,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestNotEnoughFields) Reset() { *x = TestNotEnoughFields{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_custom_options_v1_testing_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_custom_options_v1_testing_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestNotEnoughFields) String() string { @@ -372,7 +354,7 @@ func (*TestNotEnoughFields) ProtoMessage() {} func (x *TestNotEnoughFields) ProtoReflect() protoreflect.Message { mi := &file_controller_custom_options_v1_testing_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -402,24 +384,21 @@ func (x *TestNotEnoughFields) GetOtherSecondField() string { } type TestManyToOneMappings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OtherFirstField string `protobuf:"bytes,1,opt,name=other_first_field,json=otherFirstField,proto3" json:"other_first_field,omitempty"` - OtherSecondField string `protobuf:"bytes,2,opt,name=other_second_field,json=otherSecondField,proto3" json:"other_second_field,omitempty"` - OtherThirdField string `protobuf:"bytes,3,opt,name=other_third_field,json=otherThirdField,proto3" json:"other_third_field,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + OtherFirstField string `protobuf:"bytes,1,opt,name=other_first_field,json=otherFirstField,proto3" json:"other_first_field,omitempty"` + OtherSecondField string `protobuf:"bytes,2,opt,name=other_second_field,json=otherSecondField,proto3" json:"other_second_field,omitempty"` + OtherThirdField string `protobuf:"bytes,3,opt,name=other_third_field,json=otherThirdField,proto3" json:"other_third_field,omitempty"` // this field maps to the first_field like 'other_first_field' - ExtraField string `protobuf:"bytes,4,opt,name=extra_field,json=extraField,proto3" json:"extra_field,omitempty"` + ExtraField string `protobuf:"bytes,4,opt,name=extra_field,json=extraField,proto3" json:"extra_field,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TestManyToOneMappings) Reset() { *x = TestManyToOneMappings{} - if protoimpl.UnsafeEnabled { - mi := &file_controller_custom_options_v1_testing_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_controller_custom_options_v1_testing_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TestManyToOneMappings) String() string { @@ -430,7 +409,7 @@ func (*TestManyToOneMappings) ProtoMessage() {} func (x *TestManyToOneMappings) ProtoReflect() protoreflect.Message { mi := &file_controller_custom_options_v1_testing_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -640,92 +619,6 @@ func file_controller_custom_options_v1_testing_proto_init() { return } file_controller_custom_options_v1_options_proto_init() - if !protoimpl.UnsafeEnabled { - file_controller_custom_options_v1_testing_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*TestBase); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_custom_options_v1_testing_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*TestBaseSplit1); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_custom_options_v1_testing_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*TestBaseSplit2); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_custom_options_v1_testing_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*TestProperlyNamedFields); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_custom_options_v1_testing_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*TestNameDoesntMap); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_custom_options_v1_testing_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*TestNotEnoughFields); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_controller_custom_options_v1_testing_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*TestManyToOneMappings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/sdk/pbs/plugin/host_plugin_service.pb.go b/sdk/pbs/plugin/host_plugin_service.pb.go index 324ba2bfaa..1a19962bb2 100644 --- a/sdk/pbs/plugin/host_plugin_service.pb.go +++ b/sdk/pbs/plugin/host_plugin_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: plugin/v1/host_plugin_service.proto @@ -28,23 +28,20 @@ const ( ) type NormalizeCatalogDataRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The incoming attributes in the create or update request. Attributes *structpb.Struct `protobuf:"bytes,100,opt,name=attributes,proto3" json:"attributes,omitempty"` // The plugin information for this request. - Plugin *plugins.PluginInfo `protobuf:"bytes,110,opt,name=plugin,proto3" json:"plugin,omitempty"` + Plugin *plugins.PluginInfo `protobuf:"bytes,110,opt,name=plugin,proto3" json:"plugin,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NormalizeCatalogDataRequest) Reset() { *x = NormalizeCatalogDataRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NormalizeCatalogDataRequest) String() string { @@ -55,7 +52,7 @@ func (*NormalizeCatalogDataRequest) ProtoMessage() {} func (x *NormalizeCatalogDataRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -85,22 +82,19 @@ func (x *NormalizeCatalogDataRequest) GetPlugin() *plugins.PluginInfo { } type NormalizeCatalogDataResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Outgoing attributes. If nil, no changes will be recorded. If non-nil, the // values here will be used in place of the original set of attributes. - Attributes *structpb.Struct `protobuf:"bytes,100,opt,name=attributes,proto3" json:"attributes,omitempty"` + Attributes *structpb.Struct `protobuf:"bytes,100,opt,name=attributes,proto3" json:"attributes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NormalizeCatalogDataResponse) Reset() { *x = NormalizeCatalogDataResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NormalizeCatalogDataResponse) String() string { @@ -111,7 +105,7 @@ func (*NormalizeCatalogDataResponse) ProtoMessage() {} func (x *NormalizeCatalogDataResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -134,23 +128,20 @@ func (x *NormalizeCatalogDataResponse) GetAttributes() *structpb.Struct { } type OnCreateCatalogRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The host catalog to create. The request may contain optional // secret data to help authenticate the request against a cloud // API. - Catalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=catalog,proto3" json:"catalog,omitempty"` + Catalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=catalog,proto3" json:"catalog,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnCreateCatalogRequest) Reset() { *x = OnCreateCatalogRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnCreateCatalogRequest) String() string { @@ -161,7 +152,7 @@ func (*OnCreateCatalogRequest) ProtoMessage() {} func (x *OnCreateCatalogRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -184,24 +175,21 @@ func (x *OnCreateCatalogRequest) GetCatalog() *hostcatalogs.HostCatalog { } type OnCreateCatalogResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Secret data to persist encrypted within Boundary. This should be used to // store authentication data and other necessary configuration to be used in // later hooks and calls. Returning an error from the call will cause this // data to not be persisted. If this is nil, nothing is written. - Persisted *HostCatalogPersisted `protobuf:"bytes,10,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *HostCatalogPersisted `protobuf:"bytes,10,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnCreateCatalogResponse) Reset() { *x = OnCreateCatalogResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnCreateCatalogResponse) String() string { @@ -212,7 +200,7 @@ func (*OnCreateCatalogResponse) ProtoMessage() {} func (x *OnCreateCatalogResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -235,10 +223,7 @@ func (x *OnCreateCatalogResponse) GetPersisted() *HostCatalogPersisted { } type OnUpdateCatalogRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The existing state of the catalog. CurrentCatalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=current_catalog,json=currentCatalog,proto3" json:"current_catalog,omitempty"` // The requested new state of the catalog. This field may contain optional @@ -246,16 +231,16 @@ type OnUpdateCatalogRequest struct { // contained within the persisted state. NewCatalog *hostcatalogs.HostCatalog `protobuf:"bytes,20,opt,name=new_catalog,json=newCatalog,proto3" json:"new_catalog,omitempty"` // The existing persisted secret data. - Persisted *HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnUpdateCatalogRequest) Reset() { *x = OnUpdateCatalogRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnUpdateCatalogRequest) String() string { @@ -266,7 +251,7 @@ func (*OnUpdateCatalogRequest) ProtoMessage() {} func (x *OnUpdateCatalogRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -303,24 +288,21 @@ func (x *OnUpdateCatalogRequest) GetPersisted() *HostCatalogPersisted { } type OnUpdateCatalogResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The updated secret data to persist encrypted within Boundary. If an error // is returned, the update of the persisted data is aborted. If this is nil, // no changes are written. To remove all values, simply return an allocated // but empty map. - Persisted *HostCatalogPersisted `protobuf:"bytes,10,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *HostCatalogPersisted `protobuf:"bytes,10,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnUpdateCatalogResponse) Reset() { *x = OnUpdateCatalogResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnUpdateCatalogResponse) String() string { @@ -331,7 +313,7 @@ func (*OnUpdateCatalogResponse) ProtoMessage() {} func (x *OnUpdateCatalogResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -354,25 +336,22 @@ func (x *OnUpdateCatalogResponse) GetPersisted() *HostCatalogPersisted { } type OnDeleteCatalogRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The existing state of the catalog to delete. Catalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=catalog,proto3" json:"catalog,omitempty"` // The host sets contained in the catalog being deleted. Sets []*hostsets.HostSet `protobuf:"bytes,20,rep,name=sets,proto3" json:"sets,omitempty"` // The existing persisted secret data. - Persisted *HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnDeleteCatalogRequest) Reset() { *x = OnDeleteCatalogRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnDeleteCatalogRequest) String() string { @@ -383,7 +362,7 @@ func (*OnDeleteCatalogRequest) ProtoMessage() {} func (x *OnDeleteCatalogRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -420,18 +399,16 @@ func (x *OnDeleteCatalogRequest) GetPersisted() *HostCatalogPersisted { } type OnDeleteCatalogResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnDeleteCatalogResponse) Reset() { *x = OnDeleteCatalogResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnDeleteCatalogResponse) String() string { @@ -442,7 +419,7 @@ func (*OnDeleteCatalogResponse) ProtoMessage() {} func (x *OnDeleteCatalogResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -458,23 +435,20 @@ func (*OnDeleteCatalogResponse) Descriptor() ([]byte, []int) { } type NormalizeSetDataRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The incoming attributes in the create or update request. Attributes *structpb.Struct `protobuf:"bytes,100,opt,name=attributes,proto3" json:"attributes,omitempty"` // The plugin information for this request. - Plugin *plugins.PluginInfo `protobuf:"bytes,110,opt,name=plugin,proto3" json:"plugin,omitempty"` + Plugin *plugins.PluginInfo `protobuf:"bytes,110,opt,name=plugin,proto3" json:"plugin,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NormalizeSetDataRequest) Reset() { *x = NormalizeSetDataRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NormalizeSetDataRequest) String() string { @@ -485,7 +459,7 @@ func (*NormalizeSetDataRequest) ProtoMessage() {} func (x *NormalizeSetDataRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -515,22 +489,19 @@ func (x *NormalizeSetDataRequest) GetPlugin() *plugins.PluginInfo { } type NormalizeSetDataResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Outgoing attributes. If nil, no changes will be recorded. If non-nil, the // values here will be used in place of the original set of attributes. - Attributes *structpb.Struct `protobuf:"bytes,100,opt,name=attributes,proto3" json:"attributes,omitempty"` + Attributes *structpb.Struct `protobuf:"bytes,100,opt,name=attributes,proto3" json:"attributes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NormalizeSetDataResponse) Reset() { *x = NormalizeSetDataResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NormalizeSetDataResponse) String() string { @@ -541,7 +512,7 @@ func (*NormalizeSetDataResponse) ProtoMessage() {} func (x *NormalizeSetDataResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -564,25 +535,22 @@ func (x *NormalizeSetDataResponse) GetAttributes() *structpb.Struct { } type OnCreateSetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The host catalog that the set belongs to. Catalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=catalog,proto3" json:"catalog,omitempty"` // The host set to create. Set *hostsets.HostSet `protobuf:"bytes,20,opt,name=set,proto3" json:"set,omitempty"` // The persisted data for the host catalog that the set belongs to. - Persisted *HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnCreateSetRequest) Reset() { *x = OnCreateSetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnCreateSetRequest) String() string { @@ -593,7 +561,7 @@ func (*OnCreateSetRequest) ProtoMessage() {} func (x *OnCreateSetRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -630,18 +598,16 @@ func (x *OnCreateSetRequest) GetPersisted() *HostCatalogPersisted { } type OnCreateSetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnCreateSetResponse) Reset() { *x = OnCreateSetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnCreateSetResponse) String() string { @@ -652,7 +618,7 @@ func (*OnCreateSetResponse) ProtoMessage() {} func (x *OnCreateSetResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -668,10 +634,7 @@ func (*OnCreateSetResponse) Descriptor() ([]byte, []int) { } type OnUpdateSetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The host catalog that the set belongs to. Catalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=catalog,proto3" json:"catalog,omitempty"` // The existing state of the host set. @@ -679,16 +642,16 @@ type OnUpdateSetRequest struct { // The requested new state of the host set. NewSet *hostsets.HostSet `protobuf:"bytes,30,opt,name=new_set,json=newSet,proto3" json:"new_set,omitempty"` // The persisted data for the host catalog that the set belongs to. - Persisted *HostCatalogPersisted `protobuf:"bytes,40,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *HostCatalogPersisted `protobuf:"bytes,40,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnUpdateSetRequest) Reset() { *x = OnUpdateSetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnUpdateSetRequest) String() string { @@ -699,7 +662,7 @@ func (*OnUpdateSetRequest) ProtoMessage() {} func (x *OnUpdateSetRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -743,18 +706,16 @@ func (x *OnUpdateSetRequest) GetPersisted() *HostCatalogPersisted { } type OnUpdateSetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnUpdateSetResponse) Reset() { *x = OnUpdateSetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnUpdateSetResponse) String() string { @@ -765,7 +726,7 @@ func (*OnUpdateSetResponse) ProtoMessage() {} func (x *OnUpdateSetResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -781,25 +742,22 @@ func (*OnUpdateSetResponse) Descriptor() ([]byte, []int) { } type OnDeleteSetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The host catalog that the set belongs to. Catalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=catalog,proto3" json:"catalog,omitempty"` // The host set to delete. Set *hostsets.HostSet `protobuf:"bytes,20,opt,name=set,proto3" json:"set,omitempty"` // The persisted data for the host catalog that the set belongs to. - Persisted *HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnDeleteSetRequest) Reset() { *x = OnDeleteSetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnDeleteSetRequest) String() string { @@ -810,7 +768,7 @@ func (*OnDeleteSetRequest) ProtoMessage() {} func (x *OnDeleteSetRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -847,18 +805,16 @@ func (x *OnDeleteSetRequest) GetPersisted() *HostCatalogPersisted { } type OnDeleteSetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnDeleteSetResponse) Reset() { *x = OnDeleteSetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnDeleteSetResponse) String() string { @@ -869,7 +825,7 @@ func (*OnDeleteSetResponse) ProtoMessage() {} func (x *OnDeleteSetResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -885,26 +841,23 @@ func (*OnDeleteSetResponse) Descriptor() ([]byte, []int) { } type ListHostsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The host catalog that the supplied host sets belong to. Catalog *hostcatalogs.HostCatalog `protobuf:"bytes,10,opt,name=catalog,proto3" json:"catalog,omitempty"` // The host sets to look up hosts for. Sets []*hostsets.HostSet `protobuf:"bytes,20,rep,name=sets,proto3" json:"sets,omitempty"` // The persisted data for the host catalog that the supplied host // sets belong to. - Persisted *HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *HostCatalogPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListHostsRequest) Reset() { *x = ListHostsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListHostsRequest) String() string { @@ -915,7 +868,7 @@ func (*ListHostsRequest) ProtoMessage() {} func (x *ListHostsRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -952,21 +905,18 @@ func (x *ListHostsRequest) GetPersisted() *HostCatalogPersisted { } type ListHostsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The hosts to return. - Hosts []*ListHostsResponseHost `protobuf:"bytes,10,rep,name=hosts,proto3" json:"hosts,omitempty"` + Hosts []*ListHostsResponseHost `protobuf:"bytes,10,rep,name=hosts,proto3" json:"hosts,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListHostsResponse) Reset() { *x = ListHostsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListHostsResponse) String() string { @@ -977,7 +927,7 @@ func (*ListHostsResponse) ProtoMessage() {} func (x *ListHostsResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1000,10 +950,7 @@ func (x *ListHostsResponse) GetHosts() []*ListHostsResponseHost { } type ListHostsResponseHost struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Required. A stable identifier for this host. This field is used // to generate a stable ID for the host within Boundary and is // included in audit logs. It should be set to something unique and @@ -1026,16 +973,16 @@ type ListHostsResponseHost struct { // Optional. Provider-specific metadata that is applicable to this // host. Example: host descriptions, tags, alternate network // addresses, etc. - Attributes *structpb.Struct `protobuf:"bytes,100,opt,name=attributes,proto3" json:"attributes,omitempty"` + Attributes *structpb.Struct `protobuf:"bytes,100,opt,name=attributes,proto3" json:"attributes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListHostsResponseHost) Reset() { *x = ListHostsResponseHost{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListHostsResponseHost) String() string { @@ -1046,7 +993,7 @@ func (*ListHostsResponseHost) ProtoMessage() {} func (x *ListHostsResponseHost) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1126,21 +1073,18 @@ func (x *ListHostsResponseHost) GetAttributes() *structpb.Struct { // // TODO: Add a size limit to this data before we export the plugin SDK. type HostCatalogPersisted struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The persisted secrets. - Secrets *structpb.Struct `protobuf:"bytes,100,opt,name=secrets,proto3" json:"secrets,omitempty"` + Secrets *structpb.Struct `protobuf:"bytes,100,opt,name=secrets,proto3" json:"secrets,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostCatalogPersisted) Reset() { *x = HostCatalogPersisted{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HostCatalogPersisted) String() string { @@ -1151,7 +1095,7 @@ func (*HostCatalogPersisted) ProtoMessage() {} func (x *HostCatalogPersisted) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_host_plugin_service_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1527,248 +1471,6 @@ func file_plugin_v1_host_plugin_service_proto_init() { if File_plugin_v1_host_plugin_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_plugin_v1_host_plugin_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*NormalizeCatalogDataRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*NormalizeCatalogDataResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*OnCreateCatalogRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*OnCreateCatalogResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*OnUpdateCatalogRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*OnUpdateCatalogResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*OnDeleteCatalogRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*OnDeleteCatalogResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*NormalizeSetDataRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*NormalizeSetDataResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*OnCreateSetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*OnCreateSetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*OnUpdateSetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*OnUpdateSetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*OnDeleteSetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*OnDeleteSetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*ListHostsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*ListHostsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*ListHostsResponseHost); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_host_plugin_service_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*HostCatalogPersisted); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/sdk/pbs/plugin/storage_plugin_service.pb.go b/sdk/pbs/plugin/storage_plugin_service.pb.go index 5beed94cb4..d92b0484c7 100644 --- a/sdk/pbs/plugin/storage_plugin_service.pb.go +++ b/sdk/pbs/plugin/storage_plugin_service.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: plugin/v1/storage_plugin_service.proto @@ -78,23 +78,20 @@ func (StateType) EnumDescriptor() ([]byte, []int) { } type OnCreateStorageBucketRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Required. The storage bucket to create. The request may contain optional // secret data to help authenticate the request against a cloud // API. - Bucket *storagebuckets.StorageBucket `protobuf:"bytes,10,opt,name=bucket,proto3" json:"bucket,omitempty"` + Bucket *storagebuckets.StorageBucket `protobuf:"bytes,10,opt,name=bucket,proto3" json:"bucket,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnCreateStorageBucketRequest) Reset() { *x = OnCreateStorageBucketRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnCreateStorageBucketRequest) String() string { @@ -105,7 +102,7 @@ func (*OnCreateStorageBucketRequest) ProtoMessage() {} func (x *OnCreateStorageBucketRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -128,21 +125,18 @@ func (x *OnCreateStorageBucketRequest) GetBucket() *storagebuckets.StorageBucket } type OnCreateStorageBucketResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The persisted data represents state persisted between storage bucket calls. - Persisted *storagebuckets.StorageBucketPersisted `protobuf:"bytes,10,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *storagebuckets.StorageBucketPersisted `protobuf:"bytes,10,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnCreateStorageBucketResponse) Reset() { *x = OnCreateStorageBucketResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnCreateStorageBucketResponse) String() string { @@ -153,7 +147,7 @@ func (*OnCreateStorageBucketResponse) ProtoMessage() {} func (x *OnCreateStorageBucketResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -176,10 +170,7 @@ func (x *OnCreateStorageBucketResponse) GetPersisted() *storagebuckets.StorageBu } type OnUpdateStorageBucketRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Required. The existing state of the storage bucket. CurrentBucket *storagebuckets.StorageBucket `protobuf:"bytes,10,opt,name=current_bucket,json=currentBucket,proto3" json:"current_bucket,omitempty"` // Required. The requested new state of the storage bucket. @@ -187,16 +178,16 @@ type OnUpdateStorageBucketRequest struct { // updated from the last returned persisted state. NewBucket *storagebuckets.StorageBucket `protobuf:"bytes,20,opt,name=new_bucket,json=newBucket,proto3" json:"new_bucket,omitempty"` // Required. The existing persisted secret data. - Persisted *storagebuckets.StorageBucketPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *storagebuckets.StorageBucketPersisted `protobuf:"bytes,30,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnUpdateStorageBucketRequest) Reset() { *x = OnUpdateStorageBucketRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnUpdateStorageBucketRequest) String() string { @@ -207,7 +198,7 @@ func (*OnUpdateStorageBucketRequest) ProtoMessage() {} func (x *OnUpdateStorageBucketRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -244,21 +235,18 @@ func (x *OnUpdateStorageBucketRequest) GetPersisted() *storagebuckets.StorageBuc } type OnUpdateStorageBucketResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The persisted data represents state persisted between storage bucket calls. - Persisted *storagebuckets.StorageBucketPersisted `protobuf:"bytes,10,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *storagebuckets.StorageBucketPersisted `protobuf:"bytes,10,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnUpdateStorageBucketResponse) Reset() { *x = OnUpdateStorageBucketResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnUpdateStorageBucketResponse) String() string { @@ -269,7 +257,7 @@ func (*OnUpdateStorageBucketResponse) ProtoMessage() {} func (x *OnUpdateStorageBucketResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -292,23 +280,20 @@ func (x *OnUpdateStorageBucketResponse) GetPersisted() *storagebuckets.StorageBu } type OnDeleteStorageBucketRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Required. The existing state of the storage bucket to delete. Bucket *storagebuckets.StorageBucket `protobuf:"bytes,10,opt,name=bucket,proto3" json:"bucket,omitempty"` // Required. The existing persisted secret data. - Persisted *storagebuckets.StorageBucketPersisted `protobuf:"bytes,20,opt,name=persisted,proto3" json:"persisted,omitempty"` + Persisted *storagebuckets.StorageBucketPersisted `protobuf:"bytes,20,opt,name=persisted,proto3" json:"persisted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnDeleteStorageBucketRequest) Reset() { *x = OnDeleteStorageBucketRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnDeleteStorageBucketRequest) String() string { @@ -319,7 +304,7 @@ func (*OnDeleteStorageBucketRequest) ProtoMessage() {} func (x *OnDeleteStorageBucketRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -349,18 +334,16 @@ func (x *OnDeleteStorageBucketRequest) GetPersisted() *storagebuckets.StorageBuc } type OnDeleteStorageBucketResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OnDeleteStorageBucketResponse) Reset() { *x = OnDeleteStorageBucketResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OnDeleteStorageBucketResponse) String() string { @@ -371,7 +354,7 @@ func (*OnDeleteStorageBucketResponse) ProtoMessage() {} func (x *OnDeleteStorageBucketResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -387,21 +370,18 @@ func (*OnDeleteStorageBucketResponse) Descriptor() ([]byte, []int) { } type ValidatePermissionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Required. The existing state of the storage bucket. - Bucket *storagebuckets.StorageBucket `protobuf:"bytes,10,opt,name=bucket,proto3" json:"bucket,omitempty"` + Bucket *storagebuckets.StorageBucket `protobuf:"bytes,10,opt,name=bucket,proto3" json:"bucket,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidatePermissionsRequest) Reset() { *x = ValidatePermissionsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ValidatePermissionsRequest) String() string { @@ -412,7 +392,7 @@ func (*ValidatePermissionsRequest) ProtoMessage() {} func (x *ValidatePermissionsRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -435,18 +415,16 @@ func (x *ValidatePermissionsRequest) GetBucket() *storagebuckets.StorageBucket { } type ValidatePermissionsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidatePermissionsResponse) Reset() { *x = ValidatePermissionsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ValidatePermissionsResponse) String() string { @@ -457,7 +435,7 @@ func (*ValidatePermissionsResponse) ProtoMessage() {} func (x *ValidatePermissionsResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -473,23 +451,20 @@ func (*ValidatePermissionsResponse) Descriptor() ([]byte, []int) { } type HeadObjectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Required. The existing state of the storage bucket. Bucket *storagebuckets.StorageBucket `protobuf:"bytes,10,opt,name=bucket,proto3" json:"bucket,omitempty"` // Required. The path of the object. - Key string `protobuf:"bytes,20,opt,name=key,proto3" json:"key,omitempty"` + Key string `protobuf:"bytes,20,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HeadObjectRequest) Reset() { *x = HeadObjectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeadObjectRequest) String() string { @@ -500,7 +475,7 @@ func (*HeadObjectRequest) ProtoMessage() {} func (x *HeadObjectRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -530,23 +505,20 @@ func (x *HeadObjectRequest) GetKey() string { } type HeadObjectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The size of the object in bytes. ContentLength int64 `protobuf:"varint,10,opt,name=content_length,json=contentLength,proto3" json:"content_length,omitempty"` // Creation date of the object. - LastModified *timestamppb.Timestamp `protobuf:"bytes,20,opt,name=last_modified,json=lastModified,proto3" json:"last_modified,omitempty"` + LastModified *timestamppb.Timestamp `protobuf:"bytes,20,opt,name=last_modified,json=lastModified,proto3" json:"last_modified,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HeadObjectResponse) Reset() { *x = HeadObjectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeadObjectResponse) String() string { @@ -557,7 +529,7 @@ func (*HeadObjectResponse) ProtoMessage() {} func (x *HeadObjectResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -587,25 +559,22 @@ func (x *HeadObjectResponse) GetLastModified() *timestamppb.Timestamp { } type GetObjectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Required. The existing state of the storage bucket. Bucket *storagebuckets.StorageBucket `protobuf:"bytes,10,opt,name=bucket,proto3" json:"bucket,omitempty"` // Required. The path of the object. Key string `protobuf:"bytes,20,opt,name=key,proto3" json:"key,omitempty"` // Optional. The maximum size of the stream response message. Defaults to 64KiB. - ChunkSize uint32 `protobuf:"varint,30,opt,name=chunk_size,json=chunkSize,proto3" json:"chunk_size,omitempty"` + ChunkSize uint32 `protobuf:"varint,30,opt,name=chunk_size,json=chunkSize,proto3" json:"chunk_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetObjectRequest) Reset() { *x = GetObjectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetObjectRequest) String() string { @@ -616,7 +585,7 @@ func (*GetObjectRequest) ProtoMessage() {} func (x *GetObjectRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -653,21 +622,18 @@ func (x *GetObjectRequest) GetChunkSize() uint32 { } type GetObjectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Object data. - FileChunk []byte `protobuf:"bytes,10,opt,name=file_chunk,json=fileChunk,proto3" json:"file_chunk,omitempty"` + FileChunk []byte `protobuf:"bytes,10,opt,name=file_chunk,json=fileChunk,proto3" json:"file_chunk,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetObjectResponse) Reset() { *x = GetObjectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetObjectResponse) String() string { @@ -678,7 +644,7 @@ func (*GetObjectResponse) ProtoMessage() {} func (x *GetObjectResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -701,25 +667,22 @@ func (x *GetObjectResponse) GetFileChunk() []byte { } type PutObjectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Required. The existing state of the storage bucket. Bucket *storagebuckets.StorageBucket `protobuf:"bytes,10,opt,name=bucket,proto3" json:"bucket,omitempty"` // Required. The path of the object. Key string `protobuf:"bytes,20,opt,name=key,proto3" json:"key,omitempty"` // Required. The path of the object on local disk. - Path string `protobuf:"bytes,30,opt,name=path,proto3" json:"path,omitempty"` + Path string `protobuf:"bytes,30,opt,name=path,proto3" json:"path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PutObjectRequest) Reset() { *x = PutObjectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PutObjectRequest) String() string { @@ -730,7 +693,7 @@ func (*PutObjectRequest) ProtoMessage() {} func (x *PutObjectRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -767,21 +730,18 @@ func (x *PutObjectRequest) GetPath() string { } type PutObjectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // 256-bit SHA-256 digest of the object. ChecksumSha_256 []byte `protobuf:"bytes,10,opt,name=checksum_sha_256,json=checksumSha256,proto3" json:"checksum_sha_256,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PutObjectResponse) Reset() { *x = PutObjectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PutObjectResponse) String() string { @@ -792,7 +752,7 @@ func (*PutObjectResponse) ProtoMessage() {} func (x *PutObjectResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -815,10 +775,7 @@ func (x *PutObjectResponse) GetChecksumSha_256() []byte { } type DeleteObjectsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Required. The existing state of the storage bucket. Bucket *storagebuckets.StorageBucket `protobuf:"bytes,10,opt,name=bucket,proto3" json:"bucket,omitempty"` // Required. The prefix of object keys to be deleted. @@ -834,16 +791,16 @@ type DeleteObjectsRequest struct { // // Note that this means when recursive = false, key_prefix is not treated as a prefix // but as a fully qualified key. - Recursive bool `protobuf:"varint,30,opt,name=recursive,proto3" json:"recursive,omitempty"` + Recursive bool `protobuf:"varint,30,opt,name=recursive,proto3" json:"recursive,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteObjectsRequest) Reset() { *x = DeleteObjectsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteObjectsRequest) String() string { @@ -854,7 +811,7 @@ func (*DeleteObjectsRequest) ProtoMessage() {} func (x *DeleteObjectsRequest) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -891,25 +848,22 @@ func (x *DeleteObjectsRequest) GetRecursive() bool { } type DeleteObjectsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The number of objects successfully deleted. // // Note that when receiving a successful response, the plugin guarantees that all // objects beginning with the prefix have been deleted. This response is purely // informational and not meant to be used for validation. ObjectsDeleted uint32 `protobuf:"varint,10,opt,name=objects_deleted,json=objectsDeleted,proto3" json:"objects_deleted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteObjectsResponse) Reset() { *x = DeleteObjectsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteObjectsResponse) String() string { @@ -920,7 +874,7 @@ func (*DeleteObjectsResponse) ProtoMessage() {} func (x *DeleteObjectsResponse) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -943,25 +897,22 @@ func (x *DeleteObjectsResponse) GetObjectsDeleted() uint32 { } type Permission struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Required. The state of the permission. State StateType `protobuf:"varint,10,opt,name=state,proto3,enum=plugin.v1.StateType" json:"state,omitempty"` // Optional. The error details returned from the external object store service. ErrorDetails string `protobuf:"bytes,20,opt,name=error_details,json=errorDetails,proto3" json:"error_details,omitempty"` // Required. The utc timestamp of when the permission was tested. - CheckedAt *timestamppb.Timestamp `protobuf:"bytes,30,opt,name=checked_at,json=checkedAt,proto3" json:"checked_at,omitempty"` + CheckedAt *timestamppb.Timestamp `protobuf:"bytes,30,opt,name=checked_at,json=checkedAt,proto3" json:"checked_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Permission) Reset() { *x = Permission{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Permission) String() string { @@ -972,7 +923,7 @@ func (*Permission) ProtoMessage() {} func (x *Permission) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1009,25 +960,22 @@ func (x *Permission) GetCheckedAt() *timestamppb.Timestamp { } type Permissions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Optional. The write permission state. Write *Permission `protobuf:"bytes,10,opt,name=write,proto3" json:"write,omitempty"` // Optional. The read permission state. Read *Permission `protobuf:"bytes,20,opt,name=read,proto3" json:"read,omitempty"` // Optional. The delete permission state. - Delete *Permission `protobuf:"bytes,30,opt,name=delete,proto3" json:"delete,omitempty"` + Delete *Permission `protobuf:"bytes,30,opt,name=delete,proto3" json:"delete,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Permissions) Reset() { *x = Permissions{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Permissions) String() string { @@ -1038,7 +986,7 @@ func (*Permissions) ProtoMessage() {} func (x *Permissions) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1075,23 +1023,20 @@ func (x *Permissions) GetDelete() *Permission { } type StorageBucketCredentialState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Required. The permission states. State *Permissions `protobuf:"bytes,10,opt,name=state,proto3" json:"state,omitempty"` // Required. The version of the storage bucket. - Version uint32 `protobuf:"varint,20,opt,name=version,proto3" json:"version,omitempty"` + Version uint32 `protobuf:"varint,20,opt,name=version,proto3" json:"version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StorageBucketCredentialState) Reset() { *x = StorageBucketCredentialState{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StorageBucketCredentialState) String() string { @@ -1102,7 +1047,7 @@ func (*StorageBucketCredentialState) ProtoMessage() {} func (x *StorageBucketCredentialState) ProtoReflect() protoreflect.Message { mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1441,236 +1386,6 @@ func file_plugin_v1_storage_plugin_service_proto_init() { if File_plugin_v1_storage_plugin_service_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_plugin_v1_storage_plugin_service_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*OnCreateStorageBucketRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*OnCreateStorageBucketResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*OnUpdateStorageBucketRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*OnUpdateStorageBucketResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*OnDeleteStorageBucketRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*OnDeleteStorageBucketResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*ValidatePermissionsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*ValidatePermissionsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*HeadObjectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*HeadObjectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*GetObjectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*GetObjectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*PutObjectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*PutObjectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*DeleteObjectsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*DeleteObjectsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*Permission); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*Permissions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_v1_storage_plugin_service_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*StorageBucketCredentialState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/sdk/pbs/proxy/proxy.pb.go b/sdk/pbs/proxy/proxy.pb.go index ee4e4e5999..7cde4a287f 100644 --- a/sdk/pbs/proxy/proxy.pb.go +++ b/sdk/pbs/proxy/proxy.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: worker/proxy/v1/proxy.proto @@ -73,21 +73,18 @@ func (HANDSHAKECOMMAND) EnumDescriptor() ([]byte, []int) { } type ClientHandshake struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TofuToken string `protobuf:"bytes,10,opt,name=tofu_token,json=tofuToken,proto3" json:"tofu_token,omitempty"` + Command HANDSHAKECOMMAND `protobuf:"varint,20,opt,name=command,proto3,enum=worker.proxy.v1.HANDSHAKECOMMAND" json:"command,omitempty"` unknownFields protoimpl.UnknownFields - - TofuToken string `protobuf:"bytes,10,opt,name=tofu_token,json=tofuToken,proto3" json:"tofu_token,omitempty"` - Command HANDSHAKECOMMAND `protobuf:"varint,20,opt,name=command,proto3,enum=worker.proxy.v1.HANDSHAKECOMMAND" json:"command,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ClientHandshake) Reset() { *x = ClientHandshake{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_proxy_v1_proxy_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_proxy_v1_proxy_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ClientHandshake) String() string { @@ -98,7 +95,7 @@ func (*ClientHandshake) ProtoMessage() {} func (x *ClientHandshake) ProtoReflect() protoreflect.Message { mi := &file_worker_proxy_v1_proxy_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -128,22 +125,19 @@ func (x *ClientHandshake) GetCommand() HANDSHAKECOMMAND { } type HandshakeResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Expiration *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=expiration,proto3" json:"expiration,omitempty"` ConnectionLimit int32 `protobuf:"varint,20,opt,name=connection_limit,json=connectionLimit,proto3" json:"connection_limit,omitempty"` ConnectionsLeft int32 `protobuf:"varint,30,opt,name=connections_left,json=connectionsLeft,proto3" json:"connections_left,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HandshakeResult) Reset() { *x = HandshakeResult{} - if protoimpl.UnsafeEnabled { - mi := &file_worker_proxy_v1_proxy_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_worker_proxy_v1_proxy_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HandshakeResult) String() string { @@ -154,7 +148,7 @@ func (*HandshakeResult) ProtoMessage() {} func (x *HandshakeResult) ProtoReflect() protoreflect.Message { mi := &file_worker_proxy_v1_proxy_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -262,32 +256,6 @@ func file_worker_proxy_v1_proxy_proto_init() { if File_worker_proxy_v1_proxy_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_worker_proxy_v1_proxy_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*ClientHandshake); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_worker_proxy_v1_proxy_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*HandshakeResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ From 14808d197fec48376fcf052bf6816c7b0b4b8fa7 Mon Sep 17 00:00:00 2001 From: Michael Li Date: Thu, 20 Feb 2025 10:27:43 -0500 Subject: [PATCH 26/70] test(e2e): Differentiate between public and private vault addresses (#5553) --- .../enos-scenario-e2e-aws-base-with-vault.hcl | 4 ++-- ...os-scenario-e2e-docker-base-with-vault.hcl | 4 ++-- ...s-scenario-e2e-docker-base-with-worker.hcl | 4 ++-- ...ker-worker-registration-controller-led.hcl | 4 ++-- ...-docker-worker-registration-worker-led.hcl | 4 ++-- enos/enos-scenario-e2e-ui-aws.hcl | 4 ++-- enos/enos-scenario-e2e-ui-docker.hcl | 4 ++-- enos/modules/aws_vault/outputs.tf | 7 ++++++- enos/modules/docker_vault/main.tf | 4 ++-- enos/modules/test_e2e/main.tf | 21 +++++++------------ enos/modules/test_e2e_docker/main.tf | 16 +++++++------- enos/modules/test_e2e_docker/test_runner.sh | 3 ++- enos/modules/test_e2e_ui/main.tf | 14 +++++++------ .../e2e/tests/base_with_vault/env_test.go | 7 ++++--- .../e2e/tests/base_with_worker/env_test.go | 5 +++-- 15 files changed, 56 insertions(+), 49 deletions(-) diff --git a/enos/enos-scenario-e2e-aws-base-with-vault.hcl b/enos/enos-scenario-e2e-aws-base-with-vault.hcl index b352f5885a..8a912a9387 100644 --- a/enos/enos-scenario-e2e-aws-base-with-vault.hcl +++ b/enos/enos-scenario-e2e-aws-base-with-vault.hcl @@ -159,8 +159,8 @@ scenario "e2e_aws_base_with_vault" { target_address = step.create_target.target_private_ips[0] target_user = "ubuntu" target_port = "22" - vault_addr = step.create_vault_cluster.instance_addresses[0] - vault_addr_internal = step.create_vault_cluster.instance_addresses[0] + vault_addr_public = step.create_vault_cluster.instance_addresses[0] + vault_addr_private = step.create_vault_cluster.instance_addresses[0] vault_root_token = step.create_vault_cluster.vault_root_token aws_region = var.aws_region max_page_size = step.create_boundary_cluster.max_page_size diff --git a/enos/enos-scenario-e2e-docker-base-with-vault.hcl b/enos/enos-scenario-e2e-docker-base-with-vault.hcl index 4e14211a20..637e068751 100644 --- a/enos/enos-scenario-e2e-docker-base-with-vault.hcl +++ b/enos/enos-scenario-e2e-docker-base-with-vault.hcl @@ -136,8 +136,8 @@ scenario "e2e_docker_base_with_vault" { target_address = step.create_host.address target_port = step.create_host.port target_user = "ubuntu" - vault_addr = step.create_vault.address - vault_addr_internal = step.create_vault.address_internal + vault_addr_public = step.create_vault.address_public + vault_addr_private = step.create_vault.address_private vault_root_token = step.create_vault.token vault_port = step.create_vault.port max_page_size = step.create_boundary.max_page_size diff --git a/enos/enos-scenario-e2e-docker-base-with-worker.hcl b/enos/enos-scenario-e2e-docker-base-with-worker.hcl index bf75db9528..d4ccd13a33 100644 --- a/enos/enos-scenario-e2e-docker-base-with-worker.hcl +++ b/enos/enos-scenario-e2e-docker-base-with-worker.hcl @@ -177,8 +177,8 @@ scenario "e2e_docker_base_with_worker" { target_address = step.create_host.address target_port = step.create_host.port target_user = "ubuntu" - vault_addr = step.create_vault.address - vault_addr_internal = step.create_vault.address_internal + vault_addr_public = step.create_vault.address_public + vault_addr_private = step.create_vault.address_private vault_root_token = step.create_vault.token vault_port = step.create_vault.port worker_tag_egress = local.egress_tag diff --git a/enos/enos-scenario-e2e-docker-worker-registration-controller-led.hcl b/enos/enos-scenario-e2e-docker-worker-registration-controller-led.hcl index 36e108bcd9..bf437060d0 100644 --- a/enos/enos-scenario-e2e-docker-worker-registration-controller-led.hcl +++ b/enos/enos-scenario-e2e-docker-worker-registration-controller-led.hcl @@ -192,8 +192,8 @@ scenario "e2e_docker_worker_registration_controller_led" { target_address = step.create_host.address target_port = step.create_host.port target_user = "ubuntu" - vault_addr = step.create_vault.address - vault_addr_internal = step.create_vault.address_internal + vault_addr_public = step.create_vault.address_public + vault_addr_private = step.create_vault.address_private vault_root_token = step.create_vault.token vault_port = step.create_vault.port worker_tag_egress = local.egress_tag diff --git a/enos/enos-scenario-e2e-docker-worker-registration-worker-led.hcl b/enos/enos-scenario-e2e-docker-worker-registration-worker-led.hcl index a896848a13..bfe13004d9 100644 --- a/enos/enos-scenario-e2e-docker-worker-registration-worker-led.hcl +++ b/enos/enos-scenario-e2e-docker-worker-registration-worker-led.hcl @@ -207,8 +207,8 @@ scenario "e2e_docker_worker_registration_worker_led" { target_address = step.create_host.address target_port = step.create_host.port target_user = "ubuntu" - vault_addr = step.create_vault.address - vault_addr_internal = step.create_vault.address_internal + vault_addr_public = step.create_vault.address_public + vault_addr_private = step.create_vault.address_private vault_root_token = step.create_vault.token vault_port = step.create_vault.port worker_tag_egress = local.egress_tag diff --git a/enos/enos-scenario-e2e-ui-aws.hcl b/enos/enos-scenario-e2e-ui-aws.hcl index 4c6142edbb..af089748d1 100644 --- a/enos/enos-scenario-e2e-ui-aws.hcl +++ b/enos/enos-scenario-e2e-ui-aws.hcl @@ -201,8 +201,8 @@ scenario "e2e_ui_aws" { target_address = step.create_targets_with_tag.target_private_ips[0] target_user = "ubuntu" target_port = "22" - vault_addr = step.create_vault_cluster.instance_addresses[0] - vault_addr_internal = step.create_vault_cluster.instance_addresses[0] + vault_addr_public = step.create_vault_cluster.instance_addresses[0] + vault_addr_private = step.create_vault_cluster.instance_addresses_private[0] vault_root_token = step.create_vault_cluster.vault_root_token aws_access_key_id = step.iam_setup.access_key_id aws_secret_access_key = step.iam_setup.secret_access_key diff --git a/enos/enos-scenario-e2e-ui-docker.hcl b/enos/enos-scenario-e2e-ui-docker.hcl index 080f5e3dc3..290c90f03b 100644 --- a/enos/enos-scenario-e2e-ui-docker.hcl +++ b/enos/enos-scenario-e2e-ui-docker.hcl @@ -168,8 +168,8 @@ scenario "e2e_ui_docker" { target_user = "ubuntu" target_ca_key = step.create_host.ca_key_private target_ca_key_public = step.create_host.ca_key_public - vault_addr = step.create_vault.address - vault_addr_internal = step.create_vault.address_internal + vault_addr_public = step.create_vault.address_public + vault_addr_private = step.create_vault.address_private vault_root_token = step.create_vault.token vault_port = step.create_vault.port ldap_address = step.create_ldap_server.address diff --git a/enos/modules/aws_vault/outputs.tf b/enos/modules/aws_vault/outputs.tf index fb04f22412..1947ab1073 100644 --- a/enos/modules/aws_vault/outputs.tf +++ b/enos/modules/aws_vault/outputs.tf @@ -18,7 +18,12 @@ output "instance_private_ips" { output "instance_addresses" { description = "Addresses of Vault instances" - value = [for instance in aws_instance.vault_instance : "http://${instance.public_ip}:8200"] + value = var.ip_version == "4" ? [for instance in aws_instance.vault_instance : "http://${instance.public_ip}:8200"] : flatten([for instance in aws_instance.vault_instance : instance.ipv6_addresses]) +} + +output "instance_addresses_private" { + description = "Private addresses of Vault instances" + value = [for instance in aws_instance.vault_instance : "http://${instance.private_ip}:8200"] } output "key_id" { diff --git a/enos/modules/docker_vault/main.tf b/enos/modules/docker_vault/main.tf index c013e99525..1103325de8 100644 --- a/enos/modules/docker_vault/main.tf +++ b/enos/modules/docker_vault/main.tf @@ -132,11 +132,11 @@ resource "enos_local_exec" "check_health" { inline = ["timeout 10s bash -c 'until vault status; do sleep 2; done'"] } -output "address" { +output "address_public" { value = "http://${var.container_name}:${var.vault_port}" } -output "address_internal" { +output "address_private" { value = "http://${var.container_name}:${var.vault_port_internal}" } diff --git a/enos/modules/test_e2e/main.tf b/enos/modules/test_e2e/main.tf index ff964386a4..7dac110885 100644 --- a/enos/modules/test_e2e/main.tf +++ b/enos/modules/test_e2e/main.tf @@ -66,13 +66,14 @@ variable "target_port" { type = string default = "" } -variable "vault_addr" { - description = "External network address of Vault. Will be converted to a URL below" +variable "vault_addr_public" { + description = "Public address to a vault instance" type = string default = "" } -variable "vault_addr_internal" { - description = "Internal network address of Vault (i.e. within a docker network). Will be converted to a URL below" + +variable "vault_addr_private" { + description = "Private address to a vault instance" type = string default = "" } @@ -81,11 +82,6 @@ variable "vault_root_token" { type = string default = "" } -variable "vault_port" { - description = "External Port that vault instance is attached to (outside of docker network)" - type = string - default = "8200" -} variable "aws_access_key_id" { description = "Access Key Id for AWS IAM user used in dynamic host catalogs" type = string @@ -174,8 +170,6 @@ variable "ip_version" { locals { aws_ssh_private_key_path = abspath(var.aws_ssh_private_key_path) - vault_addr = var.vault_addr != "" ? "http://${var.vault_addr}:${var.vault_port}" : "" - vault_addr_internal = var.vault_addr_internal != "" ? "http://${var.vault_addr_internal}:8200" : local.vault_addr aws_host_set_ips1 = jsonencode(var.aws_host_set_ips1) aws_host_set_ips2 = jsonencode(var.aws_host_set_ips2) package_name = reverse(split("/", var.test_package))[0] @@ -194,9 +188,10 @@ resource "enos_local_exec" "run_e2e_test" { E2E_SSH_USER = var.target_user E2E_SSH_KEY_PATH = local.aws_ssh_private_key_path E2E_SSH_CA_KEY = "" - VAULT_ADDR = local.vault_addr + VAULT_ADDR = var.vault_addr_public VAULT_TOKEN = var.vault_root_token - E2E_VAULT_ADDR = local.vault_addr_internal + E2E_VAULT_ADDR_PUBLIC = var.vault_addr_public + E2E_VAULT_ADDR_PRIVATE = var.vault_addr_private E2E_AWS_ACCESS_KEY_ID = var.aws_access_key_id E2E_AWS_SECRET_ACCESS_KEY = var.aws_secret_access_key E2E_AWS_HOST_SET_FILTER = var.aws_host_set_filter1 diff --git a/enos/modules/test_e2e_docker/main.tf b/enos/modules/test_e2e_docker/main.tf index 254e5d627a..d79d7e9d29 100644 --- a/enos/modules/test_e2e_docker/main.tf +++ b/enos/modules/test_e2e_docker/main.tf @@ -94,13 +94,14 @@ variable "target_ca_key" { type = string default = "" } -variable "vault_addr" { - description = "External network address of Vault. Will be converted to a URL below" +variable "vault_addr_public" { + description = "Public address to a vault instance" type = string default = "" } -variable "vault_addr_internal" { - description = "Internal network address of Vault (i.e. within a docker network). Will be converted to a URL below" + +variable "vault_addr_private" { + description = "Private address to a vault instance" type = string default = "" } @@ -314,10 +315,11 @@ resource "enos_local_exec" "run_e2e_test" { E2E_SSH_USER = var.target_user E2E_SSH_KEY_PATH = local.aws_ssh_private_key_path E2E_SSH_CA_KEY = var.target_ca_key - VAULT_ADDR = var.vault_addr - VAULT_ADDR_INTERNAL = var.vault_addr_internal + VAULT_ADDR = var.vault_addr_public + VAULT_ADDR_INTERNAL = var.vault_addr_private VAULT_TOKEN = var.vault_root_token - E2E_VAULT_ADDR = var.vault_addr_internal + E2E_VAULT_ADDR_PUBLIC = var.vault_addr_public + E2E_VAULT_ADDR_PRIVATE = var.vault_addr_private E2E_BUCKET_NAME = var.bucket_name E2E_BUCKET_ENDPOINT_URL = var.bucket_endpoint_url E2E_BUCKET_USER_ID = var.bucket_user_id diff --git a/enos/modules/test_e2e_docker/test_runner.sh b/enos/modules/test_e2e_docker/test_runner.sh index 24e1e99d5b..9e8c330f55 100644 --- a/enos/modules/test_e2e_docker/test_runner.sh +++ b/enos/modules/test_e2e_docker/test_runner.sh @@ -31,7 +31,8 @@ docker run \ -e "E2E_MINIO_ALIAS=$E2E_MINIO_ALIAS" \ -e "VAULT_ADDR=$VAULT_ADDR_INTERNAL" \ -e "VAULT_TOKEN=$VAULT_TOKEN" \ - -e "E2E_VAULT_ADDR=$E2E_VAULT_ADDR" \ + -e "E2E_VAULT_ADDR_PUBLIC=$E2E_VAULT_ADDR_PUBLIC" \ + -e "E2E_VAULT_ADDR_PRIVATE=$E2E_VAULT_ADDR_PRIVATE" \ -e "E2E_POSTGRES_USER=$E2E_POSTGRES_USER" \ -e "E2E_POSTGRES_PASSWORD=$E2E_POSTGRES_PASSWORD" \ -e "E2E_POSTGRES_DB_NAME=$E2E_POSTGRES_DB_NAME" \ diff --git a/enos/modules/test_e2e_ui/main.tf b/enos/modules/test_e2e_ui/main.tf index 2f3348dba9..72896bce31 100644 --- a/enos/modules/test_e2e_ui/main.tf +++ b/enos/modules/test_e2e_ui/main.tf @@ -73,13 +73,14 @@ variable "target_ca_key_public" { type = string default = "" } -variable "vault_addr" { - description = "External network address of Vault. Will be converted to a URL below" +variable "vault_addr_public" { + description = "Public address to a vault instance" type = string default = "" } -variable "vault_addr_internal" { - description = "Internal network address of Vault (i.e. within a docker network). Will be converted to a URL below" + +variable "vault_addr_private" { + description = "Private address to a vault instance" type = string default = "" } @@ -211,9 +212,10 @@ resource "enos_local_exec" "run_e2e_test" { E2E_SSH_KEY_PATH = local.aws_ssh_private_key_path E2E_SSH_CA_KEY = var.target_ca_key E2E_SSH_CA_KEY_PUBLIC = var.target_ca_key_public - VAULT_ADDR = var.vault_addr + VAULT_ADDR = var.vault_addr_public VAULT_TOKEN = var.vault_root_token - E2E_VAULT_ADDR = var.vault_addr_internal + E2E_VAULT_ADDR_PUBLIC = var.vault_addr_public + E2E_VAULT_ADDR_PRIVATE = var.vault_addr_private E2E_AWS_ACCESS_KEY_ID = var.aws_access_key_id E2E_AWS_SECRET_ACCESS_KEY = var.aws_secret_access_key E2E_AWS_HOST_SET_FILTER = var.aws_host_set_filter diff --git a/testing/internal/e2e/tests/base_with_vault/env_test.go b/testing/internal/e2e/tests/base_with_vault/env_test.go index b732f31bda..c213a2e80d 100644 --- a/testing/internal/e2e/tests/base_with_vault/env_test.go +++ b/testing/internal/e2e/tests/base_with_vault/env_test.go @@ -13,9 +13,10 @@ type config struct { // Note: Key is base64 encoded TargetCaKey string `envconfig:"E2E_SSH_CA_KEY" required:"true"` // VaultAddr is the address that the Boundary server uses to interact with the running Vault instance - VaultAddr string `envconfig:"E2E_VAULT_ADDR" required:"true"` // e.g. "http://127.0.0.1:8200" - VaultSecretPath string `envconfig:"E2E_VAULT_SECRET_PATH" default:"e2e_secrets"` - MaxPageSize int `envconfig:"E2E_MAX_PAGE_SIZE" default:"1000"` + VaultAddr string `envconfig:"E2E_VAULT_ADDR_PUBLIC" required:"true"` // e.g. "http://127.0.0.1:8200" + VaultAddrPrivate string `envconfig:"E2E_VAULT_ADDR_PRIVATE" required:"true"` // e.g. "http://10.10.10.10:8200" + VaultSecretPath string `envconfig:"E2E_VAULT_SECRET_PATH" default:"e2e_secrets"` + MaxPageSize int `envconfig:"E2E_MAX_PAGE_SIZE" default:"1000"` } func loadTestConfig() (*config, error) { diff --git a/testing/internal/e2e/tests/base_with_worker/env_test.go b/testing/internal/e2e/tests/base_with_worker/env_test.go index 7ecd3ab80f..8246251d2e 100644 --- a/testing/internal/e2e/tests/base_with_worker/env_test.go +++ b/testing/internal/e2e/tests/base_with_worker/env_test.go @@ -14,8 +14,9 @@ type config struct { WorkerTagEgress string `envconfig:"E2E_WORKER_TAG_EGRESS" required:"true"` // e.g. "egress" WorkerTagCollocated string `envconfig:"E2E_WORKER_TAG_COLLOCATED" required:"true"` // e.g. "collocated" // VaultAddr is the address that the Boundary server uses to interact with the running Vault instance - VaultAddr string `envconfig:"E2E_VAULT_ADDR" required:"true"` // e.g. "http://127.0.0.1:8200" - VaultSecretPath string `envconfig:"E2E_VAULT_SECRET_PATH" default:"e2e_secrets"` + VaultAddr string `envconfig:"E2E_VAULT_ADDR_PUBLIC" required:"true"` // e.g. "http://127.0.0.1:8200" + VaultAddrPrivate string `envconfig:"E2E_VAULT_ADDR_PRIVATE" required:"true"` // e.g. "http://10.10.10.10:8200" + VaultSecretPath string `envconfig:"E2E_VAULT_SECRET_PATH" default:"e2e_secrets"` } func loadTestConfig() (*config, error) { From 11c19d574f6ab220b481c908c64d182ec00734be Mon Sep 17 00:00:00 2001 From: Robin Beck Date: Fri, 21 Feb 2025 12:32:57 -0700 Subject: [PATCH 27/70] fixes incorrect AssumeRole policy (#5555) --- .../docs/concepts/host-discovery/aws.mdx | 28 ++++--------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/website/content/docs/concepts/host-discovery/aws.mdx b/website/content/docs/concepts/host-discovery/aws.mdx index f475e0d81d..869ab034c0 100644 --- a/website/content/docs/concepts/host-discovery/aws.mdx +++ b/website/content/docs/concepts/host-discovery/aws.mdx @@ -91,29 +91,13 @@ Perform the following steps to set up a host catalog using [AssumeRole](https:// { "Effect": "Allow", "Action": [ - "ec2:Describe*", - "ec2:GetSecurityGroupsForVpc" + "sts:AssumeRole" ], - "Resource": "*" - }, - { - "Effect": "Allow", - "Action": "elasticloadbalancing:Describe*", - "Resource": "*" - }, - { - "Effect": "Allow", - "Action": [ - "cloudwatch:ListMetrics", - "cloudwatch:GetMetricStatistics", - "cloudwatch:Describe*" - ], - "Resource": "*" - }, - { - "Effect": "Allow", - "Action": "autoscaling:Describe*", - "Resource": "*" + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + } } ] } From 262693f47ca0fd732a73d190b80cbfbebbff4457 Mon Sep 17 00:00:00 2001 From: Johan Brandhorst-Satzkorn Date: Mon, 24 Feb 2025 09:16:07 -0800 Subject: [PATCH 28/70] Restore soft deleted users on authentication (#5549) * internal/clientcache: restore user on login A user that previously had its last auth token deleted (for example, if they logged out), should be restored again when they successfully authenticate again. * internal/clientcache: delete keyringless expired auth tokens Previously, we would only correctly delete auth tokens that were expired (or deleted) if they were also in the keyring. * internal/clientcache: remove tautological condition At this stage we already know that at is non-nil, because the case above would have been true if it was nil. * internal/clientcache: improve error handling The previous error handling would have ignored API errors that were not ErrUnauthorized or ErrNotFound. Handle all API errors the same as other unexpected errors. * internal/clientcache: make errors distinct These two error conditions are otherwise impossible to tell apart. * test(e2e): Update search test to catch bug (#5551) --------- Co-authored-by: Michael Li --- .../clientcache/internal/cache/refresh.go | 16 +-- .../internal/cache/repository_token.go | 3 +- .../internal/e2e/tests/base/search_test.go | 127 ++++++++++++++++++ 3 files changed, 137 insertions(+), 9 deletions(-) diff --git a/internal/clientcache/internal/cache/refresh.go b/internal/clientcache/internal/cache/refresh.go index aff0febddd..1434b33b56 100644 --- a/internal/clientcache/internal/cache/refresh.go +++ b/internal/clientcache/internal/cache/refresh.go @@ -94,17 +94,16 @@ func (r *RefreshService) cleanAndPickAuthTokens(ctx context.Context, u *user) (m if err := r.repo.deleteKeyringToken(ctx, *kt); err != nil { return nil, errors.Wrap(ctx, err, op, errors.WithMsg("for user %q, auth token %q", u.Id, t.Id)) } - case at != nil: + default: _, err := r.repo.tokenReadFromBoundaryFn(ctx, u.Address, at.Token) - var apiErr *api.Error switch { case err != nil && (api.ErrUnauthorized.Is(err) || api.ErrNotFound.Is(err)): if err := r.repo.deleteKeyringToken(ctx, *kt); err != nil { return nil, errors.Wrap(ctx, err, op, errors.WithMsg("for user %q, auth token %q", u.Id, t.Id)) } - event.WriteSysEvent(ctx, op, "Removed auth token from cache because it was not found to be valid in boundary", "auth token id", at.Id) + event.WriteSysEvent(ctx, op, "Removed auth token from db because it was not found to be valid in boundary", "auth token id", at.Id) continue - case err != nil && !errors.Is(err, apiErr): + case err != nil: event.WriteError(ctx, op, err, event.WithInfoMsg("validating keyring stored token against boundary", "auth token id", at.Id)) continue } @@ -114,17 +113,18 @@ func (r *RefreshService) cleanAndPickAuthTokens(ctx context.Context, u *user) (m if atv, ok := r.repo.idToKeyringlessAuthToken.Load(t.Id); ok { if at, ok := atv.(*authtokens.AuthToken); ok { _, err := r.repo.tokenReadFromBoundaryFn(ctx, u.Address, at.Token) - var apiErr *api.Error switch { case err != nil && (api.ErrUnauthorized.Is(err) || api.ErrNotFound.Is(err)): r.repo.idToKeyringlessAuthToken.Delete(t.Id) - event.WriteSysEvent(ctx, op, "Removed auth token from cache because it was not found to be valid in boundary", "auth token id", at.Id) + event.WriteSysEvent(ctx, op, "Removed auth token from in memory cache because it was not found to be valid in boundary", "auth token id", at.Id) + if err := r.repo.cleanExpiredOrOrphanedAuthTokens(ctx); err != nil { + return nil, errors.Wrap(ctx, err, op, errors.WithMsg("for user %q, auth token %q", u.Id, t.Id)) + } continue - case err != nil && !errors.Is(err, apiErr): + case err != nil: event.WriteError(ctx, op, err, event.WithInfoMsg("validating in memory stored token against boundary", "auth token id", at.Id)) continue } - ret[*t] = at.Token } } diff --git a/internal/clientcache/internal/cache/repository_token.go b/internal/clientcache/internal/cache/repository_token.go index 77823c16f9..2ade8eface 100644 --- a/internal/clientcache/internal/cache/repository_token.go +++ b/internal/clientcache/internal/cache/repository_token.go @@ -51,7 +51,8 @@ func upsertUserAndAuthToken(ctx context.Context, reader db.Reader, writer db.Wri } onConflict := &db.OnConflict{ Target: db.Columns{"id"}, - Action: db.DoNothing(true), + // Unset the deleted_at column if it was set to un-delete the user + Action: db.SetColumnValues(map[string]any{"deleted_at": "infinity"}), } if err := writer.Create(ctx, u, db.WithOnConflict(onConflict)); err != nil { return errors.Wrap(ctx, err, op) diff --git a/testing/internal/e2e/tests/base/search_test.go b/testing/internal/e2e/tests/base/search_test.go index 5a1c9e8aad..8ee2006278 100644 --- a/testing/internal/e2e/tests/base/search_test.go +++ b/testing/internal/e2e/tests/base/search_test.go @@ -285,4 +285,131 @@ func TestCliSearch(t *testing.T) { err = json.Unmarshal(output.Stdout, &searchResult) require.NoError(t, err) require.Len(t, searchResult.Item.Sessions, 0) + + // Log out and confirm search does not work + output = e2e.RunCommand(ctx, "boundary", e2e.WithArgs("logout")) + require.NoError(t, output.Err, string(output.Stderr)) + output = e2e.RunCommand(ctx, "boundary", + e2e.WithArgs( + "search", + "-resource", "targets", + "-format", "json", + "-query", fmt.Sprintf(`name %% "%s" and scope_id = "%s"`, targetPrefix, projectId), + ), + ) + require.Error(t, output.Err) + + // Log back in and confirm search works + boundary.AuthenticateAdminCli(t, ctx) + output = e2e.RunCommand(ctx, "boundary", + e2e.WithArgs( + "search", + "-resource", "targets", + "-format", "json", + "-query", fmt.Sprintf(`name %% "%s" and scope_id = "%s"`, targetPrefix, projectId), + ), + ) + require.NoError(t, output.Err, string(output.Stderr)) + searchResult = clientcache.SearchResult{} + err = json.Unmarshal(output.Stdout, &searchResult) + require.NoError(t, err) + require.Len(t, searchResult.Item.Targets, len(targetIds)) + + // Restart cache and confirm search works + t.Log("Restarting cache...") + output = e2e.RunCommand(ctx, "boundary", e2e.WithArgs("cache", "stop")) + require.NoError(t, output.Err, string(output.Stderr)) + output = e2e.RunCommand(ctx, "boundary", + e2e.WithArgs( + "cache", "start", + "-refresh-interval", "5s", + "-background", + ), + ) + require.NoError(t, output.Err, string(output.Stderr)) + err = backoff.RetryNotify( + func() error { + output := e2e.RunCommand(ctx, "boundary", e2e.WithArgs("cache", "status", "-format", "json")) + if output.Err != nil { + return errors.New(strings.TrimSpace(string(output.Stderr))) + } + + err = json.Unmarshal(output.Stdout, &statusResult) + if err != nil { + return backoff.Permanent(err) + } + + return nil + }, + backoff.WithMaxRetries(backoff.NewConstantBackOff(1*time.Second), 5), + func(err error, td time.Duration) { + t.Logf("%s. Retrying...", err.Error()) + }, + ) + require.NoError(t, err) + require.Equal(t, statusResult.StatusCode, 200) + require.GreaterOrEqual(t, statusResult.Item.Uptime, 0*time.Second) + output = e2e.RunCommand(ctx, "boundary", + e2e.WithArgs( + "search", + "-resource", "targets", + "-format", "json", + "-query", fmt.Sprintf(`name %% "%s" and scope_id = "%s"`, targetPrefix, projectId), + ), + ) + require.NoError(t, output.Err, string(output.Stderr)) + searchResult = clientcache.SearchResult{} + err = json.Unmarshal(output.Stdout, &searchResult) + require.NoError(t, err) + require.Len(t, searchResult.Item.Targets, len(targetIds)) + + // Log out and restart cache. Log in and confirm search works + output = e2e.RunCommand(ctx, "boundary", e2e.WithArgs("logout")) + t.Log("Restarting cache...") + output = e2e.RunCommand(ctx, "boundary", e2e.WithArgs("cache", "stop")) + require.NoError(t, output.Err, string(output.Stderr)) + output = e2e.RunCommand(ctx, "boundary", + e2e.WithArgs( + "cache", "start", + "-refresh-interval", "5s", + "-background", + ), + ) + require.NoError(t, output.Err, string(output.Stderr)) + err = backoff.RetryNotify( + func() error { + output := e2e.RunCommand(ctx, "boundary", e2e.WithArgs("cache", "status", "-format", "json")) + if output.Err != nil { + return errors.New(strings.TrimSpace(string(output.Stderr))) + } + + err = json.Unmarshal(output.Stdout, &statusResult) + if err != nil { + return backoff.Permanent(err) + } + + return nil + }, + backoff.WithMaxRetries(backoff.NewConstantBackOff(1*time.Second), 5), + func(err error, td time.Duration) { + t.Logf("%s. Retrying...", err.Error()) + }, + ) + require.NoError(t, err) + require.Equal(t, statusResult.StatusCode, 200) + require.GreaterOrEqual(t, statusResult.Item.Uptime, 0*time.Second) + boundary.AuthenticateAdminCli(t, ctx) + output = e2e.RunCommand(ctx, "boundary", + e2e.WithArgs( + "search", + "-resource", "targets", + "-format", "json", + "-query", fmt.Sprintf(`name %% "%s" and scope_id = "%s"`, targetPrefix, projectId), + ), + ) + require.NoError(t, output.Err, string(output.Stderr)) + searchResult = clientcache.SearchResult{} + err = json.Unmarshal(output.Stdout, &searchResult) + require.NoError(t, err) + require.Len(t, searchResult.Item.Targets, len(targetIds)) } From 3d2fa8b9d09bbd82a116430ae91c1b5c4938c9f9 Mon Sep 17 00:00:00 2001 From: Johan Brandhorst-Satzkorn Date: Mon, 24 Feb 2025 11:22:28 -0800 Subject: [PATCH 29/70] plugins/boundary/mains/azure: update dependency (#5464) v0.2.0 of the Azure plugin adds support for Virtual Machine Scale Sets (VMSS) in addition to Virtual Machines. --- CHANGELOG.md | 5 +++++ plugins/boundary/mains/azure/go.mod | 3 ++- plugins/boundary/mains/azure/go.sum | 6 ++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3a4d8a43e..44b9049eb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ Canonical reference for changes, improvements, and bugfixes for Boundary. ## Next +### New and Improved + +* Adds support for Azure Virtual Machine Scale Sets in the Azure plugin + ([PR](https://github.com/hashicorp/boundary-plugin-azure/pull/22)). + ## 0.19.0 (2025/02/10) ### New and Improved diff --git a/plugins/boundary/mains/azure/go.mod b/plugins/boundary/mains/azure/go.mod index f42f1959ed..8d3452ed64 100644 --- a/plugins/boundary/mains/azure/go.mod +++ b/plugins/boundary/mains/azure/go.mod @@ -3,7 +3,7 @@ module github.com/hashicorp/boundary/plugins/boundary/mains/azure go 1.23.0 require ( - github.com/hashicorp/boundary-plugin-azure v0.1.3 + github.com/hashicorp/boundary-plugin-azure v0.2.0 github.com/hashicorp/boundary/sdk v0.0.39 ) @@ -54,6 +54,7 @@ require ( golang.org/x/net v0.34.0 // indirect golang.org/x/oauth2 v0.11.0 // indirect golang.org/x/sys v0.29.0 // indirect + golang.org/x/sync v0.10.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect diff --git a/plugins/boundary/mains/azure/go.sum b/plugins/boundary/mains/azure/go.sum index c5526c9978..07ccd1f246 100644 --- a/plugins/boundary/mains/azure/go.sum +++ b/plugins/boundary/mains/azure/go.sum @@ -154,8 +154,8 @@ 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/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/hashicorp/boundary-plugin-azure v0.1.3 h1:tD861pyIOMts6YCIir/luV3qjukxAfw1wSgu5gFgxMg= -github.com/hashicorp/boundary-plugin-azure v0.1.3/go.mod h1:7ZXsodjPSjWN32dpgzvavgqBiGMWfrlg2DDExpOpn34= +github.com/hashicorp/boundary-plugin-azure v0.2.0 h1:JmsJamOb6IEWodQ7CJW9wJz09o+Q2fk1Cm0GnNruQuQ= +github.com/hashicorp/boundary-plugin-azure v0.2.0/go.mod h1:V0zTGIqZQNYl9fl7q+NX13F4AyJ3pMGVlfopFfZr9O0= github.com/hashicorp/boundary/sdk v0.0.39 h1:+sucyf+BV12lVUQMGIwwCO2lbS0Cq7TrEAn2FuD9Fbo= github.com/hashicorp/boundary/sdk v0.0.39/go.mod h1:lGNs7t1tDnKmxA3kRK3ISU/rFe+5H1oKoClUMKMQxME= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -385,6 +385,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= From 046c24dbe15eec3f0803fa5334ae217ff3befd9c Mon Sep 17 00:00:00 2001 From: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> Date: Wed, 26 Feb 2025 14:04:06 -0500 Subject: [PATCH 30/70] docs: Fix a typo in page title (#5565) --- website/content/docs/concepts/domain-model/storage-policy.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/concepts/domain-model/storage-policy.mdx b/website/content/docs/concepts/domain-model/storage-policy.mdx index 4f7c19eeb3..e0d15fc06f 100644 --- a/website/content/docs/concepts/domain-model/storage-policy.mdx +++ b/website/content/docs/concepts/domain-model/storage-policy.mdx @@ -1,6 +1,6 @@ --- layout: docs -page_title: Storae policy resource +page_title: Storage policy resource description: >- Learn about using the storage policy resource to manage session recording retention. Understand how to configure policies for scopes and specify retention. --- From 252e44fbc7f230448dc6f6213219414a61e69c44 Mon Sep 17 00:00:00 2001 From: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> Date: Tue, 4 Mar 2025 14:10:40 -0500 Subject: [PATCH 31/70] docs: Update release notes (#5574) * docs: Update release notes * docs: Clarify support in DHC topic * docs: Rewrite known issue for accuracy * docs: Punctuation fix --- .../docs/concepts/host-discovery/azure.mdx | 3 ++ .../content/docs/release-notes/v0_19_0.mdx | 32 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/website/content/docs/concepts/host-discovery/azure.mdx b/website/content/docs/concepts/host-discovery/azure.mdx index 5010b4a104..a185b0a275 100644 --- a/website/content/docs/concepts/host-discovery/azure.mdx +++ b/website/content/docs/concepts/host-discovery/azure.mdx @@ -7,6 +7,9 @@ description: >- # Azure dynamic host catalogs Boundary uses dynamic host catalogs to automatically discover Azure resources available through Azure Resource Manager (ARM) and add them as hosts. +The Azure plugin supports Azure Virtual Machines and Azure Virtual Machine Scale Sets in both Flexible and Uniform orchestration modes. +It automatically discovers any individual virtual machines included in the scale sets and adds them as hosts. + ## Create a host catalog to connect with Azure Boundary uses plugins to integrate with a variety of providers. To use a dynamic host catalog to integrate with Azure, you create a host catalog of the diff --git a/website/content/docs/release-notes/v0_19_0.mdx b/website/content/docs/release-notes/v0_19_0.mdx index 99a801f5fe..31c80b1a7c 100644 --- a/website/content/docs/release-notes/v0_19_0.mdx +++ b/website/content/docs/release-notes/v0_19_0.mdx @@ -112,6 +112,20 @@ description: >- + + + Azure Virtual Machine Scale Set support for dynamic host catalogs + + + GA in version 0.19.1 + + + The Azure plugin now supports Azure Virtual Machine Scale Sets in both Flexible and Uniform orchestration modes for dynamic host catalogs. It automatically discovers any individual virtual machine instances that are part of the scale sets and adds them as hosts. +

+ Learn more: Azure dynamic host catalogs. + + + @@ -199,5 +213,23 @@ description: >- + + + 0.19.0 +

+ (Fixed in 0.19.1) + + + Soft-deleted users are not properly authenticated + + + Version 0.19.0 introduced a soft delete for when a cached user's auth tokens are deleted, but there is a valid refresh token that is less than 20 days old. Boundary considers those users as deleted. But it keeps their user information in the cache so that it can restore the information, if they log in again. +

+ However, soft-deleted users were not being properly restored when they logged back in and it affected search capabilities. +

+ This issue is resolved in version 0.19.1. Soft-deleted users are now properly restored as active when they log in again if the refresh token is less than 20 days old. + + + \ No newline at end of file From c881d1f5cb7a3a93a4e47330993bcbc56eda9489 Mon Sep 17 00:00:00 2001 From: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> Date: Tue, 4 Mar 2025 15:49:48 -0500 Subject: [PATCH 32/70] docs: Revise description of HCP Boundary (#5577) --- website/content/docs/getting-started/index.mdx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/website/content/docs/getting-started/index.mdx b/website/content/docs/getting-started/index.mdx index 074caf2ddb..1c2b594377 100644 --- a/website/content/docs/getting-started/index.mdx +++ b/website/content/docs/getting-started/index.mdx @@ -12,9 +12,8 @@ Boundary provides secure access to private endpoints. There are three options to get started with Boundary: -- **HCP Boundary** is a managed offering of the Boundary product, and is the - easiest way to get started. It streamlines deployment and operations, and is - available as a freemium service. HCP Boundary allows users to run their own +- **HCP Boundary** is a managed offering of Boundary that streamlines deployment and operations. + HCP Boundary allows users to run their own worker proxies, preventing exposure of your network to HashiCorp or clients. HCP Boundary has features that are not available in the Community Edition of the product, as well as support. It has full feature-parity with Boundary Enterprise. From e5b3f822c5a47db586d3c612579bc6848c47542a Mon Sep 17 00:00:00 2001 From: Michael Li Date: Thu, 6 Mar 2025 09:46:11 -0500 Subject: [PATCH 33/70] test(e2e): Address flake in search test (#5572) * test(e2e): Address flake in search test * CR: Add ticket --- .../internal/e2e/tests/base/search_test.go | 78 ++++++++++++++++--- 1 file changed, 66 insertions(+), 12 deletions(-) diff --git a/testing/internal/e2e/tests/base/search_test.go b/testing/internal/e2e/tests/base/search_test.go index 8ee2006278..c21fd2f7ca 100644 --- a/testing/internal/e2e/tests/base/search_test.go +++ b/testing/internal/e2e/tests/base/search_test.go @@ -102,6 +102,17 @@ func TestCliSearch(t *testing.T) { require.NoError(t, err) // Get current number of targets + // Do a force-refresh first to ensure cache has the latest information + output = e2e.RunCommand(ctx, "boundary", + e2e.WithArgs( + "search", + "-resource", "targets", + "-force-refresh", "true", + "-format", "json", + ), + ) + require.NoError(t, output.Err, string(output.Stderr)) + var currentCount int err = backoff.RetryNotify( func() error { @@ -301,19 +312,62 @@ func TestCliSearch(t *testing.T) { // Log back in and confirm search works boundary.AuthenticateAdminCli(t, ctx) - output = e2e.RunCommand(ctx, "boundary", - e2e.WithArgs( - "search", - "-resource", "targets", - "-format", "json", - "-query", fmt.Sprintf(`name %% "%s" and scope_id = "%s"`, targetPrefix, projectId), - ), + err = backoff.RetryNotify( + func() error { + output := e2e.RunCommand(ctx, "boundary", + e2e.WithArgs( + "search", + "-resource", "targets", + "-format", "json", + "-query", fmt.Sprintf(`name %% "%s" and scope_id = "%s"`, targetPrefix, projectId), + ), + ) + if output.Err != nil { + outputStatus := e2e.RunCommand(ctx, "boundary", e2e.WithArgs("cache", "status", "-format", "json")) + t.Log("Printing cache status...") + t.Log(string(outputStatus.Stdout)) + var statusResult clientcache.StatusResult + err = json.Unmarshal(outputStatus.Stdout, &statusResult) + if err != nil { + return backoff.Permanent(err) + } + + outputLog := e2e.RunCommand(ctx, "cat", e2e.WithArgs(statusResult.Item.LogLocation)) + t.Log("Printing cache log...") + t.Log(string(outputLog.Stdout)) + + // BUG WORKAROUND: It seems like there's some weird interaction where + // occasionally, the cache fails to update after authentication + // on Linux environments + // https://hashicorp.atlassian.net/browse/ICU-16595 + boundary.AuthenticateAdminCli(t, ctx) + + return errors.New(string(output.Stderr)) + } + + searchResult := clientcache.SearchResult{} + err := json.Unmarshal(output.Stdout, &searchResult) + if err != nil { + return backoff.Permanent(err) + } + + if len(searchResult.Item.Targets) != len(targetIds) { + return errors.New( + fmt.Sprintf( + "Search did not return expected number of targets, EXPECTED: %d, ACTUAL: %d", + len(targetIds), + len(searchResult.Item.Targets), + ), + ) + } + + return nil + }, + backoff.WithMaxRetries(backoff.NewConstantBackOff(1*time.Second), 5), + func(err error, td time.Duration) { + t.Logf("%s. Retrying...", err.Error()) + }, ) - require.NoError(t, output.Err, string(output.Stderr)) - searchResult = clientcache.SearchResult{} - err = json.Unmarshal(output.Stdout, &searchResult) - require.NoError(t, err) - require.Len(t, searchResult.Item.Targets, len(targetIds)) // Restart cache and confirm search works t.Log("Restarting cache...") From 132a52c5d9b409b46b0630ea48960640faaeb555 Mon Sep 17 00:00:00 2001 From: Michael Li Date: Thu, 6 Mar 2025 09:55:18 -0500 Subject: [PATCH 34/70] chore(e2e): Set up ec2 instance storage with encryption (#5580) --- enos/modules/aws_boundary/boundary-instances.tf | 2 ++ enos/modules/aws_worker/main.tf | 1 + 2 files changed, 3 insertions(+) diff --git a/enos/modules/aws_boundary/boundary-instances.tf b/enos/modules/aws_boundary/boundary-instances.tf index e074e60033..e345c74103 100644 --- a/enos/modules/aws_boundary/boundary-instances.tf +++ b/enos/modules/aws_boundary/boundary-instances.tf @@ -23,6 +23,7 @@ resource "aws_instance" "controller" { volume_type = var.controller_ebs_type throughput = var.controller_ebs_throughput tags = local.common_tags + encrypted = true } tags = merge(local.common_tags, @@ -50,6 +51,7 @@ resource "aws_instance" "worker" { volume_type = var.worker_ebs_type throughput = var.worker_ebs_throughput tags = local.common_tags + encrypted = true } tags = merge(local.common_tags, diff --git a/enos/modules/aws_worker/main.tf b/enos/modules/aws_worker/main.tf index 0fd1c9e395..27910cc3c4 100644 --- a/enos/modules/aws_worker/main.tf +++ b/enos/modules/aws_worker/main.tf @@ -152,6 +152,7 @@ resource "aws_instance" "worker" { volume_type = var.ebs_type throughput = var.ebs_throughput tags = local.common_tags + encrypted = true } tags = merge( From 32be170562d0ba17f4936b729795c0bdf765e92c Mon Sep 17 00:00:00 2001 From: Damian Debkowski Date: Thu, 13 Mar 2025 15:08:09 -0700 Subject: [PATCH 35/70] fix(token): utilize a more accurate comparison method (#5594) --- internal/authtoken/repository.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/authtoken/repository.go b/internal/authtoken/repository.go index 56b3bd07d6..bb979fccc8 100644 --- a/internal/authtoken/repository.go +++ b/internal/authtoken/repository.go @@ -5,6 +5,7 @@ package authtoken import ( "context" + "crypto/subtle" "database/sql" "fmt" "time" @@ -240,7 +241,7 @@ func (r *Repository) ValidateToken(ctx context.Context, id, token string, opt .. return nil, nil } - if retAT.GetToken() != token { + if subtle.ConstantTimeCompare([]byte(retAT.GetToken()), []byte(token)) == 0 { return nil, nil } // retAT.Token set to empty string so the value is not returned as described in the methods' doc. From 29ab0c35941bf3a9b255582ca60913bdcebd6e8d Mon Sep 17 00:00:00 2001 From: Damian Debkowski Date: Thu, 13 Mar 2025 16:20:17 -0700 Subject: [PATCH 36/70] fix(handlers): resolve nil reference pointer for authorize session (#5596) --- .../controller/handlers/targets/target_service.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/daemon/controller/handlers/targets/target_service.go b/internal/daemon/controller/handlers/targets/target_service.go index 6d656b9745..bb1616b2a0 100644 --- a/internal/daemon/controller/handlers/targets/target_service.go +++ b/internal/daemon/controller/handlers/targets/target_service.go @@ -790,11 +790,11 @@ func (s Service) AuthorizeSession(ctx context.Context, req *pbs.AuthorizeSession if authResults.RoundTripValue == nil { return nil, stderrors.New("authorize session: expected to get a target back from auth results") } - t, ok := authResults.RoundTripValue.(target.Target) + roundTripTarget, ok := authResults.RoundTripValue.(target.Target) if !ok { return nil, stderrors.New("authorize session: round tripped auth results value is not a target") } - if t == nil { + if roundTripTarget == nil { return nil, stderrors.New("authorize session: round tripped target is nil") } @@ -816,7 +816,7 @@ func (s Service) AuthorizeSession(ctx context.Context, req *pbs.AuthorizeSession return nil, handlers.ForbiddenError() } - if t.GetDefaultPort() == 0 { + if roundTripTarget.GetDefaultPort() == 0 { return nil, handlers.ConflictErrorf("Target does not have default port defined.") } @@ -825,15 +825,15 @@ func (s Service) AuthorizeSession(ctx context.Context, req *pbs.AuthorizeSession if err != nil { return nil, err } - t, err = repo.LookupTarget(ctx, t.GetPublicId()) + t, err := repo.LookupTarget(ctx, roundTripTarget.GetPublicId()) if err != nil { if errors.IsNotFoundError(err) { - return nil, handlers.NotFoundErrorf("Target %q not found.", t.GetPublicId()) + return nil, handlers.NotFoundErrorf("Target %q not found.", roundTripTarget.GetPublicId()) } return nil, err } if t == nil { - return nil, handlers.NotFoundErrorf("Target %q not found.", t.GetPublicId()) + return nil, handlers.NotFoundErrorf("Target %q not found.", roundTripTarget.GetPublicId()) } hostSources := t.GetHostSources() credSources := t.GetCredentialSources() From 70cdd3823c61a884cf1324428280ac5f2f72a4cb Mon Sep 17 00:00:00 2001 From: Damian Debkowski Date: Thu, 13 Mar 2025 17:18:05 -0700 Subject: [PATCH 37/70] fix(db): return expected rows err for migration logs (#5597) --- internal/db/schema/internal/postgres/postgres.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/db/schema/internal/postgres/postgres.go b/internal/db/schema/internal/postgres/postgres.go index b3181eab6c..2c42b4cc58 100644 --- a/internal/db/schema/internal/postgres/postgres.go +++ b/internal/db/schema/internal/postgres/postgres.go @@ -475,7 +475,7 @@ func (p *Postgres) GetMigrationLog(ctx context.Context, opt ...log.Option) ([]*l entries = append(entries, e) } if rows.Err() != nil { - return nil, errors.Wrap(ctx, err, op) + return nil, errors.Wrap(ctx, rows.Err(), op) } opts := log.GetOpts(opt...) if opts.WithDeleteLog { From 2ed34300699d0428b178c504bc47a045c4926a56 Mon Sep 17 00:00:00 2001 From: dani <29378233+kheina@users.noreply.github.com> Date: Fri, 14 Mar 2025 10:49:23 -0400 Subject: [PATCH 38/70] Modify storage bucket service to include NormalizeStorageBucketData (#5590) NormalizeStorageBucketData normalizes a given's storage bucket attributes before persisting. Co-authored-by: Danielle Miu <29378233+DanielleMiu@users.noreply.github.com> --- internal/plugin/loopback/client.go | 4 + internal/plugin/loopback/loopback.go | 1 + internal/plugin/loopback/storage.go | 51 +- .../plugin/v1/storage_plugin_service.proto | 35 + sdk/pbs/plugin/storage_plugin_service.pb.go | 786 +++++++++++------- .../plugin/storage_plugin_service_grpc.pb.go | 87 +- 6 files changed, 625 insertions(+), 339 deletions(-) diff --git a/internal/plugin/loopback/client.go b/internal/plugin/loopback/client.go index 76f83a5ba3..3ed2b7861b 100644 --- a/internal/plugin/loopback/client.go +++ b/internal/plugin/loopback/client.go @@ -71,6 +71,10 @@ func NewWrappingPluginStorageClient(s plgpb.StoragePluginServiceServer) *Wrappin return &WrappingPluginStorageClient{Server: s} } +func (tpc *WrappingPluginStorageClient) NormalizeStorageBucketData(ctx context.Context, req *plgpb.NormalizeStorageBucketDataRequest, opts ...grpc.CallOption) (*plgpb.NormalizeStorageBucketDataResponse, error) { + return tpc.Server.NormalizeStorageBucketData(ctx, req) +} + func (tpc *WrappingPluginStorageClient) OnCreateStorageBucket(ctx context.Context, req *plgpb.OnCreateStorageBucketRequest, opts ...grpc.CallOption) (*plgpb.OnCreateStorageBucketResponse, error) { return tpc.Server.OnCreateStorageBucket(ctx, req) } diff --git a/internal/plugin/loopback/loopback.go b/internal/plugin/loopback/loopback.go index 7241d9dfd9..de00185a97 100644 --- a/internal/plugin/loopback/loopback.go +++ b/internal/plugin/loopback/loopback.go @@ -104,6 +104,7 @@ func NewLoopbackPlugin(opt ...TestOption) (*LoopbackPlugin, error) { ret.ListHostsFn = ret.listHosts // Set storage methods + ret.NormalizeStorageBucketDataFn = ret.normalizeStorageBucketData ret.OnCreateStorageBucketFn = ret.onCreateStorageBucket ret.OnUpdateStorageBucketFn = ret.onUpdateStorageBucket ret.OnDeleteStorageBucketFn = ret.onDeleteStorageBucket diff --git a/internal/plugin/loopback/storage.go b/internal/plugin/loopback/storage.go index 3fbcc68d23..1edcdd437e 100644 --- a/internal/plugin/loopback/storage.go +++ b/internal/plugin/loopback/storage.go @@ -27,17 +27,25 @@ var _ plgpb.StoragePluginServiceServer = (*TestPluginStorageServer)(nil) // TestPluginStorageServer provides a storage plugin service server where each method can be overwritten for tests. type TestPluginStorageServer struct { - OnCreateStorageBucketFn func(context.Context, *plgpb.OnCreateStorageBucketRequest) (*plgpb.OnCreateStorageBucketResponse, error) - OnUpdateStorageBucketFn func(context.Context, *plgpb.OnUpdateStorageBucketRequest) (*plgpb.OnUpdateStorageBucketResponse, error) - OnDeleteStorageBucketFn func(context.Context, *plgpb.OnDeleteStorageBucketRequest) (*plgpb.OnDeleteStorageBucketResponse, error) - ValidatePermissionsFn func(context.Context, *plgpb.ValidatePermissionsRequest) (*plgpb.ValidatePermissionsResponse, error) - HeadObjectFn func(context.Context, *plgpb.HeadObjectRequest) (*plgpb.HeadObjectResponse, error) - GetObjectFn func(*plgpb.GetObjectRequest, plgpb.StoragePluginService_GetObjectServer) error - PutObjectFn func(context.Context, *plgpb.PutObjectRequest) (*plgpb.PutObjectResponse, error) - DeleteObjectsFn func(context.Context, *plgpb.DeleteObjectsRequest) (*plgpb.DeleteObjectsResponse, error) + NormalizeStorageBucketDataFn func(context.Context, *plgpb.NormalizeStorageBucketDataRequest) (*plgpb.NormalizeStorageBucketDataResponse, error) + OnCreateStorageBucketFn func(context.Context, *plgpb.OnCreateStorageBucketRequest) (*plgpb.OnCreateStorageBucketResponse, error) + OnUpdateStorageBucketFn func(context.Context, *plgpb.OnUpdateStorageBucketRequest) (*plgpb.OnUpdateStorageBucketResponse, error) + OnDeleteStorageBucketFn func(context.Context, *plgpb.OnDeleteStorageBucketRequest) (*plgpb.OnDeleteStorageBucketResponse, error) + ValidatePermissionsFn func(context.Context, *plgpb.ValidatePermissionsRequest) (*plgpb.ValidatePermissionsResponse, error) + HeadObjectFn func(context.Context, *plgpb.HeadObjectRequest) (*plgpb.HeadObjectResponse, error) + GetObjectFn func(*plgpb.GetObjectRequest, plgpb.StoragePluginService_GetObjectServer) error + PutObjectFn func(context.Context, *plgpb.PutObjectRequest) (*plgpb.PutObjectResponse, error) + DeleteObjectsFn func(context.Context, *plgpb.DeleteObjectsRequest) (*plgpb.DeleteObjectsResponse, error) plgpb.UnimplementedStoragePluginServiceServer } +func (t TestPluginStorageServer) NormalizeStorageBucketData(ctx context.Context, req *plgpb.NormalizeStorageBucketDataRequest) (*plgpb.NormalizeStorageBucketDataResponse, error) { + if t.NormalizeStorageBucketDataFn == nil { + return t.UnimplementedStoragePluginServiceServer.NormalizeStorageBucketData(ctx, req) + } + return t.NormalizeStorageBucketDataFn(ctx, req) +} + func (t TestPluginStorageServer) OnCreateStorageBucket(ctx context.Context, req *plgpb.OnCreateStorageBucketRequest) (*plgpb.OnCreateStorageBucketResponse, error) { if t.OnCreateStorageBucketFn == nil { return t.UnimplementedStoragePluginServiceServer.OnCreateStorageBucket(ctx, req) @@ -122,6 +130,33 @@ type LoopbackStorage struct { buckets map[BucketName]Bucket errs []PluginMockError putObjectResponse []PluginMockPutObjectResponse + normalizations int +} + +func (l *LoopbackStorage) normalizeStorageBucketData(ctx context.Context, req *plgpb.NormalizeStorageBucketDataRequest) (*plgpb.NormalizeStorageBucketDataResponse, error) { + const op = "loopback.(LoopbackStorage).normalizeStorageBucketData" + if req == nil { + return nil, status.Errorf(codes.InvalidArgument, "%s: request is nil", op) + } + if req.GetAttributes() == nil { + return nil, status.Errorf(codes.InvalidArgument, "%s: missing attributes", op) + } + l.normalizations++ + return &plgpb.NormalizeStorageBucketDataResponse{ + Attributes: req.GetAttributes(), + }, nil +} + +// ResetNormalizations sets the number of times that NormalizeStorageBucketData +// has been called to 0. Useful for unit tests. +func (l *LoopbackStorage) ResetNormalizations() { + l.normalizations = 0 +} + +// GetNormalizations returns the number of times that NormalizeStorageBucketData +// has been called via the loopback plugin. Useful for unit tests. +func (l *LoopbackStorage) GetNormalizations() int { + return l.normalizations } func (l *LoopbackStorage) onCreateStorageBucket(ctx context.Context, req *plgpb.OnCreateStorageBucketRequest) (*plgpb.OnCreateStorageBucketResponse, error) { diff --git a/internal/proto/plugin/v1/storage_plugin_service.proto b/internal/proto/plugin/v1/storage_plugin_service.proto index 631a608f67..d926eea271 100644 --- a/internal/proto/plugin/v1/storage_plugin_service.proto +++ b/internal/proto/plugin/v1/storage_plugin_service.proto @@ -5,13 +5,34 @@ syntax = "proto3"; package plugin.v1; +import "controller/api/resources/plugins/v1/plugin.proto"; import "controller/api/resources/storagebuckets/v1/storage_bucket.proto"; +import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; option go_package = "github.com/hashicorp/boundary/sdk/pbs/plugin;plugin"; // StoragePluginService describes the service for storage bucket plugins. service StoragePluginService { + // NormalizeStorageBucketData is a hook that passes attributes to the plugin + // and allows those values to be normalized prior to creating or updating + // those values within the persisted storage bucket. + // + // NormalizeStorageBucketData is called before the values of attributes are + // persisted. All normalized values will be persisted in Boundary and returned + // to all clients. + // + // NormalizeStorageBucketData could affect other clients. For example, in + // Terraform, if data is passed to Boundary and then normalized into a new + // data structure, it could cause diffs in Terraform for unchanged values. + // This is because, the data structure in Terraform's state will now be + // different from the normalized data structure returned from Boundary. + // + // NormalizeStorageBucketData is called before: + // * OnCreateStorageBucket + // * OnUpdateStorageBucket + rpc NormalizeStorageBucketData(NormalizeStorageBucketDataRequest) returns (NormalizeStorageBucketDataResponse); + // OnCreateStorageBucket is a hook that runs when a // storage bucket is created. rpc OnCreateStorageBucket(OnCreateStorageBucketRequest) returns (OnCreateStorageBucketResponse); @@ -43,6 +64,20 @@ service StoragePluginService { rpc DeleteObjects(DeleteObjectsRequest) returns (DeleteObjectsResponse); } +message NormalizeStorageBucketDataRequest { + // The incoming attributes in the create or update request. + google.protobuf.Struct attributes = 10; + + // The plugin information for this request. + controller.api.resources.plugins.v1.PluginInfo plugin = 20; +} + +message NormalizeStorageBucketDataResponse { + // Outgoing attributes. If nil, no changes will be recorded. If non-nil, the + // values here will be used in place of the original set of attributes. + google.protobuf.Struct attributes = 10; +} + message OnCreateStorageBucketRequest { // Required. The storage bucket to create. The request may contain optional // secret data to help authenticate the request against a cloud diff --git a/sdk/pbs/plugin/storage_plugin_service.pb.go b/sdk/pbs/plugin/storage_plugin_service.pb.go index d92b0484c7..89078cd7f8 100644 --- a/sdk/pbs/plugin/storage_plugin_service.pb.go +++ b/sdk/pbs/plugin/storage_plugin_service.pb.go @@ -10,9 +10,11 @@ package plugin import ( + plugins "github.com/hashicorp/boundary/sdk/pbs/controller/api/resources/plugins" storagebuckets "github.com/hashicorp/boundary/sdk/pbs/controller/api/resources/storagebuckets" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" @@ -77,6 +79,106 @@ func (StateType) EnumDescriptor() ([]byte, []int) { return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{0} } +type NormalizeStorageBucketDataRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The incoming attributes in the create or update request. + Attributes *structpb.Struct `protobuf:"bytes,10,opt,name=attributes,proto3" json:"attributes,omitempty"` + // The plugin information for this request. + Plugin *plugins.PluginInfo `protobuf:"bytes,20,opt,name=plugin,proto3" json:"plugin,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NormalizeStorageBucketDataRequest) Reset() { + *x = NormalizeStorageBucketDataRequest{} + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NormalizeStorageBucketDataRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NormalizeStorageBucketDataRequest) ProtoMessage() {} + +func (x *NormalizeStorageBucketDataRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NormalizeStorageBucketDataRequest.ProtoReflect.Descriptor instead. +func (*NormalizeStorageBucketDataRequest) Descriptor() ([]byte, []int) { + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{0} +} + +func (x *NormalizeStorageBucketDataRequest) GetAttributes() *structpb.Struct { + if x != nil { + return x.Attributes + } + return nil +} + +func (x *NormalizeStorageBucketDataRequest) GetPlugin() *plugins.PluginInfo { + if x != nil { + return x.Plugin + } + return nil +} + +type NormalizeStorageBucketDataResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Outgoing attributes. If nil, no changes will be recorded. If non-nil, the + // values here will be used in place of the original set of attributes. + Attributes *structpb.Struct `protobuf:"bytes,10,opt,name=attributes,proto3" json:"attributes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NormalizeStorageBucketDataResponse) Reset() { + *x = NormalizeStorageBucketDataResponse{} + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NormalizeStorageBucketDataResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NormalizeStorageBucketDataResponse) ProtoMessage() {} + +func (x *NormalizeStorageBucketDataResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NormalizeStorageBucketDataResponse.ProtoReflect.Descriptor instead. +func (*NormalizeStorageBucketDataResponse) Descriptor() ([]byte, []int) { + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{1} +} + +func (x *NormalizeStorageBucketDataResponse) GetAttributes() *structpb.Struct { + if x != nil { + return x.Attributes + } + return nil +} + type OnCreateStorageBucketRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // Required. The storage bucket to create. The request may contain optional @@ -89,7 +191,7 @@ type OnCreateStorageBucketRequest struct { func (x *OnCreateStorageBucketRequest) Reset() { *x = OnCreateStorageBucketRequest{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[0] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -101,7 +203,7 @@ func (x *OnCreateStorageBucketRequest) String() string { func (*OnCreateStorageBucketRequest) ProtoMessage() {} func (x *OnCreateStorageBucketRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[0] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -114,7 +216,7 @@ func (x *OnCreateStorageBucketRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OnCreateStorageBucketRequest.ProtoReflect.Descriptor instead. func (*OnCreateStorageBucketRequest) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{0} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{2} } func (x *OnCreateStorageBucketRequest) GetBucket() *storagebuckets.StorageBucket { @@ -134,7 +236,7 @@ type OnCreateStorageBucketResponse struct { func (x *OnCreateStorageBucketResponse) Reset() { *x = OnCreateStorageBucketResponse{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[1] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -146,7 +248,7 @@ func (x *OnCreateStorageBucketResponse) String() string { func (*OnCreateStorageBucketResponse) ProtoMessage() {} func (x *OnCreateStorageBucketResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[1] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -159,7 +261,7 @@ func (x *OnCreateStorageBucketResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use OnCreateStorageBucketResponse.ProtoReflect.Descriptor instead. func (*OnCreateStorageBucketResponse) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{1} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{3} } func (x *OnCreateStorageBucketResponse) GetPersisted() *storagebuckets.StorageBucketPersisted { @@ -185,7 +287,7 @@ type OnUpdateStorageBucketRequest struct { func (x *OnUpdateStorageBucketRequest) Reset() { *x = OnUpdateStorageBucketRequest{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[2] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -197,7 +299,7 @@ func (x *OnUpdateStorageBucketRequest) String() string { func (*OnUpdateStorageBucketRequest) ProtoMessage() {} func (x *OnUpdateStorageBucketRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[2] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -210,7 +312,7 @@ func (x *OnUpdateStorageBucketRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OnUpdateStorageBucketRequest.ProtoReflect.Descriptor instead. func (*OnUpdateStorageBucketRequest) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{2} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{4} } func (x *OnUpdateStorageBucketRequest) GetCurrentBucket() *storagebuckets.StorageBucket { @@ -244,7 +346,7 @@ type OnUpdateStorageBucketResponse struct { func (x *OnUpdateStorageBucketResponse) Reset() { *x = OnUpdateStorageBucketResponse{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[3] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -256,7 +358,7 @@ func (x *OnUpdateStorageBucketResponse) String() string { func (*OnUpdateStorageBucketResponse) ProtoMessage() {} func (x *OnUpdateStorageBucketResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[3] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -269,7 +371,7 @@ func (x *OnUpdateStorageBucketResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use OnUpdateStorageBucketResponse.ProtoReflect.Descriptor instead. func (*OnUpdateStorageBucketResponse) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{3} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{5} } func (x *OnUpdateStorageBucketResponse) GetPersisted() *storagebuckets.StorageBucketPersisted { @@ -291,7 +393,7 @@ type OnDeleteStorageBucketRequest struct { func (x *OnDeleteStorageBucketRequest) Reset() { *x = OnDeleteStorageBucketRequest{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[4] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -303,7 +405,7 @@ func (x *OnDeleteStorageBucketRequest) String() string { func (*OnDeleteStorageBucketRequest) ProtoMessage() {} func (x *OnDeleteStorageBucketRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[4] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -316,7 +418,7 @@ func (x *OnDeleteStorageBucketRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OnDeleteStorageBucketRequest.ProtoReflect.Descriptor instead. func (*OnDeleteStorageBucketRequest) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{4} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{6} } func (x *OnDeleteStorageBucketRequest) GetBucket() *storagebuckets.StorageBucket { @@ -341,7 +443,7 @@ type OnDeleteStorageBucketResponse struct { func (x *OnDeleteStorageBucketResponse) Reset() { *x = OnDeleteStorageBucketResponse{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[5] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -353,7 +455,7 @@ func (x *OnDeleteStorageBucketResponse) String() string { func (*OnDeleteStorageBucketResponse) ProtoMessage() {} func (x *OnDeleteStorageBucketResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[5] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -366,7 +468,7 @@ func (x *OnDeleteStorageBucketResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use OnDeleteStorageBucketResponse.ProtoReflect.Descriptor instead. func (*OnDeleteStorageBucketResponse) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{5} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{7} } type ValidatePermissionsRequest struct { @@ -379,7 +481,7 @@ type ValidatePermissionsRequest struct { func (x *ValidatePermissionsRequest) Reset() { *x = ValidatePermissionsRequest{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[6] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -391,7 +493,7 @@ func (x *ValidatePermissionsRequest) String() string { func (*ValidatePermissionsRequest) ProtoMessage() {} func (x *ValidatePermissionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[6] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -404,7 +506,7 @@ func (x *ValidatePermissionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidatePermissionsRequest.ProtoReflect.Descriptor instead. func (*ValidatePermissionsRequest) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{6} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{8} } func (x *ValidatePermissionsRequest) GetBucket() *storagebuckets.StorageBucket { @@ -422,7 +524,7 @@ type ValidatePermissionsResponse struct { func (x *ValidatePermissionsResponse) Reset() { *x = ValidatePermissionsResponse{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[7] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -434,7 +536,7 @@ func (x *ValidatePermissionsResponse) String() string { func (*ValidatePermissionsResponse) ProtoMessage() {} func (x *ValidatePermissionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[7] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -447,7 +549,7 @@ func (x *ValidatePermissionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidatePermissionsResponse.ProtoReflect.Descriptor instead. func (*ValidatePermissionsResponse) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{7} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{9} } type HeadObjectRequest struct { @@ -462,7 +564,7 @@ type HeadObjectRequest struct { func (x *HeadObjectRequest) Reset() { *x = HeadObjectRequest{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[8] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -474,7 +576,7 @@ func (x *HeadObjectRequest) String() string { func (*HeadObjectRequest) ProtoMessage() {} func (x *HeadObjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[8] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -487,7 +589,7 @@ func (x *HeadObjectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use HeadObjectRequest.ProtoReflect.Descriptor instead. func (*HeadObjectRequest) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{8} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{10} } func (x *HeadObjectRequest) GetBucket() *storagebuckets.StorageBucket { @@ -516,7 +618,7 @@ type HeadObjectResponse struct { func (x *HeadObjectResponse) Reset() { *x = HeadObjectResponse{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[9] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -528,7 +630,7 @@ func (x *HeadObjectResponse) String() string { func (*HeadObjectResponse) ProtoMessage() {} func (x *HeadObjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[9] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -541,7 +643,7 @@ func (x *HeadObjectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use HeadObjectResponse.ProtoReflect.Descriptor instead. func (*HeadObjectResponse) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{9} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{11} } func (x *HeadObjectResponse) GetContentLength() int64 { @@ -572,7 +674,7 @@ type GetObjectRequest struct { func (x *GetObjectRequest) Reset() { *x = GetObjectRequest{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[10] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -584,7 +686,7 @@ func (x *GetObjectRequest) String() string { func (*GetObjectRequest) ProtoMessage() {} func (x *GetObjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[10] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -597,7 +699,7 @@ func (x *GetObjectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetObjectRequest.ProtoReflect.Descriptor instead. func (*GetObjectRequest) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{10} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{12} } func (x *GetObjectRequest) GetBucket() *storagebuckets.StorageBucket { @@ -631,7 +733,7 @@ type GetObjectResponse struct { func (x *GetObjectResponse) Reset() { *x = GetObjectResponse{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[11] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -643,7 +745,7 @@ func (x *GetObjectResponse) String() string { func (*GetObjectResponse) ProtoMessage() {} func (x *GetObjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[11] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -656,7 +758,7 @@ func (x *GetObjectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetObjectResponse.ProtoReflect.Descriptor instead. func (*GetObjectResponse) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{11} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{13} } func (x *GetObjectResponse) GetFileChunk() []byte { @@ -680,7 +782,7 @@ type PutObjectRequest struct { func (x *PutObjectRequest) Reset() { *x = PutObjectRequest{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[12] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -692,7 +794,7 @@ func (x *PutObjectRequest) String() string { func (*PutObjectRequest) ProtoMessage() {} func (x *PutObjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[12] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -705,7 +807,7 @@ func (x *PutObjectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PutObjectRequest.ProtoReflect.Descriptor instead. func (*PutObjectRequest) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{12} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{14} } func (x *PutObjectRequest) GetBucket() *storagebuckets.StorageBucket { @@ -739,7 +841,7 @@ type PutObjectResponse struct { func (x *PutObjectResponse) Reset() { *x = PutObjectResponse{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[13] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -751,7 +853,7 @@ func (x *PutObjectResponse) String() string { func (*PutObjectResponse) ProtoMessage() {} func (x *PutObjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[13] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -764,7 +866,7 @@ func (x *PutObjectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PutObjectResponse.ProtoReflect.Descriptor instead. func (*PutObjectResponse) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{13} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{15} } func (x *PutObjectResponse) GetChecksumSha_256() []byte { @@ -798,7 +900,7 @@ type DeleteObjectsRequest struct { func (x *DeleteObjectsRequest) Reset() { *x = DeleteObjectsRequest{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[14] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -810,7 +912,7 @@ func (x *DeleteObjectsRequest) String() string { func (*DeleteObjectsRequest) ProtoMessage() {} func (x *DeleteObjectsRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[14] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -823,7 +925,7 @@ func (x *DeleteObjectsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteObjectsRequest.ProtoReflect.Descriptor instead. func (*DeleteObjectsRequest) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{14} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{16} } func (x *DeleteObjectsRequest) GetBucket() *storagebuckets.StorageBucket { @@ -861,7 +963,7 @@ type DeleteObjectsResponse struct { func (x *DeleteObjectsResponse) Reset() { *x = DeleteObjectsResponse{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[15] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -873,7 +975,7 @@ func (x *DeleteObjectsResponse) String() string { func (*DeleteObjectsResponse) ProtoMessage() {} func (x *DeleteObjectsResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[15] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -886,7 +988,7 @@ func (x *DeleteObjectsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteObjectsResponse.ProtoReflect.Descriptor instead. func (*DeleteObjectsResponse) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{15} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{17} } func (x *DeleteObjectsResponse) GetObjectsDeleted() uint32 { @@ -910,7 +1012,7 @@ type Permission struct { func (x *Permission) Reset() { *x = Permission{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[16] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -922,7 +1024,7 @@ func (x *Permission) String() string { func (*Permission) ProtoMessage() {} func (x *Permission) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[16] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -935,7 +1037,7 @@ func (x *Permission) ProtoReflect() protoreflect.Message { // Deprecated: Use Permission.ProtoReflect.Descriptor instead. func (*Permission) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{16} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{18} } func (x *Permission) GetState() StateType { @@ -973,7 +1075,7 @@ type Permissions struct { func (x *Permissions) Reset() { *x = Permissions{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[17] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -985,7 +1087,7 @@ func (x *Permissions) String() string { func (*Permissions) ProtoMessage() {} func (x *Permissions) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[17] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -998,7 +1100,7 @@ func (x *Permissions) ProtoReflect() protoreflect.Message { // Deprecated: Use Permissions.ProtoReflect.Descriptor instead. func (*Permissions) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{17} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{19} } func (x *Permissions) GetWrite() *Permission { @@ -1034,7 +1136,7 @@ type StorageBucketCredentialState struct { func (x *StorageBucketCredentialState) Reset() { *x = StorageBucketCredentialState{} - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[18] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1046,7 +1148,7 @@ func (x *StorageBucketCredentialState) String() string { func (*StorageBucketCredentialState) ProtoMessage() {} func (x *StorageBucketCredentialState) ProtoReflect() protoreflect.Message { - mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[18] + mi := &file_plugin_v1_storage_plugin_service_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1059,7 +1161,7 @@ func (x *StorageBucketCredentialState) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageBucketCredentialState.ProtoReflect.Descriptor instead. func (*StorageBucketCredentialState) Descriptor() ([]byte, []int) { - return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{18} + return file_plugin_v1_storage_plugin_service_proto_rawDescGZIP(), []int{20} } func (x *StorageBucketCredentialState) GetState() *Permissions { @@ -1082,220 +1184,249 @@ var file_plugin_v1_storage_plugin_service_proto_rawDesc = []byte{ 0x0a, 0x26, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x1a, 0x3f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x70, + 0x2e, 0x76, 0x31, 0x1a, 0x30, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, + 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x76, + 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x71, 0x0a, 0x1c, 0x4f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x1d, 0x4f, 0x6e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x70, 0x65, - 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x64, 0x52, 0x09, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x22, 0xbc, 0x02, 0x0a, - 0x1c, 0x4f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x60, 0x0a, - 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x52, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, - 0x58, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x09, - 0x6e, 0x65, 0x77, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x60, 0x0a, 0x09, 0x70, 0x65, 0x72, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa5, 0x01, 0x0a, 0x21, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x0a, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x06, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, + 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x22, 0x5d, 0x0a, + 0x22, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x71, 0x0a, 0x1c, + 0x4f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, - 0x52, 0x09, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x22, 0x81, 0x01, 0x0a, 0x1d, - 0x4f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, - 0x09, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x42, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x22, - 0xd3, 0x01, 0x0a, 0x1c, 0x4f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x51, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x12, 0x60, 0x0a, 0x09, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x70, 0x65, 0x72, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x4f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, 0x0a, 0x1a, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, + 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, + 0x81, 0x01, 0x0a, 0x1d, 0x4f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x60, 0x0a, 0x09, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, - 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x62, + 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, + 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x64, 0x22, 0xbc, 0x02, 0x0a, 0x1c, 0x4f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x60, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x58, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x12, 0x60, 0x0a, 0x09, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, 0x1e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x65, + 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x64, 0x22, 0x81, 0x01, 0x0a, 0x1d, 0x4f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x70, 0x65, 0x72, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x22, 0xd3, 0x01, 0x0a, 0x1c, 0x4f, 0x6e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x60, 0x0a, 0x09, 0x70, 0x65, + 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x64, 0x52, 0x09, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1f, 0x0a, 0x1d, + 0x4f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, 0x0a, + 0x1a, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x22, 0x7c, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x3f, 0x0a, - 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x14, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x22, 0x96, - 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x75, 0x6e, - 0x6b, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x68, - 0x75, 0x6e, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x32, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x8b, 0x01, 0x0a, 0x10, - 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x51, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x1e, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x3d, 0x0a, 0x11, 0x50, 0x75, 0x74, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, - 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x5f, 0x32, - 0x35, 0x36, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x22, 0xa6, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x51, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x50, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, - 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, - 0x65, 0x22, 0x40, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x0a, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x23, - 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, - 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x41, 0x74, 0x22, 0x94, - 0x01, 0x0a, 0x0b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, - 0x0a, 0x05, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x1d, + 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, + 0x11, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x14, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x7c, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x64, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, + 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x12, 0x3f, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x22, 0x96, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x1e, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x32, + 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x75, 0x6e, + 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x68, 0x75, + 0x6e, 0x6b, 0x22, 0x8b, 0x01, 0x0a, 0x10, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x22, 0x3d, 0x0a, 0x11, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x5f, 0x32, 0x35, 0x36, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x22, + 0xa6, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, + 0x65, 0x79, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x6b, 0x65, 0x79, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, + 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, + 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x22, 0x40, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x0a, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x65, 0x64, 0x41, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x0b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x05, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x72, 0x65, 0x61, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x72, 0x65, 0x61, 0x64, 0x12, 0x2d, 0x0a, + 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x72, - 0x65, 0x61, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x04, 0x72, 0x65, 0x61, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x22, 0x66, 0x0a, 0x1c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x14, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2a, 0x68, 0x0a, - 0x09, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, - 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, - 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x32, 0xf1, 0x05, 0x0a, 0x14, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x6a, 0x0a, 0x15, 0x4f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x27, 0x2e, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, - 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x15, - 0x4f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x27, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x4f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, - 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x15, 0x4f, 0x6e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x12, 0x27, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x22, 0x66, 0x0a, 0x1c, + 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x2a, 0x68, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, + 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x4b, 0x10, 0x01, + 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x32, 0xec, + 0x06, 0x0a, 0x14, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x79, 0x0a, 0x1a, 0x4e, 0x6f, 0x72, 0x6d, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x15, 0x4f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x27, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x4f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, + 0x0a, 0x15, 0x4f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x27, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x28, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x15, 0x4f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x48, 0x65, - 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6b, 0x65, 0x74, 0x12, 0x27, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x4f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x2e, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0a, + 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1c, 0x2e, 0x70, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x1b, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, - 0x46, 0x0a, 0x09, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x35, 0x5a, 0x33, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x64, 0x6b, - 0x2f, 0x70, 0x62, 0x73, 0x2f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x3b, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, + 0x01, 0x12, 0x46, 0x0a, 0x09, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, + 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0d, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x35, 0x5a, + 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, + 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x2f, 0x73, + 0x64, 0x6b, 0x2f, 0x70, 0x62, 0x73, 0x2f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x3b, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1311,74 +1442,83 @@ func file_plugin_v1_storage_plugin_service_proto_rawDescGZIP() []byte { } var file_plugin_v1_storage_plugin_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_plugin_v1_storage_plugin_service_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_plugin_v1_storage_plugin_service_proto_msgTypes = make([]protoimpl.MessageInfo, 21) var file_plugin_v1_storage_plugin_service_proto_goTypes = []any{ - (StateType)(0), // 0: plugin.v1.StateType - (*OnCreateStorageBucketRequest)(nil), // 1: plugin.v1.OnCreateStorageBucketRequest - (*OnCreateStorageBucketResponse)(nil), // 2: plugin.v1.OnCreateStorageBucketResponse - (*OnUpdateStorageBucketRequest)(nil), // 3: plugin.v1.OnUpdateStorageBucketRequest - (*OnUpdateStorageBucketResponse)(nil), // 4: plugin.v1.OnUpdateStorageBucketResponse - (*OnDeleteStorageBucketRequest)(nil), // 5: plugin.v1.OnDeleteStorageBucketRequest - (*OnDeleteStorageBucketResponse)(nil), // 6: plugin.v1.OnDeleteStorageBucketResponse - (*ValidatePermissionsRequest)(nil), // 7: plugin.v1.ValidatePermissionsRequest - (*ValidatePermissionsResponse)(nil), // 8: plugin.v1.ValidatePermissionsResponse - (*HeadObjectRequest)(nil), // 9: plugin.v1.HeadObjectRequest - (*HeadObjectResponse)(nil), // 10: plugin.v1.HeadObjectResponse - (*GetObjectRequest)(nil), // 11: plugin.v1.GetObjectRequest - (*GetObjectResponse)(nil), // 12: plugin.v1.GetObjectResponse - (*PutObjectRequest)(nil), // 13: plugin.v1.PutObjectRequest - (*PutObjectResponse)(nil), // 14: plugin.v1.PutObjectResponse - (*DeleteObjectsRequest)(nil), // 15: plugin.v1.DeleteObjectsRequest - (*DeleteObjectsResponse)(nil), // 16: plugin.v1.DeleteObjectsResponse - (*Permission)(nil), // 17: plugin.v1.Permission - (*Permissions)(nil), // 18: plugin.v1.Permissions - (*StorageBucketCredentialState)(nil), // 19: plugin.v1.StorageBucketCredentialState - (*storagebuckets.StorageBucket)(nil), // 20: controller.api.resources.storagebuckets.v1.StorageBucket - (*storagebuckets.StorageBucketPersisted)(nil), // 21: controller.api.resources.storagebuckets.v1.StorageBucketPersisted - (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp + (StateType)(0), // 0: plugin.v1.StateType + (*NormalizeStorageBucketDataRequest)(nil), // 1: plugin.v1.NormalizeStorageBucketDataRequest + (*NormalizeStorageBucketDataResponse)(nil), // 2: plugin.v1.NormalizeStorageBucketDataResponse + (*OnCreateStorageBucketRequest)(nil), // 3: plugin.v1.OnCreateStorageBucketRequest + (*OnCreateStorageBucketResponse)(nil), // 4: plugin.v1.OnCreateStorageBucketResponse + (*OnUpdateStorageBucketRequest)(nil), // 5: plugin.v1.OnUpdateStorageBucketRequest + (*OnUpdateStorageBucketResponse)(nil), // 6: plugin.v1.OnUpdateStorageBucketResponse + (*OnDeleteStorageBucketRequest)(nil), // 7: plugin.v1.OnDeleteStorageBucketRequest + (*OnDeleteStorageBucketResponse)(nil), // 8: plugin.v1.OnDeleteStorageBucketResponse + (*ValidatePermissionsRequest)(nil), // 9: plugin.v1.ValidatePermissionsRequest + (*ValidatePermissionsResponse)(nil), // 10: plugin.v1.ValidatePermissionsResponse + (*HeadObjectRequest)(nil), // 11: plugin.v1.HeadObjectRequest + (*HeadObjectResponse)(nil), // 12: plugin.v1.HeadObjectResponse + (*GetObjectRequest)(nil), // 13: plugin.v1.GetObjectRequest + (*GetObjectResponse)(nil), // 14: plugin.v1.GetObjectResponse + (*PutObjectRequest)(nil), // 15: plugin.v1.PutObjectRequest + (*PutObjectResponse)(nil), // 16: plugin.v1.PutObjectResponse + (*DeleteObjectsRequest)(nil), // 17: plugin.v1.DeleteObjectsRequest + (*DeleteObjectsResponse)(nil), // 18: plugin.v1.DeleteObjectsResponse + (*Permission)(nil), // 19: plugin.v1.Permission + (*Permissions)(nil), // 20: plugin.v1.Permissions + (*StorageBucketCredentialState)(nil), // 21: plugin.v1.StorageBucketCredentialState + (*structpb.Struct)(nil), // 22: google.protobuf.Struct + (*plugins.PluginInfo)(nil), // 23: controller.api.resources.plugins.v1.PluginInfo + (*storagebuckets.StorageBucket)(nil), // 24: controller.api.resources.storagebuckets.v1.StorageBucket + (*storagebuckets.StorageBucketPersisted)(nil), // 25: controller.api.resources.storagebuckets.v1.StorageBucketPersisted + (*timestamppb.Timestamp)(nil), // 26: google.protobuf.Timestamp } var file_plugin_v1_storage_plugin_service_proto_depIdxs = []int32{ - 20, // 0: plugin.v1.OnCreateStorageBucketRequest.bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket - 21, // 1: plugin.v1.OnCreateStorageBucketResponse.persisted:type_name -> controller.api.resources.storagebuckets.v1.StorageBucketPersisted - 20, // 2: plugin.v1.OnUpdateStorageBucketRequest.current_bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket - 20, // 3: plugin.v1.OnUpdateStorageBucketRequest.new_bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket - 21, // 4: plugin.v1.OnUpdateStorageBucketRequest.persisted:type_name -> controller.api.resources.storagebuckets.v1.StorageBucketPersisted - 21, // 5: plugin.v1.OnUpdateStorageBucketResponse.persisted:type_name -> controller.api.resources.storagebuckets.v1.StorageBucketPersisted - 20, // 6: plugin.v1.OnDeleteStorageBucketRequest.bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket - 21, // 7: plugin.v1.OnDeleteStorageBucketRequest.persisted:type_name -> controller.api.resources.storagebuckets.v1.StorageBucketPersisted - 20, // 8: plugin.v1.ValidatePermissionsRequest.bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket - 20, // 9: plugin.v1.HeadObjectRequest.bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket - 22, // 10: plugin.v1.HeadObjectResponse.last_modified:type_name -> google.protobuf.Timestamp - 20, // 11: plugin.v1.GetObjectRequest.bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket - 20, // 12: plugin.v1.PutObjectRequest.bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket - 20, // 13: plugin.v1.DeleteObjectsRequest.bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket - 0, // 14: plugin.v1.Permission.state:type_name -> plugin.v1.StateType - 22, // 15: plugin.v1.Permission.checked_at:type_name -> google.protobuf.Timestamp - 17, // 16: plugin.v1.Permissions.write:type_name -> plugin.v1.Permission - 17, // 17: plugin.v1.Permissions.read:type_name -> plugin.v1.Permission - 17, // 18: plugin.v1.Permissions.delete:type_name -> plugin.v1.Permission - 18, // 19: plugin.v1.StorageBucketCredentialState.state:type_name -> plugin.v1.Permissions - 1, // 20: plugin.v1.StoragePluginService.OnCreateStorageBucket:input_type -> plugin.v1.OnCreateStorageBucketRequest - 3, // 21: plugin.v1.StoragePluginService.OnUpdateStorageBucket:input_type -> plugin.v1.OnUpdateStorageBucketRequest - 5, // 22: plugin.v1.StoragePluginService.OnDeleteStorageBucket:input_type -> plugin.v1.OnDeleteStorageBucketRequest - 7, // 23: plugin.v1.StoragePluginService.ValidatePermissions:input_type -> plugin.v1.ValidatePermissionsRequest - 9, // 24: plugin.v1.StoragePluginService.HeadObject:input_type -> plugin.v1.HeadObjectRequest - 11, // 25: plugin.v1.StoragePluginService.GetObject:input_type -> plugin.v1.GetObjectRequest - 13, // 26: plugin.v1.StoragePluginService.PutObject:input_type -> plugin.v1.PutObjectRequest - 15, // 27: plugin.v1.StoragePluginService.DeleteObjects:input_type -> plugin.v1.DeleteObjectsRequest - 2, // 28: plugin.v1.StoragePluginService.OnCreateStorageBucket:output_type -> plugin.v1.OnCreateStorageBucketResponse - 4, // 29: plugin.v1.StoragePluginService.OnUpdateStorageBucket:output_type -> plugin.v1.OnUpdateStorageBucketResponse - 6, // 30: plugin.v1.StoragePluginService.OnDeleteStorageBucket:output_type -> plugin.v1.OnDeleteStorageBucketResponse - 8, // 31: plugin.v1.StoragePluginService.ValidatePermissions:output_type -> plugin.v1.ValidatePermissionsResponse - 10, // 32: plugin.v1.StoragePluginService.HeadObject:output_type -> plugin.v1.HeadObjectResponse - 12, // 33: plugin.v1.StoragePluginService.GetObject:output_type -> plugin.v1.GetObjectResponse - 14, // 34: plugin.v1.StoragePluginService.PutObject:output_type -> plugin.v1.PutObjectResponse - 16, // 35: plugin.v1.StoragePluginService.DeleteObjects:output_type -> plugin.v1.DeleteObjectsResponse - 28, // [28:36] is the sub-list for method output_type - 20, // [20:28] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 22, // 0: plugin.v1.NormalizeStorageBucketDataRequest.attributes:type_name -> google.protobuf.Struct + 23, // 1: plugin.v1.NormalizeStorageBucketDataRequest.plugin:type_name -> controller.api.resources.plugins.v1.PluginInfo + 22, // 2: plugin.v1.NormalizeStorageBucketDataResponse.attributes:type_name -> google.protobuf.Struct + 24, // 3: plugin.v1.OnCreateStorageBucketRequest.bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket + 25, // 4: plugin.v1.OnCreateStorageBucketResponse.persisted:type_name -> controller.api.resources.storagebuckets.v1.StorageBucketPersisted + 24, // 5: plugin.v1.OnUpdateStorageBucketRequest.current_bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket + 24, // 6: plugin.v1.OnUpdateStorageBucketRequest.new_bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket + 25, // 7: plugin.v1.OnUpdateStorageBucketRequest.persisted:type_name -> controller.api.resources.storagebuckets.v1.StorageBucketPersisted + 25, // 8: plugin.v1.OnUpdateStorageBucketResponse.persisted:type_name -> controller.api.resources.storagebuckets.v1.StorageBucketPersisted + 24, // 9: plugin.v1.OnDeleteStorageBucketRequest.bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket + 25, // 10: plugin.v1.OnDeleteStorageBucketRequest.persisted:type_name -> controller.api.resources.storagebuckets.v1.StorageBucketPersisted + 24, // 11: plugin.v1.ValidatePermissionsRequest.bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket + 24, // 12: plugin.v1.HeadObjectRequest.bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket + 26, // 13: plugin.v1.HeadObjectResponse.last_modified:type_name -> google.protobuf.Timestamp + 24, // 14: plugin.v1.GetObjectRequest.bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket + 24, // 15: plugin.v1.PutObjectRequest.bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket + 24, // 16: plugin.v1.DeleteObjectsRequest.bucket:type_name -> controller.api.resources.storagebuckets.v1.StorageBucket + 0, // 17: plugin.v1.Permission.state:type_name -> plugin.v1.StateType + 26, // 18: plugin.v1.Permission.checked_at:type_name -> google.protobuf.Timestamp + 19, // 19: plugin.v1.Permissions.write:type_name -> plugin.v1.Permission + 19, // 20: plugin.v1.Permissions.read:type_name -> plugin.v1.Permission + 19, // 21: plugin.v1.Permissions.delete:type_name -> plugin.v1.Permission + 20, // 22: plugin.v1.StorageBucketCredentialState.state:type_name -> plugin.v1.Permissions + 1, // 23: plugin.v1.StoragePluginService.NormalizeStorageBucketData:input_type -> plugin.v1.NormalizeStorageBucketDataRequest + 3, // 24: plugin.v1.StoragePluginService.OnCreateStorageBucket:input_type -> plugin.v1.OnCreateStorageBucketRequest + 5, // 25: plugin.v1.StoragePluginService.OnUpdateStorageBucket:input_type -> plugin.v1.OnUpdateStorageBucketRequest + 7, // 26: plugin.v1.StoragePluginService.OnDeleteStorageBucket:input_type -> plugin.v1.OnDeleteStorageBucketRequest + 9, // 27: plugin.v1.StoragePluginService.ValidatePermissions:input_type -> plugin.v1.ValidatePermissionsRequest + 11, // 28: plugin.v1.StoragePluginService.HeadObject:input_type -> plugin.v1.HeadObjectRequest + 13, // 29: plugin.v1.StoragePluginService.GetObject:input_type -> plugin.v1.GetObjectRequest + 15, // 30: plugin.v1.StoragePluginService.PutObject:input_type -> plugin.v1.PutObjectRequest + 17, // 31: plugin.v1.StoragePluginService.DeleteObjects:input_type -> plugin.v1.DeleteObjectsRequest + 2, // 32: plugin.v1.StoragePluginService.NormalizeStorageBucketData:output_type -> plugin.v1.NormalizeStorageBucketDataResponse + 4, // 33: plugin.v1.StoragePluginService.OnCreateStorageBucket:output_type -> plugin.v1.OnCreateStorageBucketResponse + 6, // 34: plugin.v1.StoragePluginService.OnUpdateStorageBucket:output_type -> plugin.v1.OnUpdateStorageBucketResponse + 8, // 35: plugin.v1.StoragePluginService.OnDeleteStorageBucket:output_type -> plugin.v1.OnDeleteStorageBucketResponse + 10, // 36: plugin.v1.StoragePluginService.ValidatePermissions:output_type -> plugin.v1.ValidatePermissionsResponse + 12, // 37: plugin.v1.StoragePluginService.HeadObject:output_type -> plugin.v1.HeadObjectResponse + 14, // 38: plugin.v1.StoragePluginService.GetObject:output_type -> plugin.v1.GetObjectResponse + 16, // 39: plugin.v1.StoragePluginService.PutObject:output_type -> plugin.v1.PutObjectResponse + 18, // 40: plugin.v1.StoragePluginService.DeleteObjects:output_type -> plugin.v1.DeleteObjectsResponse + 32, // [32:41] is the sub-list for method output_type + 23, // [23:32] is the sub-list for method input_type + 23, // [23:23] is the sub-list for extension type_name + 23, // [23:23] is the sub-list for extension extendee + 0, // [0:23] is the sub-list for field type_name } func init() { file_plugin_v1_storage_plugin_service_proto_init() } @@ -1392,7 +1532,7 @@ func file_plugin_v1_storage_plugin_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_plugin_v1_storage_plugin_service_proto_rawDesc, NumEnums: 1, - NumMessages: 19, + NumMessages: 21, NumExtensions: 0, NumServices: 1, }, diff --git a/sdk/pbs/plugin/storage_plugin_service_grpc.pb.go b/sdk/pbs/plugin/storage_plugin_service_grpc.pb.go index b38d1cf27d..4935bb6520 100644 --- a/sdk/pbs/plugin/storage_plugin_service_grpc.pb.go +++ b/sdk/pbs/plugin/storage_plugin_service_grpc.pb.go @@ -22,20 +22,39 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - StoragePluginService_OnCreateStorageBucket_FullMethodName = "/plugin.v1.StoragePluginService/OnCreateStorageBucket" - StoragePluginService_OnUpdateStorageBucket_FullMethodName = "/plugin.v1.StoragePluginService/OnUpdateStorageBucket" - StoragePluginService_OnDeleteStorageBucket_FullMethodName = "/plugin.v1.StoragePluginService/OnDeleteStorageBucket" - StoragePluginService_ValidatePermissions_FullMethodName = "/plugin.v1.StoragePluginService/ValidatePermissions" - StoragePluginService_HeadObject_FullMethodName = "/plugin.v1.StoragePluginService/HeadObject" - StoragePluginService_GetObject_FullMethodName = "/plugin.v1.StoragePluginService/GetObject" - StoragePluginService_PutObject_FullMethodName = "/plugin.v1.StoragePluginService/PutObject" - StoragePluginService_DeleteObjects_FullMethodName = "/plugin.v1.StoragePluginService/DeleteObjects" + StoragePluginService_NormalizeStorageBucketData_FullMethodName = "/plugin.v1.StoragePluginService/NormalizeStorageBucketData" + StoragePluginService_OnCreateStorageBucket_FullMethodName = "/plugin.v1.StoragePluginService/OnCreateStorageBucket" + StoragePluginService_OnUpdateStorageBucket_FullMethodName = "/plugin.v1.StoragePluginService/OnUpdateStorageBucket" + StoragePluginService_OnDeleteStorageBucket_FullMethodName = "/plugin.v1.StoragePluginService/OnDeleteStorageBucket" + StoragePluginService_ValidatePermissions_FullMethodName = "/plugin.v1.StoragePluginService/ValidatePermissions" + StoragePluginService_HeadObject_FullMethodName = "/plugin.v1.StoragePluginService/HeadObject" + StoragePluginService_GetObject_FullMethodName = "/plugin.v1.StoragePluginService/GetObject" + StoragePluginService_PutObject_FullMethodName = "/plugin.v1.StoragePluginService/PutObject" + StoragePluginService_DeleteObjects_FullMethodName = "/plugin.v1.StoragePluginService/DeleteObjects" ) // StoragePluginServiceClient is the client API for StoragePluginService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type StoragePluginServiceClient interface { + // NormalizeStorageBucketData is a hook that passes attributes to the plugin + // and allows those values to be normalized prior to creating or updating + // those values within the persisted storage bucket. + // + // NormalizeStorageBucketData is called before the values of attributes are + // persisted. All normalized values will be persisted in Boundary and returned + // to all clients. + // + // NormalizeStorageBucketData could affect other clients. For example, in + // Terraform, if data is passed to Boundary and then normalized into a new + // data structure, it could cause diffs in Terraform for unchanged values. + // This is because, the data structure in Terraform's state will now be + // different from the normalized data structure returned from Boundary. + // + // NormalizeStorageBucketData is called before: + // * OnCreateStorageBucket + // * OnUpdateStorageBucket + NormalizeStorageBucketData(ctx context.Context, in *NormalizeStorageBucketDataRequest, opts ...grpc.CallOption) (*NormalizeStorageBucketDataResponse, error) // OnCreateStorageBucket is a hook that runs when a // storage bucket is created. OnCreateStorageBucket(ctx context.Context, in *OnCreateStorageBucketRequest, opts ...grpc.CallOption) (*OnCreateStorageBucketResponse, error) @@ -68,6 +87,15 @@ func NewStoragePluginServiceClient(cc grpc.ClientConnInterface) StoragePluginSer return &storagePluginServiceClient{cc} } +func (c *storagePluginServiceClient) NormalizeStorageBucketData(ctx context.Context, in *NormalizeStorageBucketDataRequest, opts ...grpc.CallOption) (*NormalizeStorageBucketDataResponse, error) { + out := new(NormalizeStorageBucketDataResponse) + err := c.cc.Invoke(ctx, StoragePluginService_NormalizeStorageBucketData_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *storagePluginServiceClient) OnCreateStorageBucket(ctx context.Context, in *OnCreateStorageBucketRequest, opts ...grpc.CallOption) (*OnCreateStorageBucketResponse, error) { out := new(OnCreateStorageBucketResponse) err := c.cc.Invoke(ctx, StoragePluginService_OnCreateStorageBucket_FullMethodName, in, out, opts...) @@ -167,6 +195,24 @@ func (c *storagePluginServiceClient) DeleteObjects(ctx context.Context, in *Dele // All implementations must embed UnimplementedStoragePluginServiceServer // for forward compatibility type StoragePluginServiceServer interface { + // NormalizeStorageBucketData is a hook that passes attributes to the plugin + // and allows those values to be normalized prior to creating or updating + // those values within the persisted storage bucket. + // + // NormalizeStorageBucketData is called before the values of attributes are + // persisted. All normalized values will be persisted in Boundary and returned + // to all clients. + // + // NormalizeStorageBucketData could affect other clients. For example, in + // Terraform, if data is passed to Boundary and then normalized into a new + // data structure, it could cause diffs in Terraform for unchanged values. + // This is because, the data structure in Terraform's state will now be + // different from the normalized data structure returned from Boundary. + // + // NormalizeStorageBucketData is called before: + // * OnCreateStorageBucket + // * OnUpdateStorageBucket + NormalizeStorageBucketData(context.Context, *NormalizeStorageBucketDataRequest) (*NormalizeStorageBucketDataResponse, error) // OnCreateStorageBucket is a hook that runs when a // storage bucket is created. OnCreateStorageBucket(context.Context, *OnCreateStorageBucketRequest) (*OnCreateStorageBucketResponse, error) @@ -196,6 +242,9 @@ type StoragePluginServiceServer interface { type UnimplementedStoragePluginServiceServer struct { } +func (UnimplementedStoragePluginServiceServer) NormalizeStorageBucketData(context.Context, *NormalizeStorageBucketDataRequest) (*NormalizeStorageBucketDataResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method NormalizeStorageBucketData not implemented") +} func (UnimplementedStoragePluginServiceServer) OnCreateStorageBucket(context.Context, *OnCreateStorageBucketRequest) (*OnCreateStorageBucketResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method OnCreateStorageBucket not implemented") } @@ -233,6 +282,24 @@ func RegisterStoragePluginServiceServer(s grpc.ServiceRegistrar, srv StoragePlug s.RegisterService(&StoragePluginService_ServiceDesc, srv) } +func _StoragePluginService_NormalizeStorageBucketData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(NormalizeStorageBucketDataRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StoragePluginServiceServer).NormalizeStorageBucketData(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: StoragePluginService_NormalizeStorageBucketData_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StoragePluginServiceServer).NormalizeStorageBucketData(ctx, req.(*NormalizeStorageBucketDataRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _StoragePluginService_OnCreateStorageBucket_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(OnCreateStorageBucketRequest) if err := dec(in); err != nil { @@ -387,6 +454,10 @@ var StoragePluginService_ServiceDesc = grpc.ServiceDesc{ ServiceName: "plugin.v1.StoragePluginService", HandlerType: (*StoragePluginServiceServer)(nil), Methods: []grpc.MethodDesc{ + { + MethodName: "NormalizeStorageBucketData", + Handler: _StoragePluginService_NormalizeStorageBucketData_Handler, + }, { MethodName: "OnCreateStorageBucket", Handler: _StoragePluginService_OnCreateStorageBucket_Handler, From 1fb52206e2feefc97d3e020805448f83a1a08f5a Mon Sep 17 00:00:00 2001 From: Hugo <10965479+hugoghx@users.noreply.github.com> Date: Fri, 14 Mar 2025 15:50:54 +0000 Subject: [PATCH 39/70] chore: Update AWS and MinIO plugins (#5598) --- plugins/boundary/mains/aws/go.mod | 8 ++++++-- plugins/boundary/mains/aws/go.sum | 20 ++++++++++---------- plugins/boundary/mains/minio/go.mod | 8 ++++++-- plugins/boundary/mains/minio/go.sum | 20 ++++++++++---------- 4 files changed, 32 insertions(+), 24 deletions(-) diff --git a/plugins/boundary/mains/aws/go.mod b/plugins/boundary/mains/aws/go.mod index 685ed14e7b..8c0a8d6e47 100644 --- a/plugins/boundary/mains/aws/go.mod +++ b/plugins/boundary/mains/aws/go.mod @@ -3,8 +3,8 @@ module github.com/hashicorp/boundary/plugins/boundary/mains/aws go 1.23.3 require ( - github.com/hashicorp/boundary-plugin-aws v0.5.0 - github.com/hashicorp/boundary/sdk v0.0.49 + github.com/hashicorp/boundary-plugin-aws v0.5.1 + github.com/hashicorp/boundary/sdk v0.0.51 ) require ( @@ -42,7 +42,10 @@ require ( github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-secure-stdlib/awsutil/v2 v2.1.0 // indirect github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect + github.com/hashicorp/go-secure-stdlib/parseutil v0.2.0 // indirect github.com/hashicorp/go-secure-stdlib/pluginutil/v2 v2.0.7 // indirect + github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect + github.com/hashicorp/go-sockaddr v1.0.6 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/yamux v0.1.2 // indirect github.com/kr/text v0.2.0 // indirect @@ -54,6 +57,7 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/oklog/run v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/ryanuber/go-glob v1.0.0 // indirect github.com/stretchr/testify v1.10.0 // indirect golang.org/x/crypto v0.32.0 // indirect golang.org/x/net v0.34.0 // indirect diff --git a/plugins/boundary/mains/aws/go.sum b/plugins/boundary/mains/aws/go.sum index 01ac57d3c0..71c3cbb7a4 100644 --- a/plugins/boundary/mains/aws/go.sum +++ b/plugins/boundary/mains/aws/go.sum @@ -65,10 +65,10 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/hashicorp/boundary-plugin-aws v0.5.0 h1:lHFZKBrBh4xZjOdukFqPvi4l2IQZH/eAlcz97BOMjnk= -github.com/hashicorp/boundary-plugin-aws v0.5.0/go.mod h1:LUaKIUg5yr3gGL7N1AtV4ywxYrV3ExiMcacLHdJMuy0= -github.com/hashicorp/boundary/sdk v0.0.49 h1:XOb6mSKyrU/wI20+5xTYBHQUP7eIeKcLxKSCpCs4yzM= -github.com/hashicorp/boundary/sdk v0.0.49/go.mod h1:IHP79to8aIi22FiY58pgBqJL96/U9D8ZAUhS2DdC+Us= +github.com/hashicorp/boundary-plugin-aws v0.5.1 h1:m8uV2YnmM4yQB3wJdwlIeOB+EdzMXrBJ2jMqf5FkRXc= +github.com/hashicorp/boundary-plugin-aws v0.5.1/go.mod h1:EgAYE7ZFz1uLoDEutYYlxLRieWfxPXW7hSCSmp8jA/E= +github.com/hashicorp/boundary/sdk v0.0.51 h1:a7XpHNTYaeBXRhJkc8MC0siPtfJELYH/ibjw/0UbJEg= +github.com/hashicorp/boundary/sdk v0.0.51/go.mod h1:gSrMTppD30IPVsUqs4SwQowu+OlR5/+58draey++SkQ= 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= @@ -80,8 +80,8 @@ github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9n github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-kms-wrapping/plugin/v2 v2.0.5 h1:jrnDfQm2hCQ0/hEselgqzV4fK16gpZoY0OWGZpVPNHM= -github.com/hashicorp/go-kms-wrapping/plugin/v2 v2.0.5/go.mod h1:psh1qKep5ukvuNobFY/hCybuudlkkACpmazOsCgX5Rg= +github.com/hashicorp/go-kms-wrapping/plugin/v2 v2.0.7 h1:gM4OwbF16Cmfxt2QMkoGMQbRTfYFZLvDMPgU3rM3KIo= +github.com/hashicorp/go-kms-wrapping/plugin/v2 v2.0.7/go.mod h1:7ZMHVluyqgHgEuTADeDzFNWoA9mnyPfdiK8Tk2Bct1c= github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 h1:WZeXfD26QMWYC35at25KgE021SF9L3u9UMHK8fJAdV0= github.com/hashicorp/go-kms-wrapping/v2 v2.0.16/go.mod h1:ZiKZctjRTLEppuRwrttWkp71VYMbTTCkazK4xT7U/NQ= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= @@ -96,8 +96,8 @@ github.com/hashicorp/go-secure-stdlib/configutil/v2 v2.0.11 h1:uPW2Wn0YlmI9RGSkZ github.com/hashicorp/go-secure-stdlib/configutil/v2 v2.0.11/go.mod h1:uis9dCmOzXuOaRyXq+1Foh31kcvXKoWogjNnhfjHfW8= github.com/hashicorp/go-secure-stdlib/listenerutil v0.1.9 h1:0S0ctJ7Ra8O7ap+/3fZUnzJ3VzJyirWS/WnNCuOYtZY= github.com/hashicorp/go-secure-stdlib/listenerutil v0.1.9/go.mod h1:TNNdgtjLgVDbrgFcyCKrlAicIl3dZF94swJltyGUX2M= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 h1:iBt4Ew4XEGLfh6/bPk4rSYmuZJGizr6/x/AEizP0CQc= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8/go.mod h1:aiJI+PIApBRQG7FZTEBx5GiiX+HbOHilUdNxUZi4eV0= +github.com/hashicorp/go-secure-stdlib/parseutil v0.2.0 h1:U+kC2dOhMFQctRfhK0gRctKAPTloZdMU5ZJxaesJ/VM= +github.com/hashicorp/go-secure-stdlib/parseutil v0.2.0/go.mod h1:Ll013mhdmsVDuoIXVfBtvgGJsXDYkTw1kooNcoCXuE0= github.com/hashicorp/go-secure-stdlib/pluginutil/v2 v2.0.7 h1:oYEPhztZRmZCETTxxIo5MNa+I+DDqSDZ+biJt2o4Ncw= github.com/hashicorp/go-secure-stdlib/pluginutil/v2 v2.0.7/go.mod h1:ggFN8dlaLWS2R1gymBbCrvXM/bkZP7hEAa4seqDwhyg= github.com/hashicorp/go-secure-stdlib/reloadutil v0.1.1 h1:SMGUnbpAcat8rIKHkBPjfv81yC46a8eCNZ2hsR2l1EI= @@ -106,8 +106,8 @@ github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9 github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4= github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.3 h1:xbrxd0U9XQW8qL1BAz2XrAjAF/P2vcqUTAues9c24B8= github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.3/go.mod h1:LWq2Sy8UoKKuK4lFuCNWSjJj57MhNNf2zzBWMtkAIX4= -github.com/hashicorp/go-sockaddr v1.0.5 h1:dvk7TIXCZpmfOlM+9mlcrWmWjw/wlKT+VDq2wMvfPJU= -github.com/hashicorp/go-sockaddr v1.0.5/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI= +github.com/hashicorp/go-sockaddr v1.0.6 h1:RSG8rKU28VTUTvEKghe5gIhIQpv8evvNpnDEyqO4u9I= +github.com/hashicorp/go-sockaddr v1.0.6/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= diff --git a/plugins/boundary/mains/minio/go.mod b/plugins/boundary/mains/minio/go.mod index 82d0fffdbe..a2cc1d0a2b 100644 --- a/plugins/boundary/mains/minio/go.mod +++ b/plugins/boundary/mains/minio/go.mod @@ -3,8 +3,8 @@ module github.com/hashicorp/boundary/plugins/boundary/mains/minio go 1.23.4 require ( - github.com/hashicorp/boundary-plugin-minio v0.1.6 - github.com/hashicorp/boundary/sdk v0.0.49 + github.com/hashicorp/boundary-plugin-minio v0.1.7 + github.com/hashicorp/boundary/sdk v0.0.51 ) require ( @@ -24,7 +24,10 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect + github.com/hashicorp/go-secure-stdlib/parseutil v0.2.0 // indirect github.com/hashicorp/go-secure-stdlib/pluginutil/v2 v2.0.6 // indirect + github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect + github.com/hashicorp/go-sockaddr v1.0.6 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/klauspost/compress v1.17.11 // indirect @@ -40,6 +43,7 @@ require ( github.com/oklog/run v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rs/xid v1.6.0 // indirect + github.com/ryanuber/go-glob v1.0.0 // indirect github.com/secure-io/sio-go v0.3.1 // indirect github.com/stretchr/testify v1.9.0 // indirect golang.org/x/crypto v0.32.0 // indirect diff --git a/plugins/boundary/mains/minio/go.sum b/plugins/boundary/mains/minio/go.sum index c59c7bd7d1..ca4596ccaf 100644 --- a/plugins/boundary/mains/minio/go.sum +++ b/plugins/boundary/mains/minio/go.sum @@ -58,12 +58,12 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaU github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/hashicorp/boundary-plugin-minio v0.1.6 h1:QHn6tWpVUAzYJmypAQ3WK88j5pR3IaYoswIZRrpTKQk= -github.com/hashicorp/boundary-plugin-minio v0.1.6/go.mod h1:viSVGHoMGbJpbcC5QkO777o6CB9FAOVu5cXngCBdC04= +github.com/hashicorp/boundary-plugin-minio v0.1.7 h1:s6VVeYor6jm6+RtEjAgRahrsi6HW5NMOoY9RhjVXBwo= +github.com/hashicorp/boundary-plugin-minio v0.1.7/go.mod h1:x7qnQE0bGwsRCiBXMMad1u+nhsLAa2Jpbpu9P3ysNQ0= github.com/hashicorp/boundary-plugin-minio/madmin v0.1.0 h1:VH/D4t0L3wmVPn7a1DDqF4nSOTGuWktXLnDny98y63Y= github.com/hashicorp/boundary-plugin-minio/madmin v0.1.0/go.mod h1:y0Q45edl67+Q8CVtnMpDeneusJv8ypMXWrKDyTA82qI= -github.com/hashicorp/boundary/sdk v0.0.49 h1:XOb6mSKyrU/wI20+5xTYBHQUP7eIeKcLxKSCpCs4yzM= -github.com/hashicorp/boundary/sdk v0.0.49/go.mod h1:IHP79to8aIi22FiY58pgBqJL96/U9D8ZAUhS2DdC+Us= +github.com/hashicorp/boundary/sdk v0.0.51 h1:a7XpHNTYaeBXRhJkc8MC0siPtfJELYH/ibjw/0UbJEg= +github.com/hashicorp/boundary/sdk v0.0.51/go.mod h1:gSrMTppD30IPVsUqs4SwQowu+OlR5/+58draey++SkQ= 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= @@ -73,8 +73,8 @@ github.com/hashicorp/eventlogger/filters/encrypt v0.1.8-0.20231025104552-802587e github.com/hashicorp/eventlogger/filters/encrypt v0.1.8-0.20231025104552-802587e608f0/go.mod h1:tMywUTIvdB/FXhwm6HMTt61C8/eODY6gitCHhXtyojg= github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-kms-wrapping/plugin/v2 v2.0.5 h1:jrnDfQm2hCQ0/hEselgqzV4fK16gpZoY0OWGZpVPNHM= -github.com/hashicorp/go-kms-wrapping/plugin/v2 v2.0.5/go.mod h1:psh1qKep5ukvuNobFY/hCybuudlkkACpmazOsCgX5Rg= +github.com/hashicorp/go-kms-wrapping/plugin/v2 v2.0.7 h1:gM4OwbF16Cmfxt2QMkoGMQbRTfYFZLvDMPgU3rM3KIo= +github.com/hashicorp/go-kms-wrapping/plugin/v2 v2.0.7/go.mod h1:7ZMHVluyqgHgEuTADeDzFNWoA9mnyPfdiK8Tk2Bct1c= github.com/hashicorp/go-kms-wrapping/v2 v2.0.16 h1:WZeXfD26QMWYC35at25KgE021SF9L3u9UMHK8fJAdV0= github.com/hashicorp/go-kms-wrapping/v2 v2.0.16/go.mod h1:ZiKZctjRTLEppuRwrttWkp71VYMbTTCkazK4xT7U/NQ= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= @@ -88,8 +88,8 @@ github.com/hashicorp/go-secure-stdlib/configutil/v2 v2.0.11 h1:uPW2Wn0YlmI9RGSkZ github.com/hashicorp/go-secure-stdlib/configutil/v2 v2.0.11/go.mod h1:uis9dCmOzXuOaRyXq+1Foh31kcvXKoWogjNnhfjHfW8= github.com/hashicorp/go-secure-stdlib/listenerutil v0.1.9 h1:0S0ctJ7Ra8O7ap+/3fZUnzJ3VzJyirWS/WnNCuOYtZY= github.com/hashicorp/go-secure-stdlib/listenerutil v0.1.9/go.mod h1:TNNdgtjLgVDbrgFcyCKrlAicIl3dZF94swJltyGUX2M= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 h1:iBt4Ew4XEGLfh6/bPk4rSYmuZJGizr6/x/AEizP0CQc= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8/go.mod h1:aiJI+PIApBRQG7FZTEBx5GiiX+HbOHilUdNxUZi4eV0= +github.com/hashicorp/go-secure-stdlib/parseutil v0.2.0 h1:U+kC2dOhMFQctRfhK0gRctKAPTloZdMU5ZJxaesJ/VM= +github.com/hashicorp/go-secure-stdlib/parseutil v0.2.0/go.mod h1:Ll013mhdmsVDuoIXVfBtvgGJsXDYkTw1kooNcoCXuE0= github.com/hashicorp/go-secure-stdlib/pluginutil/v2 v2.0.6 h1:ZYv2XA+tEfFXIToR2jmBgVqQU9gERt0APbWqmUoNGnY= github.com/hashicorp/go-secure-stdlib/pluginutil/v2 v2.0.6/go.mod h1:ggFN8dlaLWS2R1gymBbCrvXM/bkZP7hEAa4seqDwhyg= github.com/hashicorp/go-secure-stdlib/reloadutil v0.1.1 h1:SMGUnbpAcat8rIKHkBPjfv81yC46a8eCNZ2hsR2l1EI= @@ -99,8 +99,8 @@ github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9 github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4= github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.3 h1:xbrxd0U9XQW8qL1BAz2XrAjAF/P2vcqUTAues9c24B8= github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.3/go.mod h1:LWq2Sy8UoKKuK4lFuCNWSjJj57MhNNf2zzBWMtkAIX4= -github.com/hashicorp/go-sockaddr v1.0.5 h1:dvk7TIXCZpmfOlM+9mlcrWmWjw/wlKT+VDq2wMvfPJU= -github.com/hashicorp/go-sockaddr v1.0.5/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI= +github.com/hashicorp/go-sockaddr v1.0.6 h1:RSG8rKU28VTUTvEKghe5gIhIQpv8evvNpnDEyqO4u9I= +github.com/hashicorp/go-sockaddr v1.0.6/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= From 3a49c8c483d449f6d8aea3e7bd75d17114a7fe09 Mon Sep 17 00:00:00 2001 From: Johan Brandhorst-Satzkorn Date: Mon, 17 Mar 2025 09:45:22 -0700 Subject: [PATCH 40/70] Update golang.org deps and Go version (#5595) * Update golang.org deps and Go version * Upgrade golangci-lint * all: fix new vet warnings https://github.com/golang/go/issues/60529 introduced a new vet warning for when format strings are used without arguments, which is technically a bug since it shouldn't be using the functions taking format string arguments in those cases. --- .go-version | 2 +- Makefile | 2 +- api/go.mod | 6 ++--- api/go.sum | 16 ++++++------- go.mod | 14 +++++------ go.sum | 24 +++++++++---------- internal/auth/oidc/certificate.go | 2 +- .../daemon/cluster/handlers/worker_service.go | 7 +++--- internal/daemon/controller/handlers/errors.go | 5 +++- internal/db/schema/manager_example_test.go | 6 ++--- internal/plugin/loopback/storage.go | 2 +- plugins/boundary/mains/aws/go.mod | 8 +++---- plugins/boundary/mains/aws/go.sum | 16 ++++++------- plugins/boundary/mains/azure/go.mod | 10 ++++---- plugins/boundary/mains/azure/go.sum | 20 ++++++++-------- plugins/boundary/mains/gcp/go.mod | 10 ++++---- plugins/boundary/mains/gcp/go.sum | 20 ++++++++-------- plugins/boundary/mains/minio/go.mod | 8 +++---- plugins/boundary/mains/minio/go.sum | 16 ++++++------- plugins/kms/mains/alicloudkms/go.mod | 6 ++--- plugins/kms/mains/alicloudkms/go.sum | 12 +++++----- plugins/kms/mains/awskms/go.mod | 6 ++--- plugins/kms/mains/awskms/go.sum | 12 +++++----- plugins/kms/mains/azurekeyvault/go.mod | 8 +++---- plugins/kms/mains/azurekeyvault/go.sum | 16 ++++++------- plugins/kms/mains/gcpckms/go.mod | 10 ++++---- plugins/kms/mains/gcpckms/go.sum | 20 ++++++++-------- plugins/kms/mains/ocikms/go.mod | 6 ++--- plugins/kms/mains/ocikms/go.sum | 12 +++++----- plugins/kms/mains/transit/go.mod | 8 +++---- plugins/kms/mains/transit/go.sum | 16 ++++++------- sdk/go.mod | 8 +++---- sdk/go.sum | 16 ++++++------- 33 files changed, 176 insertions(+), 174 deletions(-) diff --git a/.go-version b/.go-version index ac1df3fce3..53cc1a6f92 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.23.3 +1.24.0 diff --git a/Makefile b/Makefile index 110e9ee284..cfb876d7f0 100644 --- a/Makefile +++ b/Makefile @@ -37,7 +37,7 @@ golangci-lint: if [ "$(GOLINT_INSTALLED)" = "" ]; then \ curl -sSfL \ - https://raw.githubusercontent.com/golangci/golangci-lint/9a8a056e9fe49c0e9ed2287aedce1022c79a115b/install.sh | sh -s -- -b $(GO_PATH)/bin v1.60.3; \ + https://raw.githubusercontent.com/golangci/golangci-lint/3f6f9043a8d0048ec075d2ace970b256cdf37a96/install.sh | sh -s -- -b $(GO_PATH)/bin v1.64.7; \ fi; .PHONY: cleangen diff --git a/api/go.mod b/api/go.mod index 1739e13e9e..8247bb0291 100644 --- a/api/go.mod +++ b/api/go.mod @@ -39,9 +39,9 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect - golang.org/x/crypto v0.32.0 // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/sys v0.29.0 // indirect + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect + golang.org/x/sys v0.31.0 // indirect google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/api/go.sum b/api/go.sum index 86ba6e910f..d4830330c5 100644 --- a/api/go.sum +++ b/api/go.sum @@ -141,8 +141,8 @@ go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= @@ -152,19 +152,19 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= 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= diff --git a/go.mod b/go.mod index 961585fac9..9ca694a773 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/hashicorp/boundary -go 1.23.3 +go 1.24.0 replace github.com/hashicorp/boundary/api => ./api @@ -85,13 +85,13 @@ require ( github.com/stretchr/testify v1.10.0 github.com/zalando/go-keyring v0.2.3 go.uber.org/atomic v1.11.0 - golang.org/x/crypto v0.32.0 + golang.org/x/crypto v0.36.0 golang.org/x/exp v0.0.0-20240205201215-2c58cdc269a3 - golang.org/x/net v0.34.0 - golang.org/x/sync v0.10.0 - golang.org/x/sys v0.29.0 - golang.org/x/term v0.28.0 - golang.org/x/text v0.21.0 + golang.org/x/net v0.37.0 + golang.org/x/sync v0.12.0 + golang.org/x/sys v0.31.0 + golang.org/x/term v0.30.0 + golang.org/x/text v0.23.0 golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d google.golang.org/genproto v0.0.0-20240205150955-31a09d347014 google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014 diff --git a/go.sum b/go.sum index d9cbcb0975..9c6e0f9141 100644 --- a/go.sum +++ b/go.sum @@ -547,8 +547,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240205201215-2c58cdc269a3 h1:/RIbNt/Zr7rVhIkQhooTxCxFcdWLGIKnZA4IXNFSrvo= golang.org/x/exp v0.0.0-20240205201215-2c58cdc269a3/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08= @@ -583,8 +583,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= 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.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= @@ -595,8 +595,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -625,8 +625,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -635,8 +635,8 @@ 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.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= -golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= +golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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= @@ -647,8 +647,8 @@ 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/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/internal/auth/oidc/certificate.go b/internal/auth/oidc/certificate.go index 73e4fb52b7..24c78e6403 100644 --- a/internal/auth/oidc/certificate.go +++ b/internal/auth/oidc/certificate.go @@ -59,7 +59,7 @@ func (c *Certificate) validate(ctx context.Context, caller errors.Op) error { } _, err := x509.ParseCertificate(block.Bytes) if err != nil { - return errors.New(ctx, errors.InvalidParameter, caller, fmt.Sprintf("failed to parse certificate: %s"+err.Error()), errors.WithWrap(err)) + return errors.New(ctx, errors.InvalidParameter, caller, fmt.Sprintf("failed to parse certificate: %s", err.Error()), errors.WithWrap(err)) } return nil } diff --git a/internal/daemon/cluster/handlers/worker_service.go b/internal/daemon/cluster/handlers/worker_service.go index fa6416222f..06ae475eb4 100644 --- a/internal/daemon/cluster/handlers/worker_service.go +++ b/internal/daemon/cluster/handlers/worker_service.go @@ -6,7 +6,6 @@ package handlers import ( "context" stderrors "errors" - "fmt" "sync" "sync/atomic" "time" @@ -678,7 +677,7 @@ func lookupSessionWorkerFilter(ctx context.Context, sessionInfo *session.Session } ok, err := eval.Evaluate(filterInput) if err != nil { - return status.Errorf(codes.Internal, fmt.Sprintf("Worker filter expression evaluation resulted in error: %s", err)) + return status.Errorf(codes.Internal, "Worker filter expression evaluation resulted in error: %s", err) } if !ok { return handlers.ApiErrorWithCodeAndMessage(codes.FailedPrecondition, "Worker filter expression precludes this worker from serving this session") @@ -727,7 +726,7 @@ func (ws *workerServiceServer) LookupSession(ctx context.Context, req *pbs.Looku creds, err := sessRepo.ListSessionCredentials(ctx, sessionInfo.ProjectId, sessionInfo.PublicId) if err != nil { return nil, status.Errorf(codes.Internal, - fmt.Sprintf("Error retrieving session credentials: %s", err)) + "Error retrieving session credentials: %s", err) } var workerCreds []*pbs.Credential for _, c := range creds { @@ -735,7 +734,7 @@ func (ws *workerServiceServer) LookupSession(ctx context.Context, req *pbs.Looku err = proto.Unmarshal(c, m) if err != nil { return nil, status.Errorf(codes.Internal, - fmt.Sprintf("Error unmarshaling credentials: %s", err)) + "Error unmarshaling credentials: %s", err) } workerCreds = append(workerCreds, m) } diff --git a/internal/daemon/controller/handlers/errors.go b/internal/daemon/controller/handlers/errors.go index ff47066f0a..e6e3d2dd51 100644 --- a/internal/daemon/controller/handlers/errors.go +++ b/internal/daemon/controller/handlers/errors.go @@ -77,11 +77,14 @@ func ApiErrorWithCode(c codes.Code) error { // ApiErrorWithCodeAndMessage returns an api error with the provided code and message. func ApiErrorWithCodeAndMessage(c codes.Code, msg string, args ...any) error { + if len(args) > 0 { + msg = fmt.Sprintf(msg, args...) + } return &ApiError{ Status: int32(runtime.HTTPStatusFromCode(c)), Inner: &pb.Error{ Kind: c.String(), - Message: fmt.Sprintf(msg, args...), + Message: msg, }, } } diff --git a/internal/db/schema/manager_example_test.go b/internal/db/schema/manager_example_test.go index a8d9ba2d8a..aae2889c13 100644 --- a/internal/db/schema/manager_example_test.go +++ b/internal/db/schema/manager_example_test.go @@ -26,7 +26,7 @@ func ExampleManager_hooks() { d, err := common.SqlOpen(dialect, u) if err != nil { - log.Fatalf(err.Error()) + log.Fatal(err.Error()) } editions := edition.Editions{ { @@ -146,7 +146,7 @@ func ExampleManager_hooks() { schema.WithEditions(editions), ) if err != nil { - log.Fatalf(err.Error()) + log.Fatal(err.Error()) } _, err = m.ApplyMigrations(ctx) checkErr, _ := err.(schema.MigrationCheckError) @@ -171,7 +171,7 @@ func ExampleManager_hooks() { logs, err := m.ApplyMigrations(ctx) if err != nil { - log.Fatalf(err.Error()) + log.Fatal(err.Error()) } for _, log := range logs { fmt.Printf("%s:%d:\n", log.Edition, log.Version) diff --git a/internal/plugin/loopback/storage.go b/internal/plugin/loopback/storage.go index 1edcdd437e..e588933759 100644 --- a/internal/plugin/loopback/storage.go +++ b/internal/plugin/loopback/storage.go @@ -177,7 +177,7 @@ func (l *LoopbackStorage) onCreateStorageBucket(ctx context.Context, req *plgpb. } for _, err := range l.errs { if err.match(req.GetBucket(), "", OnCreateStorageBucket) { - return nil, status.Errorf(err.ErrCode, err.ErrMsg) + return nil, status.Error(err.ErrCode, err.ErrMsg) } } secrets := &structpb.Struct{ diff --git a/plugins/boundary/mains/aws/go.mod b/plugins/boundary/mains/aws/go.mod index 8c0a8d6e47..c5133c5ac8 100644 --- a/plugins/boundary/mains/aws/go.mod +++ b/plugins/boundary/mains/aws/go.mod @@ -59,10 +59,10 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/stretchr/testify v1.10.0 // indirect - golang.org/x/crypto v0.32.0 // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect google.golang.org/grpc v1.68.0 // indirect diff --git a/plugins/boundary/mains/aws/go.sum b/plugins/boundary/mains/aws/go.sum index 71c3cbb7a4..5374a5eb14 100644 --- a/plugins/boundary/mains/aws/go.sum +++ b/plugins/boundary/mains/aws/go.sum @@ -167,10 +167,10 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -178,10 +178,10 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38 h1:2oV8dfuIkM1Ti7DwXc0BJfnwr9csz4TDXI9EmiI+Rbw= google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38/go.mod h1:vuAjtvlwkDKF6L1GQ0SokiRLCGFfeBUXWr/aFFkHACc= google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 h1:zciRKQ4kBpFgpfC5QQCVtnnNAcLIqweL7plyZRQHVpI= diff --git a/plugins/boundary/mains/azure/go.mod b/plugins/boundary/mains/azure/go.mod index 8d3452ed64..c052f01f37 100644 --- a/plugins/boundary/mains/azure/go.mod +++ b/plugins/boundary/mains/azure/go.mod @@ -50,12 +50,12 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/stretchr/testify v1.8.4 // indirect - golang.org/x/crypto v0.32.0 // indirect - golang.org/x/net v0.34.0 // indirect + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect golang.org/x/oauth2 v0.11.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/sync v0.10.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/sync v0.12.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect google.golang.org/grpc v1.59.0 // indirect diff --git a/plugins/boundary/mains/azure/go.sum b/plugins/boundary/mains/azure/go.sum index 07ccd1f246..74164adf52 100644 --- a/plugins/boundary/mains/azure/go.sum +++ b/plugins/boundary/mains/azure/go.sum @@ -302,8 +302,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= 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= @@ -366,8 +366,8 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= 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= @@ -385,8 +385,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -422,8 +422,8 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 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= @@ -431,8 +431,8 @@ 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.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= 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/plugins/boundary/mains/gcp/go.mod b/plugins/boundary/mains/gcp/go.mod index f62e2a4c08..a389e2c528 100644 --- a/plugins/boundary/mains/gcp/go.mod +++ b/plugins/boundary/mains/gcp/go.mod @@ -52,12 +52,12 @@ require ( go.opentelemetry.io/otel v1.29.0 // indirect go.opentelemetry.io/otel/metric v1.29.0 // indirect go.opentelemetry.io/otel/trace v1.29.0 // indirect - golang.org/x/crypto v0.32.0 // indirect - golang.org/x/net v0.34.0 // indirect + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect golang.org/x/oauth2 v0.22.0 // indirect - golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/sync v0.12.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect golang.org/x/time v0.6.0 // indirect google.golang.org/api v0.196.0 // indirect google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect diff --git a/plugins/boundary/mains/gcp/go.sum b/plugins/boundary/mains/gcp/go.sum index 3346a5ce88..94edc2a15f 100644 --- a/plugins/boundary/mains/gcp/go.sum +++ b/plugins/boundary/mains/gcp/go.sum @@ -218,8 +218,8 @@ go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -237,8 +237,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -246,8 +246,8 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -259,12 +259,12 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/plugins/boundary/mains/minio/go.mod b/plugins/boundary/mains/minio/go.mod index a2cc1d0a2b..861faf423c 100644 --- a/plugins/boundary/mains/minio/go.mod +++ b/plugins/boundary/mains/minio/go.mod @@ -46,10 +46,10 @@ require ( github.com/ryanuber/go-glob v1.0.0 // indirect github.com/secure-io/sio-go v0.3.1 // indirect github.com/stretchr/testify v1.9.0 // indirect - golang.org/x/crypto v0.32.0 // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect diff --git a/plugins/boundary/mains/minio/go.sum b/plugins/boundary/mains/minio/go.sum index ca4596ccaf..55e2198527 100644 --- a/plugins/boundary/mains/minio/go.sum +++ b/plugins/boundary/mains/minio/go.sum @@ -209,8 +209,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= @@ -220,8 +220,8 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -235,12 +235,12 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= diff --git a/plugins/kms/mains/alicloudkms/go.mod b/plugins/kms/mains/alicloudkms/go.mod index 866125a5c1..155adb85c1 100644 --- a/plugins/kms/mains/alicloudkms/go.mod +++ b/plugins/kms/mains/alicloudkms/go.mod @@ -29,9 +29,9 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/stretchr/testify v1.8.4 // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/net v0.37.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.36.1 // indirect diff --git a/plugins/kms/mains/alicloudkms/go.sum b/plugins/kms/mains/alicloudkms/go.sum index 5aa8be765b..1869a221b0 100644 --- a/plugins/kms/mains/alicloudkms/go.sum +++ b/plugins/kms/mains/alicloudkms/go.sum @@ -88,18 +88,18 @@ github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVK github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 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= diff --git a/plugins/kms/mains/awskms/go.mod b/plugins/kms/mains/awskms/go.mod index 027b8c6fe6..0dab2922cf 100644 --- a/plugins/kms/mains/awskms/go.mod +++ b/plugins/kms/mains/awskms/go.mod @@ -30,9 +30,9 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/stretchr/testify v1.8.4 // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/net v0.37.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.36.1 // indirect diff --git a/plugins/kms/mains/awskms/go.sum b/plugins/kms/mains/awskms/go.sum index 92abe7a60b..e92715a52b 100644 --- a/plugins/kms/mains/awskms/go.sum +++ b/plugins/kms/mains/awskms/go.sum @@ -90,8 +90,8 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -102,11 +102,11 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/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-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 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= diff --git a/plugins/kms/mains/azurekeyvault/go.mod b/plugins/kms/mains/azurekeyvault/go.mod index b78072b2fa..1860b91322 100644 --- a/plugins/kms/mains/azurekeyvault/go.mod +++ b/plugins/kms/mains/azurekeyvault/go.mod @@ -40,10 +40,10 @@ require ( github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/stretchr/testify v1.9.0 // indirect - golang.org/x/crypto v0.32.0 // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.36.1 // indirect diff --git a/plugins/kms/mains/azurekeyvault/go.sum b/plugins/kms/mains/azurekeyvault/go.sum index 40e6a45de2..7f89ad0703 100644 --- a/plugins/kms/mains/azurekeyvault/go.sum +++ b/plugins/kms/mains/azurekeyvault/go.sum @@ -118,16 +118,16 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk 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.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 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.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -145,8 +145,8 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= 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= @@ -155,8 +155,8 @@ golang.org/x/text v0.3.3/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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= diff --git a/plugins/kms/mains/gcpckms/go.mod b/plugins/kms/mains/gcpckms/go.mod index 02e312d60b..3a50f9097d 100644 --- a/plugins/kms/mains/gcpckms/go.mod +++ b/plugins/kms/mains/gcpckms/go.mod @@ -32,12 +32,12 @@ require ( github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/stretchr/testify v1.8.4 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.32.0 // indirect - golang.org/x/net v0.34.0 // indirect + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect golang.org/x/oauth2 v0.13.0 // indirect - golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/sync v0.12.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/api v0.149.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect diff --git a/plugins/kms/mains/gcpckms/go.sum b/plugins/kms/mains/gcpckms/go.sum index df19507be5..e0df4eb13e 100644 --- a/plugins/kms/mains/gcpckms/go.sum +++ b/plugins/kms/mains/gcpckms/go.sum @@ -115,8 +115,8 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -128,16 +128,16 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= 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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -148,13 +148,13 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/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-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= diff --git a/plugins/kms/mains/ocikms/go.mod b/plugins/kms/mains/ocikms/go.mod index 3bdec952a1..feda4aee19 100644 --- a/plugins/kms/mains/ocikms/go.mod +++ b/plugins/kms/mains/ocikms/go.mod @@ -25,9 +25,9 @@ require ( github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/sony/gobreaker v0.5.0 // indirect github.com/stretchr/testify v1.8.4 // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/net v0.37.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.36.1 // indirect diff --git a/plugins/kms/mains/ocikms/go.sum b/plugins/kms/mains/ocikms/go.sum index 640f949c91..b866362246 100644 --- a/plugins/kms/mains/ocikms/go.sum +++ b/plugins/kms/mains/ocikms/go.sum @@ -67,18 +67,18 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 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= diff --git a/plugins/kms/mains/transit/go.mod b/plugins/kms/mains/transit/go.mod index 1ef9dd5446..5cb3763e8e 100644 --- a/plugins/kms/mains/transit/go.mod +++ b/plugins/kms/mains/transit/go.mod @@ -37,10 +37,10 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/stretchr/testify v1.8.4 // indirect - golang.org/x/crypto v0.32.0 // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect golang.org/x/time v0.3.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/grpc v1.59.0 // indirect diff --git a/plugins/kms/mains/transit/go.sum b/plugins/kms/mains/transit/go.sum index 61357cc058..26fdd7ff9b 100644 --- a/plugins/kms/mains/transit/go.sum +++ b/plugins/kms/mains/transit/go.sum @@ -105,8 +105,8 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= 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/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -114,8 +114,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v 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.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -135,8 +135,8 @@ 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.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= 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= @@ -148,8 +148,8 @@ 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.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= 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= diff --git a/sdk/go.mod b/sdk/go.mod index a09d4217ae..4c0c1ab7ce 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -59,10 +59,10 @@ require ( github.com/shopspring/decimal v1.3.1 // indirect github.com/spf13/cast v1.5.0 // indirect go.uber.org/goleak v1.1.12 // indirect - golang.org/x/crypto v0.32.0 // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/sdk/go.sum b/sdk/go.sum index a03b3f4df5..675896bb64 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -167,8 +167,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= @@ -184,8 +184,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -207,8 +207,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -216,8 +216,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= From 7460a77c08296167060bb693f0a179aedbc94640 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 10:15:25 -0700 Subject: [PATCH 41/70] chore(deps): bump github.com/go-jose/go-jose/v3 from 3.0.3 to 3.0.4 (#5604) Bumps [github.com/go-jose/go-jose/v3](https://github.com/go-jose/go-jose) from 3.0.3 to 3.0.4. - [Release notes](https://github.com/go-jose/go-jose/releases) - [Changelog](https://github.com/go-jose/go-jose/blob/main/CHANGELOG.md) - [Commits](https://github.com/go-jose/go-jose/compare/v3.0.3...v3.0.4) --- updated-dependencies: - dependency-name: github.com/go-jose/go-jose/v3 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 9ca694a773..5a5db8adb2 100644 --- a/go.mod +++ b/go.mod @@ -139,7 +139,7 @@ require ( github.com/felixge/httpsnoop v1.0.4 // indirect github.com/glebarez/go-sqlite v1.22.0 // indirect github.com/go-asn1-ber/asn1-ber v1.5.5 // indirect - github.com/go-jose/go-jose/v3 v3.0.3 // indirect + github.com/go-jose/go-jose/v3 v3.0.4 // indirect github.com/go-ldap/ldap/v3 v3.4.6 // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect diff --git a/go.sum b/go.sum index 9c6e0f9141..eef7dfb144 100644 --- a/go.sum +++ b/go.sum @@ -124,8 +124,8 @@ github.com/glebarez/sqlite v1.10.0 h1:u4gt8y7OND/cCei/NMHmfbLxF6xP2wgKcT/BJf2pYk github.com/glebarez/sqlite v1.10.0/go.mod h1:IJ+lfSOmiekhQsFTJRx/lHtGYmCdtAiTaf5wI9u5uHA= github.com/go-asn1-ber/asn1-ber v1.5.5 h1:MNHlNMBDgEKD4TcKr36vQN68BA00aDfjIt3/bD50WnA= github.com/go-asn1-ber/asn1-ber v1.5.5/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= -github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k= -github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= +github.com/go-jose/go-jose/v3 v3.0.4 h1:Wp5HA7bLQcKnf6YYao/4kpRpVMp/yf6+pJKV8WFSaNY= +github.com/go-jose/go-jose/v3 v3.0.4/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-ldap/ldap/v3 v3.4.6 h1:ert95MdbiG7aWo/oPYp9btL3KJlMPKnP58r09rI8T+A= github.com/go-ldap/ldap/v3 v3.4.6/go.mod h1:IGMQANNtxpsOzj7uUAMjpGBaOVTC4DYyIy8VsTdxmtc= From 6d8615045e457aeebda9923bea4dbc6d85c2d607 Mon Sep 17 00:00:00 2001 From: Ryan Derr <54389874+RyanDerr@users.noreply.github.com> Date: Mon, 17 Mar 2025 13:25:55 -0500 Subject: [PATCH 42/70] Lowercase GH Handle When Defining User Label For GCP (#5605) --- enos/modules/gcp_target/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/enos/modules/gcp_target/main.tf b/enos/modules/gcp_target/main.tf index 828a29dfb4..31be276f25 100644 --- a/enos/modules/gcp_target/main.tf +++ b/enos/modules/gcp_target/main.tf @@ -125,7 +125,7 @@ resource "google_compute_instance" "boundary_target" { "project" : "enos", "project_name" : "qti-enos-boundary", "environment" : var.environment, - "enos_user" : replace(var.enos_user, "/[\\W]+/", ""), + "enos_user" : replace(lower(var.enos_user), "/[\\W]+/", ""), "filter_label_1" : random_id.filter_label1.hex "filter_label_2" : random_id.filter_label2.hex }) From 6c0b3a8a1c5c4e455006ea712f4eb868929c67fa Mon Sep 17 00:00:00 2001 From: Ryan Derr <54389874+RyanDerr@users.noreply.github.com> Date: Mon, 17 Mar 2025 14:04:40 -0500 Subject: [PATCH 43/70] Controller Liveliness Query Split (#5602) * Initial Update Controller Call And Sample Test * Update Controller Start Logic To Upsert * Chore Make Gen * Lowercase User For GCP Instance Label * Resolve Comments --- internal/daemon/controller/tickers.go | 23 ++- internal/server/repository_controller.go | 37 +++++ internal/server/repository_controller_test.go | 144 ++++++++++++++++++ 3 files changed, 202 insertions(+), 2 deletions(-) diff --git a/internal/daemon/controller/tickers.go b/internal/daemon/controller/tickers.go index d1ac967840..31f2a0b608 100644 --- a/internal/daemon/controller/tickers.go +++ b/internal/daemon/controller/tickers.go @@ -36,7 +36,7 @@ func (c *Controller) startStatusTicking(cancelCtx context.Context) { return case <-timer.C: - if err := c.upsertController(cancelCtx); err != nil { + if err := c.updateController(cancelCtx); err != nil { event.WriteError(cancelCtx, op, err, event.WithInfoMsg("error fetching repository for status update")) } timer.Reset(statusInterval) @@ -52,10 +52,29 @@ func (c *Controller) upsertController(ctx context.Context) error { } repo, err := c.ServersRepoFn() if err != nil { - return errors.Wrap(ctx, err, op, errors.WithMsg("error fetching repository for status update")) + return errors.Wrap(ctx, err, op, errors.WithMsg("error fetching repository for status upsert")) } _, err = repo.UpsertController(ctx, controller) + if err != nil { + return errors.Wrap(ctx, err, op, errors.WithMsg("error performing status upsert")) + } + + return nil +} + +func (c *Controller) updateController(ctx context.Context) error { + const op = "controller.(Controller).updateController" + controller := &store.Controller{ + PrivateId: c.conf.RawConfig.Controller.Name, + Address: c.conf.RawConfig.Controller.PublicClusterAddr, + } + repo, err := c.ServersRepoFn() + if err != nil { + return errors.Wrap(ctx, err, op, errors.WithMsg("error fetching repository for status update")) + } + + _, err = repo.UpdateController(ctx, controller) if err != nil { return errors.Wrap(ctx, err, op, errors.WithMsg("error performing status update")) } diff --git a/internal/server/repository_controller.go b/internal/server/repository_controller.go index 4ecc229894..bac1063c79 100644 --- a/internal/server/repository_controller.go +++ b/internal/server/repository_controller.go @@ -77,3 +77,40 @@ func (r *Repository) UpsertController(ctx context.Context, controller *store.Con return int(rowsUpdated), nil } + +func (r *Repository) UpdateController(ctx context.Context, controller *store.Controller) (int, error) { + const op = "server.(Repository).UpdateController" + + if controller == nil { + return db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "controller is nil") + } + if controller.PrivateId == "" { + return db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "controller private_id is empty") + } + if controller.Address == "" { + return db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "controller address is empty") + } + + var rowsUpdated int + _, err := r.writer.DoTx( + ctx, + db.StdRetryCnt, + db.ExpBackoff{}, + func(reader db.Reader, w db.Writer) error { + var err error + rowsUpdated, err = w.Update(ctx, controller, []string{"description", "address"}, nil, db.WithWhere("private_id = ?", controller.PrivateId)) + if err != nil { + return errors.Wrap(ctx, err, op+":Update") + } + if rowsUpdated > 1 { + return errors.New(ctx, errors.MultipleRecords, op, "more than 1 resource would have been updated") + } + return nil + }, + ) + if err != nil { + return db.NoRowsAffected, err + } + + return rowsUpdated, nil +} diff --git a/internal/server/repository_controller_test.go b/internal/server/repository_controller_test.go index 140dac7913..337dc9cc7a 100644 --- a/internal/server/repository_controller_test.go +++ b/internal/server/repository_controller_test.go @@ -100,3 +100,147 @@ func TestRepository_UpsertController(t *testing.T) { }) } } + +func TestRepository_UpdateController(t *testing.T) { + ctx := context.Background() + conn, _ := db.TestSetup(t, "postgres") + rw := db.New(conn) + wrapper := db.TestWrapper(t) + testKms := kms.TestKms(t, conn, wrapper) + testRepo, err := NewRepository(ctx, rw, rw, testKms) + require.NoError(t, err) + + iamRepo := iam.TestRepo(t, conn, wrapper) + iam.TestScopes(t, iamRepo) + + tests := []struct { + name string + originalController *store.Controller + updatedController *store.Controller + wantCount int + wantErr bool + }{ + { + name: "nil-controller", + wantErr: true, + }, + { + name: "empty-id", + updatedController: &store.Controller{ + PrivateId: "", + Address: "127.0.0.1", + }, + wantErr: true, + }, + { + name: "empty-address", + updatedController: &store.Controller{ + PrivateId: "test-controller", + Address: "", + }, + wantErr: true, + }, + { + name: "controller-not-found", + updatedController: &store.Controller{ + PrivateId: "test-new-ipv4-controller", + Address: "127.0.0.1", + Description: "new ipv4 description", + }, + wantErr: true, + }, + { + name: "valid-ipv4-controller", + originalController: &store.Controller{ + PrivateId: "ipv4-controller", + Address: "127.0.0.1", + Description: "ipv4 description", + }, + updatedController: &store.Controller{ + PrivateId: "ipv4-controller", + Address: "127.0.0.2", + Description: "new ipv4 description", + }, + wantCount: 1, + }, + { + name: "valid-ipv6-controller", + originalController: &store.Controller{ + PrivateId: "test-ipv6-controller", + Address: "[2001:4860:4860:0:0:0:0:8888]", + Description: "ipv6 description", + }, + updatedController: &store.Controller{ + PrivateId: "test-ipv6-controller", + Address: "[2001:4860:4860:0:0:0:0:9999]", + Description: "new ipv6 description", + }, + wantCount: 1, + }, + { + name: "valid-abbreviated-ipv6-controller", + originalController: &store.Controller{ + PrivateId: "test-abbreviated-ipv6-controller", + Address: "[2001:4860:4860::8888]", + Description: "abbreviated ipv6 description", + }, + updatedController: &store.Controller{ + PrivateId: "test-abbreviated-ipv6-controller", + Address: "[2001:4860:4860::9999]", + Description: "new abbreviated ipv6 description", + }, + wantCount: 1, + }, + { + name: "valid-controller-short-name", + originalController: &store.Controller{ + PrivateId: "test", + Address: "127.0.0.1", + Description: "short name description", + }, + updatedController: &store.Controller{ + PrivateId: "test", + Address: "127.0.0.2", + Description: "new short name description", + }, + wantCount: 1, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + + var originalControllerEntry, updatedControllerEntry *store.Controller + // Insert the original controller attributes if they exist + if tt.originalController != nil { + _, err := testRepo.UpsertController(ctx, tt.originalController) + require.NoError(err) + + // Retrieve the original controller in the database + controllerList, err := testRepo.ListControllers(ctx, []Option{}...) + require.NoError(err) + originalControllerEntry = controllerList[len(controllerList)-1] + } + + // Update the controller with the updated attributes + got, err := testRepo.UpdateController(ctx, tt.updatedController) + if tt.wantErr { + require.Error(err) + assert.Equal(0, got) + return + } + require.NoError(err) + assert.Equal(tt.wantCount, got) + + // Retrieve the updated controller in the database and assert updated successfully + controllerList, err := testRepo.ListControllers(ctx, []Option{}...) + require.NoError(err) + updatedControllerEntry = controllerList[len(controllerList)-1] + + assert.Equal(tt.updatedController.PrivateId, updatedControllerEntry.PrivateId) + assert.Equal(tt.updatedController.Address, updatedControllerEntry.Address) + assert.Equal(tt.updatedController.Description, updatedControllerEntry.Description) + assert.True(updatedControllerEntry.UpdateTime.AsTime().After(originalControllerEntry.UpdateTime.AsTime())) + }) + } +} From f43f6e278822b5e72546046e8a73a38cb4cfcf42 Mon Sep 17 00:00:00 2001 From: vanphan24 <89482663+vanphan24@users.noreply.github.com> Date: Tue, 18 Mar 2025 07:46:12 -0700 Subject: [PATCH 44/70] Update what-is-boundary.mdx (#5607) added s"ession recording lifecycle management to the feature table" --- website/content/docs/overview/what-is-boundary.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/overview/what-is-boundary.mdx b/website/content/docs/overview/what-is-boundary.mdx index d415850f11..945f9f7dea 100644 --- a/website/content/docs/overview/what-is-boundary.mdx +++ b/website/content/docs/overview/what-is-boundary.mdx @@ -71,7 +71,7 @@ Regardless of which server edition of Boundary you use, all editions require the | Disaster recovery | | ✓ | ✓ | | | Push button deployment | | ✓ | ✓ | | | Session recording | | | ✓ | ✓ | - +| Session recording lifecycle management | | | ✓ | ✓ | ## Get started Refer to the [Boundary tutorials](/boundary/tutorials) to learn how to set up, configure, and administer Boundary. From 4cc5c072146510c6dc66a0d7bcc54ce419e62612 Mon Sep 17 00:00:00 2001 From: Ryan Derr <54389874+RyanDerr@users.noreply.github.com> Date: Tue, 18 Mar 2025 12:30:38 -0500 Subject: [PATCH 45/70] Migrate Controller Repo Usage From Store To Server (#5609) * Create Server Domain Package For Controller * Resolve Comments --- .../handlers/worker_service_status_test.go | 37 +---- .../cluster/handlers/worker_service_test.go | 11 +- internal/daemon/controller/tickers.go | 23 ++- internal/scheduler/job/testing.go | 9 +- internal/scheduler/testing.go | 9 +- internal/server/controller.go | 29 ++++ internal/server/repository_controller.go | 11 +- internal/server/repository_controller_test.go | 157 ++++++------------ internal/session/service_statistics_test.go | 13 +- .../service_worker_status_report_test.go | 7 +- 10 files changed, 119 insertions(+), 187 deletions(-) create mode 100644 internal/server/controller.go diff --git a/internal/daemon/cluster/handlers/worker_service_status_test.go b/internal/daemon/cluster/handlers/worker_service_status_test.go index aea455ed1f..3dd4f6a987 100644 --- a/internal/daemon/cluster/handlers/worker_service_status_test.go +++ b/internal/daemon/cluster/handlers/worker_service_status_test.go @@ -22,7 +22,6 @@ import ( "github.com/hashicorp/boundary/internal/iam" "github.com/hashicorp/boundary/internal/kms" "github.com/hashicorp/boundary/internal/server" - "github.com/hashicorp/boundary/internal/server/store" "github.com/hashicorp/boundary/internal/session" "github.com/hashicorp/boundary/internal/target" "github.com/hashicorp/boundary/internal/target/tcp" @@ -49,10 +48,8 @@ func TestStatus(t *testing.T) { serverRepo, err := server.NewRepository(ctx, rw, rw, kms) require.NoError(t, err) - c := &store.Controller{ - PrivateId: "test_controller1", - Address: "127.0.0.1", - } + + c := server.NewController("test_controller1", server.WithAddress("127.0.0.1")) _, err = serverRepo.UpsertController(ctx, c) require.NoError(t, err) @@ -483,10 +480,7 @@ func TestStatusSessionClosed(t *testing.T) { serverRepo, err := server.NewRepository(ctx, rw, rw, kms) require.NoError(t, err) - c := &store.Controller{ - PrivateId: "test_controller1", - Address: "127.0.0.1", - } + c := server.NewController("test_controller1", server.WithAddress("127.0.0.1")) _, err = serverRepo.UpsertController(ctx, c) require.NoError(t, err) @@ -676,10 +670,7 @@ func TestStatusDeadConnection(t *testing.T) { serverRepo, err := server.NewRepository(ctx, rw, rw, kms) require.NoError(t, err) - c := &store.Controller{ - PrivateId: "test_controller1", - Address: "127.0.0.1", - } + c := server.NewController("test_controller1", server.WithAddress("127.0.0.1")) _, err = serverRepo.UpsertController(ctx, c) require.NoError(t, err) @@ -831,10 +822,7 @@ func TestStatusWorkerWithKeyId(t *testing.T) { serverRepo, err := server.NewRepository(ctx, rw, rw, kms) require.NoError(t, err) - c := &store.Controller{ - PrivateId: "test_controller1", - Address: "127.0.0.1", - } + c := server.NewController("test_controller1", server.WithAddress("127.0.0.1")) _, err = serverRepo.UpsertController(ctx, c) require.NoError(t, err) @@ -1034,10 +1022,7 @@ func TestStatusAuthorizedWorkers(t *testing.T) { serverRepo, err := server.NewRepository(ctx, rw, rw, kmsCache) require.NoError(t, err) - c := &store.Controller{ - PrivateId: "test_controller1", - Address: "127.0.0.1", - } + c := server.NewController("test_controller1", server.WithAddress("127.0.0.1")) _, err = serverRepo.UpsertController(ctx, c) require.NoError(t, err) @@ -1240,10 +1225,7 @@ func TestWorkerOperationalStatus(t *testing.T) { serverRepo, err := server.NewRepository(ctx, rw, rw, kms) require.NoError(t, err) - c := &store.Controller{ - PrivateId: "test_controller1", - Address: "127.0.0.1", - } + c := server.NewController("test_controller1", server.WithAddress("127.0.0.1")) _, err = serverRepo.UpsertController(ctx, c) require.NoError(t, err) @@ -1357,10 +1339,7 @@ func TestWorkerLocalStorageStateStatus(t *testing.T) { serverRepo, err := server.NewRepository(ctx, rw, rw, kms) require.NoError(t, err) - c := &store.Controller{ - PrivateId: "test_controller1", - Address: "127.0.0.1", - } + c := server.NewController("test_controller1", server.WithAddress("127.0.0.1")) _, err = serverRepo.UpsertController(ctx, c) require.NoError(t, err) diff --git a/internal/daemon/cluster/handlers/worker_service_test.go b/internal/daemon/cluster/handlers/worker_service_test.go index 46f222d9f7..6ded20acbc 100644 --- a/internal/daemon/cluster/handlers/worker_service_test.go +++ b/internal/daemon/cluster/handlers/worker_service_test.go @@ -24,7 +24,6 @@ import ( "github.com/hashicorp/boundary/internal/iam" "github.com/hashicorp/boundary/internal/kms" "github.com/hashicorp/boundary/internal/server" - "github.com/hashicorp/boundary/internal/server/store" "github.com/hashicorp/boundary/internal/session" "github.com/hashicorp/boundary/internal/target" "github.com/hashicorp/boundary/internal/target/tcp" @@ -1015,10 +1014,7 @@ func TestSessionInfo(t *testing.T) { serverRepo, err := server.NewRepository(ctx, rw, rw, testKms) require.NoError(err) - c := &store.Controller{ - PrivateId: "test_controller1", - Address: "127.0.0.1", - } + c := server.NewController("test_controller1", server.WithAddress("127.0.0.1")) _, err = serverRepo.UpsertController(ctx, c) require.NoError(err) @@ -1158,10 +1154,7 @@ func TestRoutingInfo(t *testing.T) { _ = server.TestPkiWorker(t, conn, wrapper, server.WithTestPkiWorkerAuthorizedKeyId(&w2KeyId)) w3 := server.TestKmsWorker(t, conn, wrapper, server.WithName("testworker3")) - c := &store.Controller{ - PrivateId: "test_controller1", - Address: "1.2.3.4", - } + c := server.NewController("test_controller1", server.WithAddress("1.2.3.4")) _, err = serverRepo.UpsertController(ctx, c) require.NoError(t, err) diff --git a/internal/daemon/controller/tickers.go b/internal/daemon/controller/tickers.go index 31f2a0b608..e5d6b06c5f 100644 --- a/internal/daemon/controller/tickers.go +++ b/internal/daemon/controller/tickers.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/boundary/internal/daemon/cluster" "github.com/hashicorp/boundary/internal/errors" "github.com/hashicorp/boundary/internal/event" - "github.com/hashicorp/boundary/internal/server/store" + "github.com/hashicorp/boundary/internal/server" ) // In the future we could make this configurable @@ -46,10 +46,15 @@ func (c *Controller) startStatusTicking(cancelCtx context.Context) { func (c *Controller) upsertController(ctx context.Context) error { const op = "controller.(Controller).upsertController" - controller := &store.Controller{ - PrivateId: c.conf.RawConfig.Controller.Name, - Address: c.conf.RawConfig.Controller.PublicClusterAddr, + var opts []server.Option + if c.conf.RawConfig.Controller.Description != "" { + opts = append(opts, server.WithDescription(c.conf.RawConfig.Controller.Description)) } + if c.conf.RawConfig.Controller.PublicClusterAddr != "" { + opts = append(opts, server.WithAddress(c.conf.RawConfig.Controller.PublicClusterAddr)) + } + + controller := server.NewController(c.conf.RawConfig.Controller.Name, opts...) repo, err := c.ServersRepoFn() if err != nil { return errors.Wrap(ctx, err, op, errors.WithMsg("error fetching repository for status upsert")) @@ -65,10 +70,14 @@ func (c *Controller) upsertController(ctx context.Context) error { func (c *Controller) updateController(ctx context.Context) error { const op = "controller.(Controller).updateController" - controller := &store.Controller{ - PrivateId: c.conf.RawConfig.Controller.Name, - Address: c.conf.RawConfig.Controller.PublicClusterAddr, + var opts []server.Option + if c.conf.RawConfig.Controller.Description != "" { + opts = append(opts, server.WithDescription(c.conf.RawConfig.Controller.Description)) + } + if c.conf.RawConfig.Controller.PublicClusterAddr != "" { + opts = append(opts, server.WithAddress(c.conf.RawConfig.Controller.PublicClusterAddr)) } + controller := server.NewController(c.conf.RawConfig.Controller.Name, opts...) repo, err := c.ServersRepoFn() if err != nil { return errors.Wrap(ctx, err, op, errors.WithMsg("error fetching repository for status update")) diff --git a/internal/scheduler/job/testing.go b/internal/scheduler/job/testing.go index 726518860f..4b6588d302 100644 --- a/internal/scheduler/job/testing.go +++ b/internal/scheduler/job/testing.go @@ -9,8 +9,6 @@ import ( "testing" "time" - "github.com/hashicorp/boundary/internal/server/store" - "github.com/hashicorp/boundary/internal/db" "github.com/hashicorp/boundary/internal/kms" "github.com/hashicorp/boundary/internal/server" @@ -100,7 +98,7 @@ func testRunWithUpdateTime(conn *db.DB, pluginId, name, cId string, updateTime t return run, nil } -func testController(t *testing.T, conn *db.DB, wrapper wrapping.Wrapper, opt ...testOption) *store.Controller { +func testController(t *testing.T, conn *db.DB, wrapper wrapping.Wrapper, opt ...testOption) *server.Controller { t.Helper() ctx := context.Background() rw := db.New(conn) @@ -117,10 +115,7 @@ func testController(t *testing.T, conn *db.DB, wrapper wrapping.Wrapper, opt ... require.NoError(t, err) privateId = "test-job-server-" + id } - controller := &store.Controller{ - PrivateId: privateId, - Address: "127.0.0.1", - } + controller := server.NewController(privateId, server.WithAddress("127.0.0.1")) _, err = serversRepo.UpsertController(ctx, controller) require.NoError(t, err) return controller diff --git a/internal/scheduler/testing.go b/internal/scheduler/testing.go index e15d5f1066..f70d11567a 100644 --- a/internal/scheduler/testing.go +++ b/internal/scheduler/testing.go @@ -5,12 +5,11 @@ package scheduler import ( "context" + "fmt" "sync" "testing" "time" - "github.com/hashicorp/boundary/internal/server/store" - "github.com/hashicorp/boundary/internal/db" "github.com/hashicorp/boundary/internal/iam" "github.com/hashicorp/boundary/internal/kms" @@ -38,10 +37,8 @@ func TestScheduler(t testing.TB, conn *db.DB, wrapper wrapping.Wrapper, opt ...O id, err := uuid.GenerateUUID() require.NoError(t, err) - controller := &store.Controller{ - PrivateId: "test-job-server-" + id, - Address: "127.0.0.1", - } + + controller := server.NewController(fmt.Sprintf("test-server-job%s", id), server.WithAddress("127.0.0.1")) _, err = serversRepo.UpsertController(ctx, controller) require.NoError(t, err) diff --git a/internal/server/controller.go b/internal/server/controller.go new file mode 100644 index 0000000000..78a5b30c63 --- /dev/null +++ b/internal/server/controller.go @@ -0,0 +1,29 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: BUSL-1.1 + +package server + +import "github.com/hashicorp/boundary/internal/server/store" + +// Controller is a server that is responsible for understanding configuration, +// authenticating and authorizing users, and serving user API requests (e.g. to +// initiate a session). They also assign tasks to workers (session handling, +// session recording parsing, etc.). +type Controller struct { + *store.Controller +} + +// NewController returns a new controller. Valid options are WithAddress and WithDescription. +// All other options are ignored. +func NewController(privateId string, opt ...Option) *Controller { + opts := GetOpts(opt...) + controller := &Controller{ + Controller: &store.Controller{ + PrivateId: privateId, + Address: opts.withAddress, + Description: opts.withDescription, + }, + } + + return controller +} diff --git a/internal/server/repository_controller.go b/internal/server/repository_controller.go index bac1063c79..bdf4cb26ce 100644 --- a/internal/server/repository_controller.go +++ b/internal/server/repository_controller.go @@ -9,17 +9,16 @@ import ( "github.com/hashicorp/boundary/internal/db" "github.com/hashicorp/boundary/internal/errors" - "github.com/hashicorp/boundary/internal/server/store" ) -func (r *Repository) ListControllers(ctx context.Context, opt ...Option) ([]*store.Controller, error) { +func (r *Repository) ListControllers(ctx context.Context, opt ...Option) ([]*Controller, error) { return r.listControllersWithReader(ctx, r.reader, opt...) } // listControllersWithReader will return a listing of resources and honor the // WithLimit option or the repo defaultLimit. It accepts a reader, allowing it // to be used within a transaction or without. -func (r *Repository) listControllersWithReader(ctx context.Context, reader db.Reader, opt ...Option) ([]*store.Controller, error) { +func (r *Repository) listControllersWithReader(ctx context.Context, reader db.Reader, opt ...Option) ([]*Controller, error) { opts := GetOpts(opt...) liveness := opts.withLiveness if liveness == 0 { @@ -31,7 +30,7 @@ func (r *Repository) listControllersWithReader(ctx context.Context, reader db.Re where = fmt.Sprintf("update_time > now() - interval '%d seconds'", uint32(liveness.Seconds())) } - var controllers []*store.Controller + var controllers []*Controller if err := reader.SearchWhere( ctx, &controllers, @@ -45,7 +44,7 @@ func (r *Repository) listControllersWithReader(ctx context.Context, reader db.Re return controllers, nil } -func (r *Repository) UpsertController(ctx context.Context, controller *store.Controller) (int, error) { +func (r *Repository) UpsertController(ctx context.Context, controller *Controller) (int, error) { const op = "server.(Repository).UpsertController" if controller == nil { @@ -78,7 +77,7 @@ func (r *Repository) UpsertController(ctx context.Context, controller *store.Con return int(rowsUpdated), nil } -func (r *Repository) UpdateController(ctx context.Context, controller *store.Controller) (int, error) { +func (r *Repository) UpdateController(ctx context.Context, controller *Controller) (int, error) { const op = "server.(Repository).UpdateController" if controller == nil { diff --git a/internal/server/repository_controller_test.go b/internal/server/repository_controller_test.go index 337dc9cc7a..7161eceac2 100644 --- a/internal/server/repository_controller_test.go +++ b/internal/server/repository_controller_test.go @@ -10,7 +10,6 @@ import ( "github.com/hashicorp/boundary/internal/db" "github.com/hashicorp/boundary/internal/iam" "github.com/hashicorp/boundary/internal/kms" - "github.com/hashicorp/boundary/internal/server/store" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -29,7 +28,7 @@ func TestRepository_UpsertController(t *testing.T) { tests := []struct { name string - controller *store.Controller + controller *Controller wantCount int wantErr bool }{ @@ -38,52 +37,34 @@ func TestRepository_UpsertController(t *testing.T) { wantErr: true, }, { - name: "empty-id", - controller: &store.Controller{ - PrivateId: "", - Address: "127.0.0.1", - }, - wantErr: true, + name: "empty-id", + controller: NewController("", WithAddress("127.0.0.1")), + wantErr: true, }, { - name: "empty-address", - controller: &store.Controller{ - PrivateId: "test-controller", - Address: "", - }, - wantErr: true, + name: "empty-address", + controller: NewController("test-controller"), + wantErr: true, }, { - name: "valid-ipv4-controller", - controller: &store.Controller{ - PrivateId: "test-ipv4-controller", - Address: "127.0.0.1", - }, - wantCount: 1, + name: "valid-ipv4-controller", + controller: NewController("ipv4-controller", WithAddress("127.0.0.1")), + wantCount: 1, }, { - name: "valid-ipv6-controller", - controller: &store.Controller{ - PrivateId: "test-ipv6-controller", - Address: "[2001:4860:4860:0:0:0:0:8888]", - }, - wantCount: 1, + name: "valid-ipv6-controller", + controller: NewController("test-ipv6-controller", WithAddress("[2001:4860:4860:0:0:0:0:8888]")), + wantCount: 1, }, { - name: "valid-abbreviated-ipv6-controller", - controller: &store.Controller{ - PrivateId: "test-abbreviated-ipv6-controller", - Address: "[2001:4860:4860::8888]", - }, - wantCount: 1, + name: "valid-abbreviated-ipv6-controller", + controller: NewController("test-abbreviated-ipv6-controller", WithAddress("[2001:4860:4860::8888]")), + wantCount: 1, }, { - name: "valid-controller-short-name", - controller: &store.Controller{ - PrivateId: "test", - Address: "127.0.0.1", - }, - wantCount: 1, + name: "valid-controller-short-name", + controller: NewController("test", WithAddress("127.0.0.1")), + wantCount: 1, }, } for _, tt := range tests { @@ -115,8 +96,8 @@ func TestRepository_UpdateController(t *testing.T) { tests := []struct { name string - originalController *store.Controller - updatedController *store.Controller + originalController *Controller + updatedController *Controller wantCount int wantErr bool }{ @@ -125,92 +106,50 @@ func TestRepository_UpdateController(t *testing.T) { wantErr: true, }, { - name: "empty-id", - updatedController: &store.Controller{ - PrivateId: "", - Address: "127.0.0.1", - }, - wantErr: true, + name: "empty-id", + updatedController: NewController("", WithAddress("127.0.0.1")), + wantErr: true, }, { - name: "empty-address", - updatedController: &store.Controller{ - PrivateId: "test-controller", - Address: "", - }, - wantErr: true, + name: "empty-address", + updatedController: NewController("test-controller"), + wantErr: true, }, { - name: "controller-not-found", - updatedController: &store.Controller{ - PrivateId: "test-new-ipv4-controller", - Address: "127.0.0.1", - Description: "new ipv4 description", - }, - wantErr: true, + name: "controller-not-found", + updatedController: NewController("test-controller", WithAddress("127.0.0.1"), WithDescription("new ipv4 description")), + wantErr: true, }, { - name: "valid-ipv4-controller", - originalController: &store.Controller{ - PrivateId: "ipv4-controller", - Address: "127.0.0.1", - Description: "ipv4 description", - }, - updatedController: &store.Controller{ - PrivateId: "ipv4-controller", - Address: "127.0.0.2", - Description: "new ipv4 description", - }, - wantCount: 1, + name: "valid-ipv4-controller", + originalController: NewController("ipv4-controller", WithAddress("127.0.0.1"), WithDescription("ipv4 description")), + updatedController: NewController("ipv4-controller", WithAddress("127.0.0.2"), WithDescription("new ipv4 description")), + wantCount: 1, }, { - name: "valid-ipv6-controller", - originalController: &store.Controller{ - PrivateId: "test-ipv6-controller", - Address: "[2001:4860:4860:0:0:0:0:8888]", - Description: "ipv6 description", - }, - updatedController: &store.Controller{ - PrivateId: "test-ipv6-controller", - Address: "[2001:4860:4860:0:0:0:0:9999]", - Description: "new ipv6 description", - }, - wantCount: 1, + name: "valid-ipv6-controller", + originalController: NewController("test-ipv6-controller", WithAddress("[2001:4860:4860:0:0:0:0:8888]"), WithDescription("ipv6 description")), + updatedController: NewController("test-ipv6-controller", WithAddress("[2001:4860:4860:0:0:0:0:9999]"), WithDescription("new ipv6 description")), + wantCount: 1, }, { - name: "valid-abbreviated-ipv6-controller", - originalController: &store.Controller{ - PrivateId: "test-abbreviated-ipv6-controller", - Address: "[2001:4860:4860::8888]", - Description: "abbreviated ipv6 description", - }, - updatedController: &store.Controller{ - PrivateId: "test-abbreviated-ipv6-controller", - Address: "[2001:4860:4860::9999]", - Description: "new abbreviated ipv6 description", - }, - wantCount: 1, + name: "valid-abbreviated-ipv6-controller", + originalController: NewController("test-abbreviated-ipv6-controller", WithAddress("[2001:4860:4860::8888]"), WithDescription("abbreviated ipv6 description")), + updatedController: NewController("test-abbreviated-ipv6-controller", WithAddress("[2001:4860:4860::9999]"), WithDescription("new abbreviated ipv6 description")), + wantCount: 1, }, { - name: "valid-controller-short-name", - originalController: &store.Controller{ - PrivateId: "test", - Address: "127.0.0.1", - Description: "short name description", - }, - updatedController: &store.Controller{ - PrivateId: "test", - Address: "127.0.0.2", - Description: "new short name description", - }, - wantCount: 1, + name: "valid-controller-short-name", + originalController: NewController("test", WithAddress("127.0.0.1"), WithDescription("short name description")), + updatedController: NewController("test", WithAddress("127.0.0.2"), WithDescription("new short name description")), + wantCount: 1, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { assert, require := assert.New(t), require.New(t) - var originalControllerEntry, updatedControllerEntry *store.Controller + var originalControllerEntry *Controller // Insert the original controller attributes if they exist if tt.originalController != nil { _, err := testRepo.UpsertController(ctx, tt.originalController) @@ -235,7 +174,7 @@ func TestRepository_UpdateController(t *testing.T) { // Retrieve the updated controller in the database and assert updated successfully controllerList, err := testRepo.ListControllers(ctx, []Option{}...) require.NoError(err) - updatedControllerEntry = controllerList[len(controllerList)-1] + updatedControllerEntry := controllerList[len(controllerList)-1] assert.Equal(tt.updatedController.PrivateId, updatedControllerEntry.PrivateId) assert.Equal(tt.updatedController.Address, updatedControllerEntry.Address) diff --git a/internal/session/service_statistics_test.go b/internal/session/service_statistics_test.go index 0d986b9d1c..f61122fd10 100644 --- a/internal/session/service_statistics_test.go +++ b/internal/session/service_statistics_test.go @@ -13,7 +13,6 @@ import ( "github.com/hashicorp/boundary/internal/iam" "github.com/hashicorp/boundary/internal/kms" "github.com/hashicorp/boundary/internal/server" - "github.com/hashicorp/boundary/internal/server/store" "github.com/hashicorp/boundary/internal/target" "github.com/hashicorp/boundary/internal/target/tcp" "github.com/stretchr/testify/assert" @@ -32,10 +31,8 @@ func TestCloseOrphanedConnections(t *testing.T) { require.NoError(t, err) serverRepo, _ := server.NewRepository(context.Background(), rw, rw, testKms) - _, err = serverRepo.UpsertController(context.Background(), &store.Controller{ - PrivateId: "test_controller1", - Address: "127.0.0.1", - }) + c := server.NewController("test_controller1", server.WithAddress("127.0.0.1")) + _, err = serverRepo.UpsertController(context.Background(), c) require.NoError(t, err) cases := []struct { @@ -450,10 +447,8 @@ func TestUpdateConnectionBytesUpDown(t *testing.T) { require.NoError(t, err) serverRepo, _ := server.NewRepository(context.Background(), rw, rw, testKms) - _, err = serverRepo.UpsertController(context.Background(), &store.Controller{ - PrivateId: "test_controller1", - Address: "127.0.0.1", - }) + c := server.NewController("test_controller1", server.WithAddress("127.0.0.1")) + _, err = serverRepo.UpsertController(context.Background(), c) require.NoError(t, err) t.Run("nil connection repo", func(t *testing.T) { diff --git a/internal/session/service_worker_status_report_test.go b/internal/session/service_worker_status_report_test.go index 038a1ad2a0..eb7ed22552 100644 --- a/internal/session/service_worker_status_report_test.go +++ b/internal/session/service_worker_status_report_test.go @@ -13,7 +13,6 @@ import ( "github.com/hashicorp/boundary/internal/iam" "github.com/hashicorp/boundary/internal/kms" "github.com/hashicorp/boundary/internal/server" - "github.com/hashicorp/boundary/internal/server/store" "github.com/hashicorp/boundary/internal/session" "github.com/hashicorp/boundary/internal/target" "github.com/hashicorp/boundary/internal/target/tcp" @@ -30,10 +29,8 @@ func TestWorkerStatusReport(t *testing.T) { org, prj := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) serverRepo, _ := server.NewRepository(ctx, rw, rw, kms) - _, err := serverRepo.UpsertController(ctx, &store.Controller{ - PrivateId: "test_controller1", - Address: "127.0.0.1", - }) + c := server.NewController("test_controller1", server.WithAddress("127.0.0.")) + _, err := serverRepo.UpsertController(ctx, c) require.NoError(t, err) repo, err := session.NewRepository(ctx, rw, rw, kms) From 1820d43d38d4bb2dc044ee3d34607f91f78862c8 Mon Sep 17 00:00:00 2001 From: Damian Debkowski Date: Tue, 18 Mar 2025 12:29:26 -0700 Subject: [PATCH 46/70] fix(daemon): set correct permissions on cache.db file (#5613) --- internal/clientcache/internal/daemon/server.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/internal/clientcache/internal/daemon/server.go b/internal/clientcache/internal/daemon/server.go index 3f6b900b56..b9635bb39d 100644 --- a/internal/clientcache/internal/daemon/server.go +++ b/internal/clientcache/internal/daemon/server.go @@ -567,6 +567,20 @@ func defaultDbUrl(ctx context.Context, opt ...Option) (string, error) { return "", errors.Wrap(ctx, err, op) } fileName := filepath.Join(dotDir, dbFileName) + if _, err := os.Stat(fileName); err != nil { + if !errors.Is(err, os.ErrNotExist) { + return "", errors.Wrap(ctx, err, op) + } + file, err := os.OpenFile(fileName, os.O_WRONLY|os.O_CREATE, 0o600) + if err != nil { + return "", errors.Wrap(ctx, err, op) + } + defer file.Close() + } + err = os.Chmod(fileName, 0o600) + if err != nil { + return "", errors.Wrap(ctx, err, op) + } return fmt.Sprintf("%s%s", fileName, fkPragma), nil } From f2c84ad7509237e1e022496148161fc48fd9e947 Mon Sep 17 00:00:00 2001 From: Mohit Kumar <52292512+Mohit0233@users.noreply.github.com> Date: Wed, 19 Mar 2025 02:49:41 +0530 Subject: [PATCH 47/70] docs: add macOS Internet Sharing and Parallels Desktop conflicts for Boundary Client Agent (#5496) * docs: add macOS Internet Sharing and Parallels Desktop conflicts for Boundary Client Agent Updated the "Conflicting Software" section in the Boundary Client Agent documentation to include issues caused by macOS Internet Sharing and Parallels Desktop (macOS VM with shared networking). These configurations cause the system's DNS resolver to bind to port 53, preventing the Client Agent from starting. * chore: change case of macOS to MacOS and added workaround for Parallels macOS VM conflict * Apply suggestions from code review approving style suggestions from code review Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> --------- Co-authored-by: Robin Beck Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> --- website/content/docs/api-clients/client-agent.mdx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/website/content/docs/api-clients/client-agent.mdx b/website/content/docs/api-clients/client-agent.mdx index bd21da98cc..8612c80a7a 100644 --- a/website/content/docs/api-clients/client-agent.mdx +++ b/website/content/docs/api-clients/client-agent.mdx @@ -546,6 +546,16 @@ Docker Desktop sometimes creates a local DNS listener that prevents the Client A If you run Docker Desktop 4.26 or later, you must clear the `Use kernel networking for UDP` option. Otherwise, the Client Agent refuses to start. +### Internet Sharing (MacOS) +Enabling **Internet Sharing** on MacOS causes the system's DNS resolver (`mDNSResponder`) to bind to all interfaces on port 53, preventing the Client Agent from starting. Disable **Internet Sharing** before you run the Client Agent. + +### Parallels Desktop (MacOS VM on MacOS Host) +Running a MacOS VM in Parallels Desktop with shared networking causes the system's DNS resolver (`mDNSResponder`) to bind to all interfaces, blocking port 53 and preventing the Client Agent from starting. + +As a workaround, you can configure Parallels Desktop to use a different network mode. +Select an alternative network configuration such as **Host-Only**, **Default Adapter**, or **Wi-Fi** instead of **Shared Network**. +Refer to the Parallels Desktop documentation for more information. + ### Palo Alto Networking Global Protect VPN If you are unable to establish a transparent session while using the Palo Alto Networking Global Protect VPN, you may need to explicitly specify a network interface and the upstream DNS server(s) to use. From ea7ed5c1265bf4b7d283fbdcd4a695dd1bee7abe Mon Sep 17 00:00:00 2001 From: vanphan24 <89482663+vanphan24@users.noreply.github.com> Date: Tue, 18 Mar 2025 14:20:22 -0700 Subject: [PATCH 48/70] Update index.mdx - public_addr note for HCP workers (#5287) * Update index.mdx - public_addr note for HCP workers Added a note that the public_addr is not needed if connecting to HCP worker in multi-hop sessions * Update index.mdx * Update index.mdx changed to active voice per Robin's suggestion * fix hcp_boundary_cluster_id note --------- Co-authored-by: stellarsquall --- website/content/docs/configuration/worker/index.mdx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/website/content/docs/configuration/worker/index.mdx b/website/content/docs/configuration/worker/index.mdx index e8fcb12563..fe37ca7be5 100644 --- a/website/content/docs/configuration/worker/index.mdx +++ b/website/content/docs/configuration/worker/index.mdx @@ -62,6 +62,8 @@ worker { useful for cloud environments that do not bind a publicly accessible IP to a NIC on the host directly, such as an Amazon EIP. + You should omit this parameter in multi-hop configurations if this self-managed worker connects to an upstream HCP-managed worker. + This value can reference any of the following: - a direct address string - a file on disk (file://) from which an address will be read @@ -75,8 +77,8 @@ worker { using env or file, their contents must formatted as a JSON array: `["127.0.0.1", "192.168.0.1", "10.0.0.1"]` - HCP Boundary workers require the [`hcp_boundary_cluster_id`](/boundary/docs/configuration/worker/#hcp_boundary_cluster_id) parameter instead of `initial upstreams`. - If you configure an HCP worker with `initial_upstreams`, the worker configuration fails. + Self-managed workers connecting to HCP Boundary require the [`hcp_boundary_cluster_id`](/boundary/docs/configuration/worker/#hcp_boundary_cluster_id) parameter instead of `initial upstreams`, unless you are configuring an HCP-managed worker as an ingress worker. + If you configure a self-managed worker with both `initial_upstreams` and `hcp_boundary_cluster_id`, the worker configuration fails. - `hcp_boundary_cluster_id` - A string required to configure workers using worker-led or controller-led registration to connect to your HCP Boundary cluster rather than specifying From b31c6a2834b9d449385a6df258a4bff6c67c4ace Mon Sep 17 00:00:00 2001 From: dani <29378233+kheina@users.noreply.github.com> Date: Wed, 19 Mar 2025 11:36:22 -0400 Subject: [PATCH 49/70] update loopback to normalize endpoint_url (#5603) --- go.mod | 2 +- go.sum | 4 ++-- internal/host/plugin/repository_host_catalog.go | 1 + internal/plugin/loopback/storage.go | 9 ++++++++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 5a5db8adb2..172d895cfe 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,7 @@ require ( github.com/hashicorp/go-secure-stdlib/kv-builder v0.1.2 github.com/hashicorp/go-secure-stdlib/listenerutil v0.1.9 github.com/hashicorp/go-secure-stdlib/mlock v0.1.3 - github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 + github.com/hashicorp/go-secure-stdlib/parseutil v0.2.0 github.com/hashicorp/go-secure-stdlib/password v0.1.3 github.com/hashicorp/go-secure-stdlib/permitpool v1.0.0 github.com/hashicorp/go-secure-stdlib/pluginutil/v2 v2.0.6 diff --git a/go.sum b/go.sum index eef7dfb144..1c8fab3081 100644 --- a/go.sum +++ b/go.sum @@ -235,8 +235,8 @@ github.com/hashicorp/go-secure-stdlib/listenerutil v0.1.9 h1:0S0ctJ7Ra8O7ap+/3fZ github.com/hashicorp/go-secure-stdlib/listenerutil v0.1.9/go.mod h1:TNNdgtjLgVDbrgFcyCKrlAicIl3dZF94swJltyGUX2M= github.com/hashicorp/go-secure-stdlib/mlock v0.1.3 h1:kH3Rhiht36xhAfhuHyWJDgdXXEx9IIZhDGRk24CDhzg= github.com/hashicorp/go-secure-stdlib/mlock v0.1.3/go.mod h1:ov1Q0oEDjC3+A4BwsG2YdKltrmEw8sf9Pau4V9JQ4Vo= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 h1:iBt4Ew4XEGLfh6/bPk4rSYmuZJGizr6/x/AEizP0CQc= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8/go.mod h1:aiJI+PIApBRQG7FZTEBx5GiiX+HbOHilUdNxUZi4eV0= +github.com/hashicorp/go-secure-stdlib/parseutil v0.2.0 h1:U+kC2dOhMFQctRfhK0gRctKAPTloZdMU5ZJxaesJ/VM= +github.com/hashicorp/go-secure-stdlib/parseutil v0.2.0/go.mod h1:Ll013mhdmsVDuoIXVfBtvgGJsXDYkTw1kooNcoCXuE0= github.com/hashicorp/go-secure-stdlib/password v0.1.3 h1:/2S3qhBDGbI0DoSgSC8m9EaiRelgGrJmApZIDb/8Xv8= github.com/hashicorp/go-secure-stdlib/password v0.1.3/go.mod h1:JPOgAG+z70auO30+LCRhvZKxGAh8cfXorXNJWGlFiVQ= github.com/hashicorp/go-secure-stdlib/permitpool v1.0.0 h1:U6y5MXGiDVOOtkWJ6o/tu1TxABnI0yKTQWJr7z6BpNk= diff --git a/internal/host/plugin/repository_host_catalog.go b/internal/host/plugin/repository_host_catalog.go index 9832e117a2..5beee8422c 100644 --- a/internal/host/plugin/repository_host_catalog.go +++ b/internal/host/plugin/repository_host_catalog.go @@ -51,6 +51,7 @@ func normalizeCatalogAttributes(ctx context.Context, plgClient plgpb.HostPluginS }) switch { case err == nil: + // TODO: this should be updated to return these attributes rather than updating them in-place if ret.Attributes != nil { plgHc.Attrs = &pb.HostCatalog_Attributes{ Attributes: ret.Attributes, diff --git a/internal/plugin/loopback/storage.go b/internal/plugin/loopback/storage.go index e588933759..cd16dbe178 100644 --- a/internal/plugin/loopback/storage.go +++ b/internal/plugin/loopback/storage.go @@ -17,6 +17,7 @@ import ( "github.com/hashicorp/boundary/sdk/pbs/controller/api/resources/storagebuckets" plgpb "github.com/hashicorp/boundary/sdk/pbs/plugin" + "github.com/hashicorp/go-secure-stdlib/parseutil" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/structpb" @@ -141,9 +142,15 @@ func (l *LoopbackStorage) normalizeStorageBucketData(ctx context.Context, req *p if req.GetAttributes() == nil { return nil, status.Errorf(codes.InvalidArgument, "%s: missing attributes", op) } + attrs := req.GetAttributes() + if endpoint, ok := attrs.GetFields()["endpoint_url"]; ok { + if endpoint, err := parseutil.NormalizeAddr(endpoint.GetStringValue()); err == nil { + attrs.Fields["endpoint_url"] = structpb.NewStringValue(endpoint) + } + } l.normalizations++ return &plgpb.NormalizeStorageBucketDataResponse{ - Attributes: req.GetAttributes(), + Attributes: attrs, }, nil } From 8b9d5cba5b37e6180a694ca4d397bac2bc8a38bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Mar 2025 12:59:17 -0700 Subject: [PATCH 50/70] chore(deps): bump github.com/go-jose/go-jose/v3 (#5618) Bumps [github.com/go-jose/go-jose/v3](https://github.com/go-jose/go-jose) from 3.0.3 to 3.0.4. - [Release notes](https://github.com/go-jose/go-jose/releases) - [Changelog](https://github.com/go-jose/go-jose/blob/main/CHANGELOG.md) - [Commits](https://github.com/go-jose/go-jose/compare/v3.0.3...v3.0.4) --- updated-dependencies: - dependency-name: github.com/go-jose/go-jose/v3 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- plugins/kms/mains/transit/go.mod | 2 +- plugins/kms/mains/transit/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/kms/mains/transit/go.mod b/plugins/kms/mains/transit/go.mod index 5cb3763e8e..a10455bc21 100644 --- a/plugins/kms/mains/transit/go.mod +++ b/plugins/kms/mains/transit/go.mod @@ -11,7 +11,7 @@ require ( github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.16.0 // indirect - github.com/go-jose/go-jose/v3 v3.0.3 // indirect + github.com/go-jose/go-jose/v3 v3.0.4 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect diff --git a/plugins/kms/mains/transit/go.sum b/plugins/kms/mains/transit/go.sum index 26fdd7ff9b..79230a0009 100644 --- a/plugins/kms/mains/transit/go.sum +++ b/plugins/kms/mains/transit/go.sum @@ -11,8 +11,8 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= -github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k= -github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= +github.com/go-jose/go-jose/v3 v3.0.4 h1:Wp5HA7bLQcKnf6YYao/4kpRpVMp/yf6+pJKV8WFSaNY= +github.com/go-jose/go-jose/v3 v3.0.4/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= github.com/go-test/deep v1.0.2 h1:onZX1rnHT3Wv6cqNgYyFOOlgVKJrksuCMCRvJStbMYw= github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= From 143bc7055f834a26ea6c772372da12ca911a71a2 Mon Sep 17 00:00:00 2001 From: dani <29378233+kheina@users.noreply.github.com> Date: Fri, 21 Mar 2025 14:45:18 -0400 Subject: [PATCH 51/70] Revert "Controller Liveliness Query Split (#5602)" (#5619) This reverts commit 6c0b3a8a1c5c4e455006ea712f4eb868929c67fa. --- internal/daemon/controller/tickers.go | 27 +---- internal/server/repository_controller.go | 37 ------- internal/server/repository_controller_test.go | 102 ------------------ 3 files changed, 2 insertions(+), 164 deletions(-) diff --git a/internal/daemon/controller/tickers.go b/internal/daemon/controller/tickers.go index e5d6b06c5f..d15b8c2bd1 100644 --- a/internal/daemon/controller/tickers.go +++ b/internal/daemon/controller/tickers.go @@ -36,7 +36,7 @@ func (c *Controller) startStatusTicking(cancelCtx context.Context) { return case <-timer.C: - if err := c.updateController(cancelCtx); err != nil { + if err := c.upsertController(cancelCtx); err != nil { event.WriteError(cancelCtx, op, err, event.WithInfoMsg("error fetching repository for status update")) } timer.Reset(statusInterval) @@ -54,36 +54,13 @@ func (c *Controller) upsertController(ctx context.Context) error { opts = append(opts, server.WithAddress(c.conf.RawConfig.Controller.PublicClusterAddr)) } - controller := server.NewController(c.conf.RawConfig.Controller.Name, opts...) - repo, err := c.ServersRepoFn() - if err != nil { - return errors.Wrap(ctx, err, op, errors.WithMsg("error fetching repository for status upsert")) - } - - _, err = repo.UpsertController(ctx, controller) - if err != nil { - return errors.Wrap(ctx, err, op, errors.WithMsg("error performing status upsert")) - } - - return nil -} - -func (c *Controller) updateController(ctx context.Context) error { - const op = "controller.(Controller).updateController" - var opts []server.Option - if c.conf.RawConfig.Controller.Description != "" { - opts = append(opts, server.WithDescription(c.conf.RawConfig.Controller.Description)) - } - if c.conf.RawConfig.Controller.PublicClusterAddr != "" { - opts = append(opts, server.WithAddress(c.conf.RawConfig.Controller.PublicClusterAddr)) - } controller := server.NewController(c.conf.RawConfig.Controller.Name, opts...) repo, err := c.ServersRepoFn() if err != nil { return errors.Wrap(ctx, err, op, errors.WithMsg("error fetching repository for status update")) } - _, err = repo.UpdateController(ctx, controller) + _, err = repo.UpsertController(ctx, controller) if err != nil { return errors.Wrap(ctx, err, op, errors.WithMsg("error performing status update")) } diff --git a/internal/server/repository_controller.go b/internal/server/repository_controller.go index bdf4cb26ce..238352c289 100644 --- a/internal/server/repository_controller.go +++ b/internal/server/repository_controller.go @@ -76,40 +76,3 @@ func (r *Repository) UpsertController(ctx context.Context, controller *Controlle return int(rowsUpdated), nil } - -func (r *Repository) UpdateController(ctx context.Context, controller *Controller) (int, error) { - const op = "server.(Repository).UpdateController" - - if controller == nil { - return db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "controller is nil") - } - if controller.PrivateId == "" { - return db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "controller private_id is empty") - } - if controller.Address == "" { - return db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "controller address is empty") - } - - var rowsUpdated int - _, err := r.writer.DoTx( - ctx, - db.StdRetryCnt, - db.ExpBackoff{}, - func(reader db.Reader, w db.Writer) error { - var err error - rowsUpdated, err = w.Update(ctx, controller, []string{"description", "address"}, nil, db.WithWhere("private_id = ?", controller.PrivateId)) - if err != nil { - return errors.Wrap(ctx, err, op+":Update") - } - if rowsUpdated > 1 { - return errors.New(ctx, errors.MultipleRecords, op, "more than 1 resource would have been updated") - } - return nil - }, - ) - if err != nil { - return db.NoRowsAffected, err - } - - return rowsUpdated, nil -} diff --git a/internal/server/repository_controller_test.go b/internal/server/repository_controller_test.go index 7161eceac2..cae413292e 100644 --- a/internal/server/repository_controller_test.go +++ b/internal/server/repository_controller_test.go @@ -81,105 +81,3 @@ func TestRepository_UpsertController(t *testing.T) { }) } } - -func TestRepository_UpdateController(t *testing.T) { - ctx := context.Background() - conn, _ := db.TestSetup(t, "postgres") - rw := db.New(conn) - wrapper := db.TestWrapper(t) - testKms := kms.TestKms(t, conn, wrapper) - testRepo, err := NewRepository(ctx, rw, rw, testKms) - require.NoError(t, err) - - iamRepo := iam.TestRepo(t, conn, wrapper) - iam.TestScopes(t, iamRepo) - - tests := []struct { - name string - originalController *Controller - updatedController *Controller - wantCount int - wantErr bool - }{ - { - name: "nil-controller", - wantErr: true, - }, - { - name: "empty-id", - updatedController: NewController("", WithAddress("127.0.0.1")), - wantErr: true, - }, - { - name: "empty-address", - updatedController: NewController("test-controller"), - wantErr: true, - }, - { - name: "controller-not-found", - updatedController: NewController("test-controller", WithAddress("127.0.0.1"), WithDescription("new ipv4 description")), - wantErr: true, - }, - { - name: "valid-ipv4-controller", - originalController: NewController("ipv4-controller", WithAddress("127.0.0.1"), WithDescription("ipv4 description")), - updatedController: NewController("ipv4-controller", WithAddress("127.0.0.2"), WithDescription("new ipv4 description")), - wantCount: 1, - }, - { - name: "valid-ipv6-controller", - originalController: NewController("test-ipv6-controller", WithAddress("[2001:4860:4860:0:0:0:0:8888]"), WithDescription("ipv6 description")), - updatedController: NewController("test-ipv6-controller", WithAddress("[2001:4860:4860:0:0:0:0:9999]"), WithDescription("new ipv6 description")), - wantCount: 1, - }, - { - name: "valid-abbreviated-ipv6-controller", - originalController: NewController("test-abbreviated-ipv6-controller", WithAddress("[2001:4860:4860::8888]"), WithDescription("abbreviated ipv6 description")), - updatedController: NewController("test-abbreviated-ipv6-controller", WithAddress("[2001:4860:4860::9999]"), WithDescription("new abbreviated ipv6 description")), - wantCount: 1, - }, - { - name: "valid-controller-short-name", - originalController: NewController("test", WithAddress("127.0.0.1"), WithDescription("short name description")), - updatedController: NewController("test", WithAddress("127.0.0.2"), WithDescription("new short name description")), - wantCount: 1, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - assert, require := assert.New(t), require.New(t) - - var originalControllerEntry *Controller - // Insert the original controller attributes if they exist - if tt.originalController != nil { - _, err := testRepo.UpsertController(ctx, tt.originalController) - require.NoError(err) - - // Retrieve the original controller in the database - controllerList, err := testRepo.ListControllers(ctx, []Option{}...) - require.NoError(err) - originalControllerEntry = controllerList[len(controllerList)-1] - } - - // Update the controller with the updated attributes - got, err := testRepo.UpdateController(ctx, tt.updatedController) - if tt.wantErr { - require.Error(err) - assert.Equal(0, got) - return - } - require.NoError(err) - assert.Equal(tt.wantCount, got) - - // Retrieve the updated controller in the database and assert updated successfully - controllerList, err := testRepo.ListControllers(ctx, []Option{}...) - require.NoError(err) - updatedControllerEntry := controllerList[len(controllerList)-1] - - assert.Equal(tt.updatedController.PrivateId, updatedControllerEntry.PrivateId) - assert.Equal(tt.updatedController.Address, updatedControllerEntry.Address) - assert.Equal(tt.updatedController.Description, updatedControllerEntry.Description) - assert.True(updatedControllerEntry.UpdateTime.AsTime().After(originalControllerEntry.UpdateTime.AsTime())) - }) - } -} From f449ae5a70d0bdede8fb36af87f8ae032080ed2e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Mar 2025 16:03:57 -0700 Subject: [PATCH 52/70] chore(deps): bump github.com/golang-jwt/jwt/v4 (#5621) Bumps [github.com/golang-jwt/jwt/v4](https://github.com/golang-jwt/jwt) from 4.5.1 to 4.5.2. - [Release notes](https://github.com/golang-jwt/jwt/releases) - [Changelog](https://github.com/golang-jwt/jwt/blob/main/VERSION_HISTORY.md) - [Commits](https://github.com/golang-jwt/jwt/compare/v4.5.1...v4.5.2) --- updated-dependencies: - dependency-name: github.com/golang-jwt/jwt/v4 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- plugins/boundary/mains/azure/go.mod | 2 +- plugins/boundary/mains/azure/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/boundary/mains/azure/go.mod b/plugins/boundary/mains/azure/go.mod index c052f01f37..4a564f9e2a 100644 --- a/plugins/boundary/mains/azure/go.mod +++ b/plugins/boundary/mains/azure/go.mod @@ -22,7 +22,7 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/dimchansky/utfbom v1.1.1 // indirect github.com/fatih/color v1.16.0 // indirect - github.com/golang-jwt/jwt/v4 v4.5.1 // indirect + github.com/golang-jwt/jwt/v4 v4.5.2 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/eventlogger v0.2.6-0.20231025104552-802587e608f0 // indirect diff --git a/plugins/boundary/mains/azure/go.sum b/plugins/boundary/mains/azure/go.sum index 74164adf52..6ec19dd83b 100644 --- a/plugins/boundary/mains/azure/go.sum +++ b/plugins/boundary/mains/azure/go.sum @@ -97,8 +97,8 @@ github.com/go-test/deep v1.0.4 h1:u2CU3YKy9I2pmu9pX0eq50wCgjfGIt539SqR7FbHiho= github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= -github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= +github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= From 84c626a4595974623ed2bed88bc3cf2c9d760474 Mon Sep 17 00:00:00 2001 From: Irena Rindos Date: Mon, 24 Mar 2025 11:55:32 -0400 Subject: [PATCH 53/70] chore: remove code for 0.12 backwards compatibility in protocol support (#5622) --- internal/daemon/worker/handler.go | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/internal/daemon/worker/handler.go b/internal/daemon/worker/handler.go index 9b1e099ed8..a7b2b12463 100644 --- a/internal/daemon/worker/handler.go +++ b/internal/daemon/worker/handler.go @@ -30,17 +30,10 @@ import ( "github.com/hashicorp/nodeenrollment" "github.com/hashicorp/nodeenrollment/types" "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/timestamppb" "nhooyr.io/websocket" ) -var GetProtocolContext = nilProtocolContext - -func nilProtocolContext(context.Context, string, session.Session, string) (*anypb.Any, error) { - return nil, nil -} - type HandlerProperties struct { ListenerConfig *listenerutil.ListenerConfig } @@ -267,14 +260,6 @@ func (w *Worker) handleProxy(listenerCfg *listenerutil.ListenerConfig, sessionMa return } protocolCtx := acResp.GetProtocolContext() - if protocolCtx == nil { - // TODO: Remove this if block once pre v0.12.0 controllers are no longer supported. - if protocolCtx, err = GetProtocolContext(ctx, workerId, sess, endpointUrl.Scheme); err != nil { - conn.Close(proxyHandlers.WebsocketStatusProtocolSetupError, "unable to get proxy context") - event.WriteError(ctx, op, err) - return - } - } pDialer, err := proxyHandlers.GetEndpointDialer(ctx, endpointUrl.Host, workerId, acResp, w.downstreamReceiver, proxyHandlers.WithDnsServerAddress(w.conf.WorkerDnsServer)) if err != nil { From ca123f9d1c4134f11741caff1031b5a3dc01917a Mon Sep 17 00:00:00 2001 From: Ken Keller <104874953+mister-ken@users.noreply.github.com> Date: Mon, 24 Mar 2025 11:55:30 -0500 Subject: [PATCH 54/70] docs/update two pages (#5601) * update two pages * Apply suggestions from code review Co-authored-by: Johan Brandhorst-Satzkorn * docs: Minor updates to connect to target * docs: Edits * docs: Edits * docs: Edits --------- Co-authored-by: Johan Brandhorst-Satzkorn Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> --- .../hcp/get-started/connect-to-target.mdx | 52 ++++++++--------- .../configure-controllers.mdx | 57 ++++++++++--------- 2 files changed, 54 insertions(+), 55 deletions(-) diff --git a/website/content/docs/hcp/get-started/connect-to-target.mdx b/website/content/docs/hcp/get-started/connect-to-target.mdx index fa905474e8..8f4fc2fa0e 100644 --- a/website/content/docs/hcp/get-started/connect-to-target.mdx +++ b/website/content/docs/hcp/get-started/connect-to-target.mdx @@ -13,8 +13,7 @@ is the fastest way to onboard a target to HCP Boundary. ![Setup Wizard](/img/setup-wizard-address-target.png) -The Quick setup wizard creates a default `tcp` target with the port `22` (the default SSH port using TCP). -The target is created with the address `127.0.0.1`. +The Quick setup wizard creates a default `tcp` target with the address `127.0.0.1` and the port `22` (the default SSH port using TCP). When you execute `boundary connect` against this target, Boundary establishes a local, authenticated proxy to the address on the target's default port (`127.0.0.1:22`.) ![Setup Wizard](/img/quick-start-targets.png) @@ -28,44 +27,43 @@ To connect to the initial EC2 Instances target: 1. Open a terminal session. Export the Boundary **Cluster URL** as an environment variable. - ```shell-session - $ export BOUNDARY_ADDR= - ``` + ```shell-session + $ export BOUNDARY_ADDR= + ``` 1. Connect to the target. - ```shell-session - $ boundary connect -target-id ttcp_eTcZMueUYv - ``` + ```shell-session + $ boundary connect -target-id ttcp_eTcZMueUYv + ``` - The output displays the address and port that your SSH client must use. - In the next section the `ssh` connect helper is used to make it easier to connect to the target with a client. + The output displays the address and port that your SSH client must use. The `boundary connect` command has a number of notable options, such as `-listen-port` to choose the port on which the connect command will listen for an incoming connection. This is convenient for allowing Boundary to work with applications that allow you to select the connection address, but not the port. -For many applications there are still some extra hurdles that can exist, which +For some applications there are still some extra hurdles that can exist, which is why connect helpers can be useful. The dev-mode default target allows you to make as many connections as you want -within the authorized session. When you are finished making connections, simply -`Ctrl-C/Command-C` the `boundary connect` process to shut down the session. +within the authorized session. When you finish making connections, a +`Ctrl-C/Command-C` to the `boundary connect` process shuts down the session. ## Select targets -When using `boundary connect` you must identify the target used for connecting. -Convention in this documentation is to use the target ID because it refers to a -single explicit value, however other flags are supported: +When you use `boundary connect`, you must identify the target used for connecting. +The convention in this documentation is to use the target ID because it refers to a +single explicit value. + +Other supported flags include: - `target-name`: The name of the target - `target-scope-id`: The ID of the scope in which the target lives - `target-scope-name`: The name of the scope in which the target lives -Note however that these are not uniquely identifying, as names can be reused -across scopes. As a result, when not using the target ID, you must use the -target's name in conjunction with the scope name or scope ID so that Boundary -can correctly identify the desired target. +Note however that these other flags are not uniquely identifying, as you may reuse names +across scopes. Therefore, if you don't use the target ID, you must use the target's name in conjunction with the scope name or scope ID so that Boundary can identify the correct target. Here is an SSH example in dev-mode: @@ -75,9 +73,9 @@ $ boundary connect ssh -target-name "Generated target" -target-scope-name "Gener ## Connect helpers -Boundary includes connect helpers that automatically accept host SSH key prompts -for you. -These are written as `boundary connect ` and are supported for the following connection types: +Connect helpers automatically accept host SSH key prompts for you. +The connect helper format is `boundary connect `. +Boundary includes connect helpers for the following connection types: - HTTP - Kubernetes @@ -87,11 +85,11 @@ These are written as `boundary connect ` and are supported for the f Refer to the [Connect helpers](/boundary/docs/concepts/connection-workflows/connect-helpers) documentation for more information. -## Built-in vs. exec +## Exec flag In addition to the built-in connect helpers, `boundary connect` can accommodate executing clients even when there is no built-in support -for a specific client using `-exec`. The `-exec` flag is a very powerful +for a specific client using `-exec`. The `-exec` flag is a powerful tool, allowing you to wrap Boundary TCP sessions in your preferred client. You can use this flag to create an authenticated proxy to almost anything. @@ -108,7 +106,7 @@ Refer to the [SSH ProxyCommand](/boundary/docs/concepts/connection-workflows/wor ## Desktop client -While using the desktop client, choose the target and connect to retrieve local +While you use the desktop client, choose the target and connect to retrieve local proxy details.