+
+* [`992614d4`](https://github.com/siderolabs/omni/commit/992614d408f185692ddde2021682fdef68ebd5ba) chore: stop kubernetes status watchers for the offline cluster
+* [`79868c27`](https://github.com/siderolabs/omni/commit/79868c279355bec3b36c194f97381d55e3b4a007) chore: optimize controller operations for disconnected machines
+* [`8c2c39d3`](https://github.com/siderolabs/omni/commit/8c2c39d386cb8074db3c196b69b07fc80d30fdbe) fix: do not run loadbalancer for the unreachable clusters
+* [`caf3d955`](https://github.com/siderolabs/omni/commit/caf3d955fe8e79e1a52ff463c3c6e0fa5e8420d8) test: set unique names for config patches
+* [`f31373bd`](https://github.com/siderolabs/omni/commit/f31373bd317dcb1be407d3616669746f2ba79fee) feat: implement kubeconfig generation on Omni side
+* [`681ffa3b`](https://github.com/siderolabs/omni/commit/681ffa3b1d8446f77618399353f8563d139d9f44) feat: allow defining SAML label mapping rules to Omni roles
+* [`9d3f3b9e`](https://github.com/siderolabs/omni/commit/9d3f3b9e3ad0a56f666b50e2930610c0fa91f8eb) fix: rewrite the link counter handling
+* [`9becbc78`](https://github.com/siderolabs/omni/commit/9becbc78f8ffc7065e2c8dcaa0386fa00a147c17) refactor: use COSI runtime with new controller runtime DB
+* [`22235517`](https://github.com/siderolabs/omni/commit/22235517c04351136fc1a34977f394e4298cb25e) fix: gracefully handle links removal in the siderolink manager
+* [`26ae4163`](https://github.com/siderolabs/omni/commit/26ae416378acfee1ae66561017cd809da6960f3c) refactor: lower the level of log storage logs
+* [`01743ecd`](https://github.com/siderolabs/omni/commit/01743ecdde23583e9bc177e250122e6237996975) fix: rework the talos client and configuration generation
+* [`f837129a`](https://github.com/siderolabs/omni/commit/f837129ae469d319b78e575f0e72e16f97f8e2fe) chore: bump Talos machinery to the latest main
+* [`4a79387e`](https://github.com/siderolabs/omni/commit/4a79387e95f07e2f33df682904af00eb38bf1f5b) fix: update to Go 1.21.3
+* [`3df360b8`](https://github.com/siderolabs/omni/commit/3df360b81196e939eb571e6ee262eb5bee715bd7) chore: log received interruption signals in Omni
+* [`0a72c596`](https://github.com/siderolabs/omni/commit/0a72c5962a446f4ca1ea9399ff87aa750587bd07) chore: update state-etcd to v0.2.4
+* [`4f2978d2`](https://github.com/siderolabs/omni/commit/4f2978d2cf051a2a83eca885193792a335d94fcc) test: override grpc call log level in authorization tests
+* [`e21e39a8`](https://github.com/siderolabs/omni/commit/e21e39a83e80ef3226e73f85d0f36fcfd7e0b7b9) test: avoid excessive public key registration in integration tests
+* [`78c5fbdf`](https://github.com/siderolabs/omni/commit/78c5fbdf290ffe8feb2d42a7a510089f327eaf60) ci: remove gh actions workflow
+* [`e9f07068`](https://github.com/siderolabs/omni/commit/e9f07068ac0c08a7500677ec22d94afbb437e151) test: fix the assertion on cluster destroyed
+
+
+
+### Dependency Changes
+
+* **github.com/cosi-project/runtime** v0.3.11 -> v0.3.13
+* **github.com/cosi-project/state-etcd** v0.2.3 -> v0.2.4
+* **github.com/hashicorp/golang-lru/v2** v2.0.7 **_new_**
+* **github.com/siderolabs/talos/pkg/machinery** c14a5d4f79a3 -> 7bb205ebe2ef
+* **golang.org/x/crypto** v0.13.0 -> v0.14.0
+* **golang.org/x/net** v0.15.0 -> v0.17.0
+* **google.golang.org/grpc** v1.58.2 -> v1.58.3
+
+Previous release can be found at [v0.19.0](https://github.com/siderolabs/omni/releases/tag/v0.19.0)
+
+## [Omni 0.16.0](https://github.com/siderolabs/omni/releases/tag/v0.16.0) (2023-08-18)
+
+Welcome to the v0.16.0 release of Omni!
+
+
+
+Please try out the release binaries and report any issues at
+https://github.com/siderolabs/omni/issues.
+
+### Better Etcd Disaster Recovery
+
+Omni now allows replacing control plane machines even if etcd is unhealthy.
+And stil properly handles safety checks, not allowing to break etcd quorum,
+allowing removing only unhealthy machines.
+
+It also allows canceling machine destroy sequence if the machine destroyed
+is not being torn down by the machine set controller.
+
+
+### Machine Locking
+
+Cluster templates now also support machine locking:
+
+```yaml
+kind: Machine
+name: 430d882a-51a8-48b3-ab00-d4b5b0b5b0b0
+locked: true
+```
+
+
+### Limit Workload Access
+
+Workload proxy now takes into account the access to the cluster when allowing users to open the service endpoints.
+
+
+### Contributors
+
+* Utku Ozdemir
+* Artem Chernyshev
+* Dmitriy Matrenichev
+
+### Changes
+18 commits
+
+
+* [`3d1c19a1`](https://github.com/siderolabs/omni/commit/3d1c19a11110e8b3e8a04543797b0cf32cd79a88) feat: allow replacing control plane machines if it doesn't break etcd
+* [`12561b5b`](https://github.com/siderolabs/omni/commit/12561b5b82d4f150dac334e8b891b7f3dc7aeb54) fix: don't allow changing disk for the nodes that have Talos installed
+* [`8e17f742`](https://github.com/siderolabs/omni/commit/8e17f742c17f0e47b79b1e2da03725a7205721f8) feat: allow canceling deletion of a machine set node
+* [`1d8722aa`](https://github.com/siderolabs/omni/commit/1d8722aa353258c4e157e122ec9f11ddd8d1476b) chore: use 1.5.0 Talos in tests and enable disk encryption feature
+* [`3318a443`](https://github.com/siderolabs/omni/commit/3318a443c4bd8c36914b1d0a768c59ff6651680b) feat: show `invalid-state` label if the machine is reachable but apid is not
+* [`05f69c0d`](https://github.com/siderolabs/omni/commit/05f69c0d2a40837a466b4b2f607f7df5601207fa) feat: enable workload proxying by default
+* [`dded4d81`](https://github.com/siderolabs/omni/commit/dded4d814633f42b2677ca392636f6103d042b55) fix: check for roles and ACLs on exposed service access
+* [`d718f134`](https://github.com/siderolabs/omni/commit/d718f13432e92666b875b9134cf38c12dbbf01e5) chore: run auth tests in main integration test pipeline
+* [`79516583`](https://github.com/siderolabs/omni/commit/79516583e7995b3832f0759dbdc855e230f42abe) chore: remove `toInputWeak` and add mutex.Empty
+* [`6b2e09b7`](https://github.com/siderolabs/omni/commit/6b2e09b7e2229c25bd77863a7aa9aed367b20845) chore: bump Go to 1.21
+* [`a5f4a9a4`](https://github.com/siderolabs/omni/commit/a5f4a9a493a7e359ec552f61dabb898ad7dd66e6) chore: cleanup `ConfigPatch` resources along with their owners
+* [`a48efd7a`](https://github.com/siderolabs/omni/commit/a48efd7a9793c47a23b1b57fa23f90e7c72c7825) feat: add support for machine locking in cluster templates
+* [`964eb23d`](https://github.com/siderolabs/omni/commit/964eb23dc862cabb9b3029515ff1a947ee6978f2) feat: block `os:admin` access to Talos API from workload clusters
+* [`65bb6403`](https://github.com/siderolabs/omni/commit/65bb6403a529bf24aedf1175230fb98b4f63ab0d) refactor: simplify cleanup of exposed services
+* [`ede70550`](https://github.com/siderolabs/omni/commit/ede70550561562b930196701f989a1821da5ebba) fix: destroy exposedservices when cluster is destroyed
+* [`ddfd7657`](https://github.com/siderolabs/omni/commit/ddfd7657a3d871ab6da4b42adfb2b940e3781b36) fix: fix workload svc proxy feature visibility on frontend
+* [`ead58143`](https://github.com/siderolabs/omni/commit/ead581434227dad691e0e8ac9a7f0926afb7d2b9) chore: update vault in docker-compose
+* [`653824ca`](https://github.com/siderolabs/omni/commit/653824ca093ca053c129bd15780ae2e27e91ced0) chore: set default Talos version to v1.4.7
+
+
+
+### Dependency Changes
+
+* **github.com/emicklei/dot** v1.5.0 -> v1.6.0
+* **github.com/siderolabs/talos/pkg/machinery** 80238a05a6f8 -> v1.5.0-beta.1
+* **go.uber.org/zap** v1.24.0 -> v1.25.0
+* **golang.org/x/net** v0.12.0 -> v0.14.0
+* **golang.org/x/text** v0.11.0 -> v0.12.0
+* **golang.org/x/tools** v0.11.0 -> v0.12.0
+
+Previous release can be found at [v0.15.0](https://github.com/siderolabs/omni/releases/tag/v0.15.0)
+
+## [Omni 0.11.0-alpha.0](https://github.com/siderolabs/omni/releases/tag/v0.11.0-alpha.0) (2023-06-08)
+
+Welcome to the v0.11.0-alpha.0 release of Omni!
+*This is a pre-release of Omni*
+
+
+
+Please try out the release binaries and report any issues at
+https://github.com/siderolabs/omni/issues.
+
+### Support Full ACL Syntax
+
+ACL now supports configuring additive perimissions to the base role, which includes:
+
+- accessing the clusters - read-only, write access, separate Talos API access
+- read-only access to machines
+- write access to machines
+
+
+### SAML support
+
+Omni now supports SAML authentication.
+SAML authentication is enabled by the following cmd line flags:
+
+```
+--auth-saml-enabled
+--auth-saml-url
+--auth-saml-metadata
+--auth-saml-label-rules '{"Role": "role"}'
+```
+
+Omni metadata endpoint is `/saml/metadata`.
+
+The users are automatically created on the first SAML login.
+The first created user has Admin permissions, other have no permissions.
+Permissions can be managed by ACLs or `Admin` can change user roles.
+
+
+### Replace User Scopes with Roles
+
+User management is now simplified. Instead of having scopes like `cluster:read`, `cluster:write`, etc,
+the user is assigned one of 4 roles: `None`, `Reader`, `Operator`, `Admin`.
+
+- `None` - gives no permissions.
+- `Reader` - gives readonly permissions.
+- `Operator` - allows managing clusters, machines, getting talosconfig, but doesn't allow editing users.
+- `Amdin` - all permissions.
+
+Fine grained access can still be managed by ACLs.
+
+
+### Contributors
+
+* Utku Ozdemir
+* Artem Chernyshev
+* Andrey Smirnov
+
+### Changes
+10 commits
+
+
+* [`c7c93a1e`](https://github.com/siderolabs/omni/commit/c7c93a1e87f9d58ed8626aeed03bddb5b1d27a0d) fix: let the empty endpoints be recorded if there are no endpoints
+* [`c28907e4`](https://github.com/siderolabs/omni/commit/c28907e4cafe2ed478ace42e5dfeeb0beaf52b95) feat: copy SAML attributes to `Identity` as labels
+* [`a2f17a21`](https://github.com/siderolabs/omni/commit/a2f17a21f7321cc9dac4ea740afa8a14fa9d3e77) feat: implement full ACL syntax
+* [`c0fa5d46`](https://github.com/siderolabs/omni/commit/c0fa5d46f705e73d904b78a5ce4e98dc0b787d0e) feat: add support for SAML authentication
+* [`ad783798`](https://github.com/siderolabs/omni/commit/ad783798a081b4ff4ce667748db05688f91e0006) fix: replace `exponential-backoff` library with own implementation
+* [`c8d7183a`](https://github.com/siderolabs/omni/commit/c8d7183a37e20c8fbc8c28b0d3cff684ae367199) feat: replace scopes with simplified roles
+* [`08a048a9`](https://github.com/siderolabs/omni/commit/08a048a925fde227329b9b6696a03307ebc92256) feat: update default Talos to 1.4.5, Kubernetes to 1.27.2
+* [`5278321b`](https://github.com/siderolabs/omni/commit/5278321bb38a1af39b4157c0a49157cc5d16fe73) fix: respect service account key env on omnictl download
+* [`caac445d`](https://github.com/siderolabs/omni/commit/caac445d65289afb4276de0788c877640c74b4de) fix: don't show `OngoingTasks` until the UI is authorized
+* [`dfca66df`](https://github.com/siderolabs/omni/commit/dfca66dfa297f5c35b5c7ea44e81dab20e74d8c2) fix: include node name in the cluster node search
+
+
+
+### Changes from siderolabs/go-api-signature
+1 commit
+
+
+* [`a034e9f`](https://github.com/siderolabs/go-api-signature/commit/a034e9ff315ba4a56115acc7ad0fb99d0dc77800) feat: replace scopes with roles
+
+
+
+### Dependency Changes
+
+* **github.com/crewjam/saml** v0.4.13 **_new_**
+* **github.com/siderolabs/go-api-signature** v0.2.4 -> a034e9ff315b
+* **github.com/siderolabs/talos/pkg/machinery** v1.4.4 -> v1.4.5
+
+Previous release can be found at [v0.10.0](https://github.com/siderolabs/omni/releases/tag/v0.10.0)
+
+## [Omni 0.1.0-beta.2](https://github.com/siderolabs/omni/releases/tag/v0.1.0-beta.2) (2022-12-20)
+
+Welcome to the v0.1.0-beta.2 release of Omni!
+*This is a pre-release of Omni*
+
+
+
+Please try out the release binaries and report any issues at
+https://github.com/siderolabs/omni/issues.
+
+### Contributors
+
+* Andrey Smirnov
+* Artem Chernyshev
+
+### Changes
+5 commits
+
+
+* [`59df55f`](https://github.com/siderolabs/omni/commit/59df55f7b82c1e26564c77772eaa9755a2947b9e) fix: bring K8s info back to life on the node overview page
+* [`2f54f91`](https://github.com/siderolabs/omni/commit/2f54f9136ecce5009dbca552c1ab01cfeb602679) chore: run etcd elections ("lock") to prevent concurrent Omni runs
+* [`8beb051`](https://github.com/siderolabs/omni/commit/8beb05147a2746630c96fae2f62465dd3c95dd64) chore: update COSI to v0.3.0-alpha.2
+* [`f14e358`](https://github.com/siderolabs/omni/commit/f14e3582ed8f63ba188d7b7e0b33fed0f27c5b8a) fix: better errors in `talosctl` via Omni
+* [`f12a216`](https://github.com/siderolabs/omni/commit/f12a21673593ace90c51bdf087e2c7d084bb9c5f) fix: properly reset flush timeout in the Talos logs viewer
+
+
+
+### Dependency Changes
+
+* **github.com/cosi-project/runtime** v0.3.0-alpha.1 -> v0.3.0-alpha.2
+
+Previous release can be found at [v0.1.0-beta.1](https://github.com/siderolabs/omni/releases/tag/v0.1.0-beta.1)
+
+## [Omni 0.1.0-beta.1](https://github.com/siderolabs/omni/releases/tag/v0.1.0-beta.1) (2022-12-16)
+
+Welcome to the v0.1.0-beta.1 release of Omni!
+*This is a pre-release of Omni*
+
+
+
+Please try out the release binaries and report any issues at
+https://github.com/siderolabs/omni/issues.
+
+### Contributors
+
+* Andrey Smirnov
+* Andrey Smirnov
+* Utku Ozdemir
+* Alexey Palazhchenko
+* Artem Chernyshev
+* Dmitriy Matrenichev
+* Andrew Rynhard
+* Artem Chernyshev
+* Noel Georgi
+* Serge Logvinov
+
+### Changes
+20 commits
+
+
+* [`9a7a9a0`](https://github.com/siderolabs/omni/commit/9a7a9a02f4853ecb9d99031c9e606eab1cb4f7ea) feat: add RedactedClusterMachineConfig resource
+* [`c83cfe2`](https://github.com/siderolabs/omni/commit/c83cfe2f84c88bcff62a2c664b805bccbc996e56) feat: rework the cluster list view and cluster overview pages
+* [`f65ce14`](https://github.com/siderolabs/omni/commit/f65ce14cea1d9169e39bf5845c6f8aff70a299f1) fix: ignore keys if the auth is disabled
+* [`e9c3831`](https://github.com/siderolabs/omni/commit/e9c383161583c33ae32f229dbcbb8e546db507c2) fix: create config patch if it does not exist
+* [`437d271`](https://github.com/siderolabs/omni/commit/437d2718c6d4bdcef2aac4d5b2c98cf2ce17e4e8) fix: support Kubernetes proxy OIDC flow when auth is disabled
+* [`a47c211`](https://github.com/siderolabs/omni/commit/a47c211222881d474bb5774ff4969d4144652096) fix: read cluster reference from MachineStatus spec
+* [`8091f16`](https://github.com/siderolabs/omni/commit/8091f16161c7779b2406062e37bdbd7f4ea7e68e) fix: set owner on MachineStatus migration
+* [`e986e20`](https://github.com/siderolabs/omni/commit/e986e20d6f8899c3ff99e316c9111de56dd8b42c) fix: wrong yaml module version (should be v3)
+* [`dbb3d48`](https://github.com/siderolabs/omni/commit/dbb3d48d0ff3305a9c0184b469d0100ada76db6a) fix: rollback etcd auto compaction retention
+* [`047b89f`](https://github.com/siderolabs/omni/commit/047b89fd81eeffb60680a289cf1c5ba335afed40) refactor: move machine status labels into spec
+* [`f990aea`](https://github.com/siderolabs/omni/commit/f990aea20db95502aa0013889168897d34161a98) feat: do not allow setting config patch fields which are owned by Omni
+* [`7d9258f`](https://github.com/siderolabs/omni/commit/7d9258ff3b48582111487e114b7fffe098d38464) fix: fix incorrect yaml multiline string decoding in ClusterMachineSpec
+* [`0b5b095`](https://github.com/siderolabs/omni/commit/0b5b0959c80beccc5eb5d062cf5158f8577edc0d) fix: prevent etcd audit from removing valid members
+* [`82fe21b`](https://github.com/siderolabs/omni/commit/82fe21be7169a29f70b8c3425716082696dc770e) fix: label generated patches with `system-patch` label
+* [`4c2ce26`](https://github.com/siderolabs/omni/commit/4c2ce26a28b57911b0489de6d7ba99ab8ebdbb77) fix: enhance watch to accept a single `Ref` value
+* [`ef78843`](https://github.com/siderolabs/omni/commit/ef788432b6a3f3c2a40875fef65650e177a1adcd) feat: implement `Machine` level config patch editor
+* [`8144d44`](https://github.com/siderolabs/omni/commit/8144d44f9f0974a94cdab257c5803367581d4db3) fix: encode image download URL when signing & slugify file names
+* [`75ea9e6`](https://github.com/siderolabs/omni/commit/75ea9e6b60134981f3776f3b250678113f19dc63) refactor: rewrite generic ClusterMachineStatusController
+* [`5dba725`](https://github.com/siderolabs/omni/commit/5dba725ed040cb0cde35ec9295c6e99db4cb9d6a) feat: add ability to download admin talosconfig in debug mode
+* [`5baa939`](https://github.com/siderolabs/omni/commit/5baa939b8db3d3069960ff896ac77349ba63f172) refactor: `kubernetes.Runtime` to cache clients and configs
+
+
+
+### Changes from siderolabs/crypto
+28 commits
+
+
+* [`c03ff58`](https://github.com/siderolabs/crypto/commit/c03ff58af5051acb9b56e08377200324a3ea1d5e) feat: add a way to represent redacted x509 private keys
+* [`c3225ee`](https://github.com/siderolabs/crypto/commit/c3225eee603a8d1218c67e1bfe33ddde7953ed74) feat: allow CSR template subject field to be overridden
+* [`8570669`](https://github.com/siderolabs/crypto/commit/85706698dac8cddd0e9f41006bed059347d2ea26) chore: rename to siderolabs/crypto
+* [`e9df1b8`](https://github.com/siderolabs/crypto/commit/e9df1b8ca74c6efdc7f72191e5d2613830162fd5) feat: add support for generating keys from RSA-SHA256 CAs
+* [`510b0d2`](https://github.com/siderolabs/crypto/commit/510b0d2753a89170d0c0f60e052a66484997a5b2) chore: add json tags
+* [`6fa2d93`](https://github.com/siderolabs/crypto/commit/6fa2d93d0382299d5471e0de8e831c923398aaa8) fix: deepcopy nil fields as `nil`
+* [`9a63cba`](https://github.com/siderolabs/crypto/commit/9a63cba8dabd278f3080fa8c160613efc48c43f8) fix: add back support for generating ECDSA keys with P-256 and SHA512
+* [`893bc66`](https://github.com/siderolabs/crypto/commit/893bc66e4716a4cb7d1d5e66b5660ffc01f22823) fix: use SHA256 for ECDSA-P256
+* [`deec8d4`](https://github.com/siderolabs/crypto/commit/deec8d47700e10e3ea813bdce01377bd93c83367) chore: implement DeepCopy methods for PEMEncoded* types
+* [`d3cb772`](https://github.com/siderolabs/crypto/commit/d3cb77220384b3a3119a6f3ddb1340bbc811f1d1) feat: make possible to change KeyUsage
+* [`6bc5bb5`](https://github.com/siderolabs/crypto/commit/6bc5bb50c52767296a1b1cab6580e3fcf1358f34) chore: remove unused argument
+* [`cd18ef6`](https://github.com/siderolabs/crypto/commit/cd18ef62eb9f65d8b6730a2eb73e47e629949e1b) feat: add support for several organizations
+* [`97c888b`](https://github.com/siderolabs/crypto/commit/97c888b3924dd5ac70b8d30dd66b4370b5ab1edc) chore: add options to CSR
+* [`7776057`](https://github.com/siderolabs/crypto/commit/7776057f5086157873f62f6a21ec23fa9fd86e05) chore: fix typos
+* [`80df078`](https://github.com/siderolabs/crypto/commit/80df078327030af7e822668405bb4853c512bd7c) chore: remove named result parameters
+* [`15bdd28`](https://github.com/siderolabs/crypto/commit/15bdd282b74ac406ab243853c1b50338a1bc29d0) chore: minor updates
+* [`4f80b97`](https://github.com/siderolabs/crypto/commit/4f80b976b640d773fb025d981bf85bcc8190815b) fix: verify CSR signature before issuing a certificate
+* [`39584f1`](https://github.com/siderolabs/crypto/commit/39584f1b6e54e9966db1f16369092b2215707134) feat: support for key/certificate types RSA, Ed25519, ECDSA
+* [`cf75519`](https://github.com/siderolabs/crypto/commit/cf75519cab82bd1b128ae9b45107c6bb422bd96a) fix: function NewKeyPair should create certificate with proper subject
+* [`751c95a`](https://github.com/siderolabs/crypto/commit/751c95aa9434832a74deb6884cff7c5fd785db0b) feat: add 'PEMEncodedKey' which allows to transport keys in YAML
+* [`562c3b6`](https://github.com/siderolabs/crypto/commit/562c3b66f89866746c0ba47927c55f41afed0f7f) feat: add support for public RSA key in RSAKey
+* [`bda0e9c`](https://github.com/siderolabs/crypto/commit/bda0e9c24e80c658333822e2002e0bc671ac53a3) feat: enable more conversions between encoded and raw versions
+* [`e0dd56a`](https://github.com/siderolabs/crypto/commit/e0dd56ac47456f85c0b247999afa93fb87ebc78b) feat: add NotBefore option for x509 cert creation
+* [`12a4897`](https://github.com/siderolabs/crypto/commit/12a489768a6bb2c13e16e54617139c980f99a658) feat: add support for SPKI fingerprint generation and matching
+* [`d0c3eef`](https://github.com/siderolabs/crypto/commit/d0c3eef149ec9b713e7eca8c35a6214bd0a64bc4) fix: implement NewKeyPair
+* [`196679e`](https://github.com/siderolabs/crypto/commit/196679e9ec77cb709db54879ddeddd4eaafaea01) feat: move `pkg/grpc/tls` from `github.com/talos-systems/talos` as `./tls`
+* [`1ff6242`](https://github.com/siderolabs/crypto/commit/1ff6242c91bb298ceeb4acd65685cba952fe4178) chore: initial version as imported from talos-systems/talos
+* [`835063e`](https://github.com/siderolabs/crypto/commit/835063e055b28a525038b826a6d80cbe76402414) chore: initial commit
+
+
+
+### Changes from siderolabs/gen
+1 commit
+
+
+* [`8e89b1e`](https://github.com/siderolabs/gen/commit/8e89b1ede9f35ff4c18a41ee44a69259181c892b) feat: add GetOrCreate and GetOrCall methods
+
+
+
+### Dependency Changes
+
+* **github.com/cosi-project/runtime** v0.2.0 -> v0.3.0-alpha.1
+* **github.com/grpc-ecosystem/grpc-gateway/v2** v2.13.0 -> v2.14.0
+* **github.com/siderolabs/crypto** c03ff58af505 **_new_**
+* **github.com/siderolabs/gen** v0.4.1 -> v0.4.2
+* **github.com/siderolabs/talos/pkg/machinery** v1.3.0-beta.0 -> 873bd3807c0f
+* **go.uber.org/zap** v1.23.0 -> v1.24.0
+* **golang.org/x/net** v0.2.0 -> v0.4.0
+* **golang.org/x/text** v0.4.0 -> v0.5.0
+
+Previous release can be found at [v0.1.0-beta.0](https://github.com/siderolabs/omni/releases/tag/v0.1.0-beta.0)
+
+## [Omni 0.1.0-beta.0](https://github.com/siderolabs/omni/releases/tag/v0.1.0-beta.0) (2022-12-02)
+
+Welcome to the v0.1.0-beta.0 release of Omni!
+*This is a pre-release of Omni*
+
+
+
+Please try out the release binaries and report any issues at
+https://github.com/siderolabs/omni/issues.
+
+### Contributors
+
+* Artem Chernyshev
+* Andrey Smirnov
+* Artem Chernyshev
+* Dmitriy Matrenichev
+* Utku Ozdemir
+* Philipp Sauter
+* evgeniybryzh
+* Noel Georgi
+* Andrew Rynhard
+* Tim Jones
+* Andrew Rynhard
+* Gerard de Leeuw
+* Steve Francis
+* Volodymyr Mazurets
+
+### Changes
+405 commits
+
+
+* [`e096c88`](https://github.com/siderolabs/omni/commit/e096c887604399028a559e33da13653c1f54965d) chore: add resource operation metrics
+* [`741e820`](https://github.com/siderolabs/omni/commit/741e8202c5aecfe171082c38e2c55e0184e9c80c) feat: implement config patch creation UI
+* [`5def267`](https://github.com/siderolabs/omni/commit/5def26706fa21df7748801cbdab5c6e81543174f) fix: attempt to clean up docker container better
+* [`876ff5e`](https://github.com/siderolabs/omni/commit/876ff5ee44d4193c52e4daeec776ad50b69664f9) feat: update COSI and state-etcd to 0.2.0
+* [`3df410d`](https://github.com/siderolabs/omni/commit/3df410d964fc66b2d4ad8c7db0459108d16adde0) test: refactor and update config patch integration tests
+* [`5eea9e5`](https://github.com/siderolabs/omni/commit/5eea9e50b47a6df324f2fd5564aa9010b56e16e0) feat: add TLS support to siderolink API
+* [`36394ea`](https://github.com/siderolabs/omni/commit/36394ea242f9af4d9c17f90ec143b0356fa9e671) refactor: simplify the resource leak fix
+* [`e5b962b`](https://github.com/siderolabs/omni/commit/e5b962b66f158fd31b74dc6b97f524c168b4fad1) chore: update dev environment
+* [`39bf206`](https://github.com/siderolabs/omni/commit/39bf206eec29262b1c15ed557f7f24e029c61206) fix: save user picture and fullname in the local storage
+* [`f1611c1`](https://github.com/siderolabs/omni/commit/f1611c10d26b937b5bae69a1b9eda67d2bc5e137) feat: add machine level config patch support
+* [`f2e6cf5`](https://github.com/siderolabs/omni/commit/f2e6cf5cddb47aaa290e7db1a037f2155fcd60d2) fix: remove several resource/goroutine leaks
+* [`fc37af3`](https://github.com/siderolabs/omni/commit/fc37af36d87e01c3e9f349f206711f154740e0b4) feat: allow destroying config patches in the UI
+* [`3154d59`](https://github.com/siderolabs/omni/commit/3154d591e7c65713c6940d953df45d8242ae9359) fix: respect SIDEROLINK_DEV_JOIN_TOKEN only in debug mode
+* [`38f5380`](https://github.com/siderolabs/omni/commit/38f53802ab3dda70fedc0a81de9d6dd43e6204f1) feat: avoid deleting all resources on omnictl delete
+* [`28666bc`](https://github.com/siderolabs/omni/commit/28666bcb4acaf6e4f053e99d8d45d5dae320c89c) chore: add support for local development using compose
+* [`cad73ce`](https://github.com/siderolabs/omni/commit/cad73cefc6b187a26e3833089e89ca1cb6fbf843) chore: increase TestEtcdAudit timeout and fix incorrect `Assert()` calls.
+* [`7199b75`](https://github.com/siderolabs/omni/commit/7199b75c2108568d8bee82c42fcc00edb4a22e1c) chore: during `config merge` create config if there was none
+* [`dab54d1`](https://github.com/siderolabs/omni/commit/dab54d14fcd8c0fadc6bb2a49d79e90379234403) chore: increase `TestTalosBackendRoles` reliability
+* [`997cd78`](https://github.com/siderolabs/omni/commit/997cd7823bd126302ed4772658c0791768d67638) feat: add reconfiguring phase to machinesetstatus
+* [`81fb2b9`](https://github.com/siderolabs/omni/commit/81fb2b94e61f7e7aaf41075fe17a2bbfea005d9f) fix: fix button order and vue config
+* [`252fb29`](https://github.com/siderolabs/omni/commit/252fb29d64dac660da08459d9c5acc44e457b034) refactor: simplify backend.Server.Run method
+* [`f335c2f`](https://github.com/siderolabs/omni/commit/f335c2f5311a81ca23699c473b68bf6918430aab) refactor: split watch to `Watch` and `WatchFunc`, add unit tests
+* [`35a7919`](https://github.com/siderolabs/omni/commit/35a79193b965d42fba0a649bef0efe82abbd2fd5) feat: track machine config apply status
+* [`1c54710`](https://github.com/siderolabs/omni/commit/1c54710c6f5ebe2740af27cebfb9c5532b22cc26) fix: use rolling update strategy on control planes
+* [`17ccdc2`](https://github.com/siderolabs/omni/commit/17ccdc2f78693b5d1276b843c027e8057faa2ff7) refactor: various logging fixes
+* [`3c9ca9c`](https://github.com/siderolabs/omni/commit/3c9ca9cd83298c5281c7ced50720b341c10a02f0) fix: update node overview Kubernetes node watch to make it compatible
+* [`e8c2063`](https://github.com/siderolabs/omni/commit/e8c20631501308952bbc596e994a71b7677034b3) fix: enable edit config patches button on the cluster overview page
+* [`6e80521`](https://github.com/siderolabs/omni/commit/6e8052169dd672e6fce5668982b704331eac4645) fix: reset the item list after the watch gets reconnected
+* [`620d197`](https://github.com/siderolabs/omni/commit/620d1977a70bbc2cca8b331db825fc7bdb8fcda3) chore: remove AddContext method from runtime.Runtime interface
+* [`8972ade`](https://github.com/siderolabs/omni/commit/8972ade40dea2bf3bf41bcb865a817d90b37657d) chore: update default version of Talos to v1.2.7
+* [`6a2dde8`](https://github.com/siderolabs/omni/commit/6a2dde863d306986027904167f262d4307a7420d) fix: update the config patch rollout strategy
+* [`fb3f6a3`](https://github.com/siderolabs/omni/commit/fb3f6a340c37d1958e36400edf7ca53e2cde48a7) fix: skip updating config status if applying config caused a reboot
+* [`8776146`](https://github.com/siderolabs/omni/commit/877614606d0c7d0259c4e65e4911f331550dd7d7) fix: apply finalizer to the `Machine` only when CMS is created
+* [`134bb20`](https://github.com/siderolabs/omni/commit/134bb2053ce6250b9b4c647f3b2dbb8255cea2ce) test: fix config patch test with reboot
+* [`d3b6b5a`](https://github.com/siderolabs/omni/commit/d3b6b5a75f9ea5304595851d6160e98ec4c9b8aa) feat: implement config patch viewer and editor
+* [`149efe1`](https://github.com/siderolabs/omni/commit/149efe189a24c07e648289ee81d0b95ed1c972b7) chore: bump runtime and state-etcd modules
+* [`c345b83`](https://github.com/siderolabs/omni/commit/c345b8348412aef59cbd43c35bf06ce3eac5ad3f) chore: output omnictl auth log to stderr
+* [`39b2ba2`](https://github.com/siderolabs/omni/commit/39b2ba2a86972324161c6cff056abf10eb2fce5c) refactor: introduce ClusterEndpoint resource
+* [`6998ff0`](https://github.com/siderolabs/omni/commit/6998ff0803063b22e113da0c72356ee254f13143) fix: treat created and updated events same
+* [`289fe88`](https://github.com/siderolabs/omni/commit/289fe88aba94d6cfe4d7be7472b609232e45cbf6) feat: add omnictl apply
+* [`2f1be3b`](https://github.com/siderolabs/omni/commit/2f1be3b4643e2a66a62da6a7f8f1f1da39ed6e17) chore: fix `TestGenerateJoinToken` test
+* [`3829176`](https://github.com/siderolabs/omni/commit/382917630030415b1a218f14f2a1d6d3595834a0) fix: don't close config patch editor window if config validation fails
+* [`c96f504`](https://github.com/siderolabs/omni/commit/c96f5041be7befb517998fc7bbccd135cb76908d) feat: add suspended mode
+* [`b967bcf`](https://github.com/siderolabs/omni/commit/b967bcfd26b2fccfa6bbb08b8a15eb3796e2e872) feat: add last config apply error to clustermachineconfigstatus
+* [`0395d9d`](https://github.com/siderolabs/omni/commit/0395d9dd7b985802be8f4cd2b8005b409faca3de) test: increase key generation timeout on storage signing test
+* [`577eba4`](https://github.com/siderolabs/omni/commit/577eba4231142fe983f9a0f9b5a81280c377686e) fix: set SideroLink MTU to 1280
+* [`0f32172`](https://github.com/siderolabs/omni/commit/0f32172922ed2f7b8b4b7433fb1f9ce104f3c5a8) fix: minor things in frontend
+* [`9abcc7b`](https://github.com/siderolabs/omni/commit/9abcc7b444c49f6223e0ae4948bff13eedbb05b5) test: add config patching integration tests
+* [`99531fb`](https://github.com/siderolabs/omni/commit/99531fbeee982e2ab87d9f0162a0080308b852ab) refactor: drop unneeded controller inputs
+* [`5172354`](https://github.com/siderolabs/omni/commit/51723541621d91964e88e8a5add834159214dc5b) chore: add omnictl to the generated image
+* [`738cf64`](https://github.com/siderolabs/omni/commit/738cf649f53ec29e88112a027ec72f3d6f0cfff8) fix: set cluster machine version in machine config status correctly
+* [`1d0d220`](https://github.com/siderolabs/omni/commit/1d0d220f47f1cc9ca8b20bfef47004a875b7573c) fix: lower ttl of the issued keys on the FE side by 10 minutes
+* [`2889524`](https://github.com/siderolabs/omni/commit/2889524f222e42d49061867b2b2f5b59a16af4ba) feat: dynamic title
+* [`3d17bd7`](https://github.com/siderolabs/omni/commit/3d17bd7cfd4775292090ccb3fd3c2b575b26d449) chore: fix release CI run
+* [`f2c752f`](https://github.com/siderolabs/omni/commit/f2c752fed627006912018ae3e5f2ff0f2bed60b8) fix: properly proxy watch requests through dev-server
+* [`9a74897`](https://github.com/siderolabs/omni/commit/9a74897d0ce60a51086f5af98c4c4eb71f2b0009) release(v0.1.0-alpha.1): prepare release
+* [`8b284f3`](https://github.com/siderolabs/omni/commit/8b284f3aa26cf8a34452f33807dcc04045e7a098) feat: implement Kubernetes API OIDC proxy and OIDC server
+* [`adad8d0`](https://github.com/siderolabs/omni/commit/adad8d0fe2f3356e97de613104196233a3b98ff5) refactor: rework LoadBalancerConfig/LoadBalancerStatus resources
+* [`08e2cb4`](https://github.com/siderolabs/omni/commit/08e2cb4fd40ec918bf458edd6a5d8e6c86fe5c97) feat: support editing config patches on cluster and machine set levels
+* [`e2197c8`](https://github.com/siderolabs/omni/commit/e2197c83e994afb435671f5af5cdefa843bbddb5) test: e2e testing improvements
+* [`ec9051f`](https://github.com/siderolabs/omni/commit/ec9051f6dfdf1f5acaf3fa6766dc1195b6f6dcdd) fix: config patching
+* [`e2a1d6c`](https://github.com/siderolabs/omni/commit/e2a1d6c78809eaa4168ca5ede433824797a6aa4e) fix: send logs in JSON format by default
+* [`954dd70`](https://github.com/siderolabs/omni/commit/954dd70b935b7c373ba5830fd7ad6e965f6b0da8) chore: replace talos-systems depedencies with siderolabs
+* [`acf94db`](https://github.com/siderolabs/omni/commit/acf94db8ac80fb6f15cc87ff276b7edca0cb8661) chore: add payload logger
+* [`838c716`](https://github.com/siderolabs/omni/commit/838c7168c64f2296a9e01d3ef6ab4feb9f16aeb9) fix: allow time skew on validating the public keys
+* [`dd481d6`](https://github.com/siderolabs/omni/commit/dd481d6cb3620790f6e7a9c8e305defb507cbe5f) fix: refactor runGRPCProxy in router tests to catch listener errors
+* [`e68d010`](https://github.com/siderolabs/omni/commit/e68d010685d4f0a5d25fee671744119cecf6c27b) chore: small fixes
+* [`ad86875`](https://github.com/siderolabs/omni/commit/ad86875ec146e05d7d7f461bf7c8094a8c143df5) feat: minor adjustments on the cluster create page
+* [`e61f194`](https://github.com/siderolabs/omni/commit/e61f1943e965287c79fbaef05760bb0b0deee988) chore: implement debug handlers with controller dependency graphs
+* [`cbbf901`](https://github.com/siderolabs/omni/commit/cbbf901e601d31c777ad2ada0f0036c57020ba96) refactor: use generic TransformController more
+* [`33f9f2c`](https://github.com/siderolabs/omni/commit/33f9f2ce3ec0999198f311ae4bae9b58e57153c9) chore: remove reflect from runtime package
+* [`6586963`](https://github.com/siderolabs/omni/commit/65869636aa33013b5feafb06e727b9d2a4cf1c19) feat: add scopes to users, rework authz & add integration tests
+* [`bb355f5`](https://github.com/siderolabs/omni/commit/bb355f5c659d8c66b825de409d9446767005a2bb) fix: reload the page to init the UI Authenticator on signature fails
+* [`c90cd48`](https://github.com/siderolabs/omni/commit/c90cd48eefa7f29328a456aa5ca474eece17c6fe) chore: log auth context
+* [`d278780`](https://github.com/siderolabs/omni/commit/d2787801a4904fe895996e5319f301a1d7ca76df) fix: update Clusters page UI
+* [`5e77607`](https://github.com/siderolabs/omni/commit/5e776072285e535e93c0458774dcad810b9b857a) tests: abort on first failure
+* [`4c55980`](https://github.com/siderolabs/omni/commit/4c5598083ff6d8763c8763d8e46a3d7b659784ff) chore: get full method name from the service
+* [`2194f43`](https://github.com/siderolabs/omni/commit/2194f4391607e6e73bce1917d2744e78fdd2cebc) feat: redesign cluster list view
+* [`40b3f23`](https://github.com/siderolabs/omni/commit/40b3f23071096987e8a7c6f30a2622c317c190cb) chore: enable gRPC request duration histogram
+* [`0235bb9`](https://github.com/siderolabs/omni/commit/0235bb91a71510cf4d349eedd3625b119c7e4e11) refactor: make sure Talos/Kubernetes versions are defined once
+* [`dd6154a`](https://github.com/siderolabs/omni/commit/dd6154a45d5dcd14870e0aa3f97aa1d4e53bdcfb) chore: add public key pruning
+* [`68908ba`](https://github.com/siderolabs/omni/commit/68908ba330ecd1e285681e24db4b9037eb2e8202) fix: bring back UpgradeInfo API
+* [`f1bc692`](https://github.com/siderolabs/omni/commit/f1bc692c9125f7683fe5f234b03eb3521ba7e773) refactor: drop dependency on Talos Go module
+* [`0e3ef43`](https://github.com/siderolabs/omni/commit/0e3ef43cfed68e53879e6c22b46e7d0568ddc05f) feat: implement talosctl access via Omni
+* [`2b0014f`](https://github.com/siderolabs/omni/commit/2b0014fea15da359217f89ef723965dcc9faa739) fix: provide a way to switch the user on the authenticate page
+* [`e295d7e`](https://github.com/siderolabs/omni/commit/e295d7e2854ac0226e7efda32864f6a687a88470) chore: refactor all controller tests to use assertResource function
+* [`8251dfb`](https://github.com/siderolabs/omni/commit/8251dfb9e44341e9df9471f387cc76c91359cf84) refactor: extract PGP client key handling
+* [`02da9ee`](https://github.com/siderolabs/omni/commit/02da9ee66f15462e6f4d7da18515651a5fde11aa) refactor: use extracted go-api-signature library
+* [`4bc3db4`](https://github.com/siderolabs/omni/commit/4bc3db4dcbc14e0e51c7a3b5257686b671cc2823) fix: drop not working upgrade k8s functional
+* [`17ca75e`](https://github.com/siderolabs/omni/commit/17ca75ef864b7a59f9c6f829de19cc9630a670c0) feat: add 404 page
+* [`8dcde2a`](https://github.com/siderolabs/omni/commit/8dcde2af3ca49d9be16cc705c0b403826f2eee5d) feat: implement logout flow in the frontend
+* [`ba766b9`](https://github.com/siderolabs/omni/commit/ba766b9922302b9d1f279b74caf94e6ca727f86f) fix: make `omnictl` correctly re-auth on invalid key
+* [`fd16f87`](https://github.com/siderolabs/omni/commit/fd16f8743d3843e8ec6735a7c2e96532694b876e) fix: don't set timeout on watch gRPC requests
+* [`8dc3cc6`](https://github.com/siderolabs/omni/commit/8dc3cc682e5419c3824c6e740a32085c386b8817) fix: don't use `omni` in external names
+* [`2513661`](https://github.com/siderolabs/omni/commit/2513661578574255ca3f736d3dfa1f307f5d43b6) fix: reset `Error` field of the `MachineSetStatus`
+* [`b611e99`](https://github.com/siderolabs/omni/commit/b611e99e14a7e2ebc64c55ed5c95a47e17d6ac32) fix: properly handle `Forbidden` errors on the authentication page
+* [`8525502`](https://github.com/siderolabs/omni/commit/8525502265b10dc3cc056d301785f6f60e4f7e22) fix: stop runners properly and clean up StatusMachineSnapshot
+* [`ab0190d`](https://github.com/siderolabs/omni/commit/ab0190d9a41b830daf60173b998acdbcbbdd3754) feat: implement scopes and enforce authorization
+* [`9198d96`](https://github.com/siderolabs/omni/commit/9198d96ea9d57bb5949c59350aec42b2ce13ebac) feat: sign gRPC requests on the frontend to enable Authentication flow
+* [`bdd8f21`](https://github.com/siderolabs/omni/commit/bdd8f216a9eca7ec657fa0dc554e663743f058d1) chore: remove reset button and fix padding
+* [`362db57`](https://github.com/siderolabs/omni/commit/362db570349b4a2659f746ce18a436d684481ecb) fix: gRPC verifier should verify against original JSON payload
+* [`30186b8`](https://github.com/siderolabs/omni/commit/30186b8cfe2eea6eaade8bacf31114886d3da3ea) fix: omnictl ignoring omniconfig argument
+* [`e8ab0ba`](https://github.com/siderolabs/omni/commit/e8ab0ba45648b8f521500b46fe032797da6a111f) fix: do not attempt to execute failed integration test again
+* [`9fda25e`](https://github.com/siderolabs/omni/commit/9fda25ef45f0060cc6c3ec812f5fa1c7b1015801) chore: add more info on errors to different controllers
+* [`ccda526`](https://github.com/siderolabs/omni/commit/ccda5260c4645b5929724574a9f856eeaa4c232f) chore: bump grpc version
+* [`b1ac125`](https://github.com/siderolabs/omni/commit/b1ac1255da5ca4b5d9c409e27c51e4298275e73c) chore: emit log when we got machine status event.
+* [`005d257`](https://github.com/siderolabs/omni/commit/005d257c25c745b61e5a25c39167d511710562c7) chore: set admin role specifically for Reboot request.
+* [`27f0e30`](https://github.com/siderolabs/omni/commit/27f0e309cec76a454e5bb24c2df1e62d9e4718e0) chore: update deps
+* [`77f0219`](https://github.com/siderolabs/omni/commit/77f02198c1e7fb215548f3a0e2be30a0e19aaf6d) test: more unit-tests for auth components
+* [`0bf6ddf`](https://github.com/siderolabs/omni/commit/0bf6ddfa46e0ea6ad255ede00a600c390344e221) fix: pass through HTTP request if auth is disabled
+* [`4f3a67b`](https://github.com/siderolabs/omni/commit/4f3a67b08e03a1bad65c2acb8d65f0281fdd2f9e) fix: unit-tests for auth package and fixes
+* [`e3390cb`](https://github.com/siderolabs/omni/commit/e3390cbbac1d0e78b72512c6ebb64a8f53dcde17) chore: rename arges-theila to omni
+* [`14d2614`](https://github.com/siderolabs/omni/commit/14d2614538ec696d468a0850bd4ee7bc6884c3b1) chore: allow slashes in secretPath
+* [`e423edc`](https://github.com/siderolabs/omni/commit/e423edc072714e7f693249b60079f5f700cc0a65) fix: add unit-tests for auth message and fix issues
+* [`b5cfa1a`](https://github.com/siderolabs/omni/commit/b5cfa1a84e93b6bbf5533c599917f293fc5cdf66) feat: add vault client
+* [`b47791c`](https://github.com/siderolabs/omni/commit/b47791ce303cbb9a8aab279685d17f92a480c7f4) feat: sign grpc requests on cli with pgp key & verify it on server
+* [`d6ef4d9`](https://github.com/siderolabs/omni/commit/d6ef4d9c36758cb0091e2c528b848952f312941a) feat: split account ID and name
+* [`e412e1a`](https://github.com/siderolabs/omni/commit/e412e1a69edad0d19d7e46fa3aa076dcb8e6d4b6) chore: workaround the bind problem
+* [`e23cc59`](https://github.com/siderolabs/omni/commit/e23cc59bb8cb8f9df81738d4c58aed08d80fa9c4) chore: bump minimum Talos version to v1.2.4
+* [`0638a29`](https://github.com/siderolabs/omni/commit/0638a29d78c092641573aa2b8d2e594a7ff6aab4) feat: stop using websockets
+* [`8f3c19d`](https://github.com/siderolabs/omni/commit/8f3c19d0f0ecfbe5beabc7dc508dcafa720e83e2) feat: update install media to be identifiable
+* [`70d1e35`](https://github.com/siderolabs/omni/commit/70d1e354466618bb07c13445a16ca639be12009e) feat: implement resource encryption
+* [`7653638`](https://github.com/siderolabs/omni/commit/76536386499889994b65f66a8a40f18b5535c5ba) fix: fix NPE in integration tests
+* [`e39849f`](https://github.com/siderolabs/omni/commit/e39849f4047f028251123781bd8be350ebbfd65d) chore: update Makefile and Dockerfile with kres
+* [`4709473`](https://github.com/siderolabs/omni/commit/4709473ec20fbf92a3240fb3376a322f1321103a) fix: return an error if external etcd client fails to be built
+* [`5366661`](https://github.com/siderolabs/omni/commit/536666140556ba9b997a2b5d4441ea4b5f42d1c5) refactor: use generic transform controller
+* [`a2a5f16`](https://github.com/siderolabs/omni/commit/a2a5f167f21df6375767d018981651d60bb2f768) feat: limit access to Talos API via Omni to `os:reader`
+* [`e254201`](https://github.com/siderolabs/omni/commit/e2542013938991faa8f1c521fc524b8fcf31ea34) feat: merge internal/external states into one
+* [`3258ca4`](https://github.com/siderolabs/omni/commit/3258ca487c818a34924f138640f44a2e51d307fb) feat: add `ControlPlaneStatus` controller
+* [`1c0f286`](https://github.com/siderolabs/omni/commit/1c0f286a28f5134333130708d031dbfa11051a42) refactor: use `MachineStatus` Talos resource
+* [`0a6b19f`](https://github.com/siderolabs/omni/commit/0a6b19fb916ea301a8f5f6ccd9bbdaa7cb4c39e0) chore: drop support for Talos resource API
+* [`ee5f6d5`](https://github.com/siderolabs/omni/commit/ee5f6d58a2b22a87930d3c8bb9963f71c92f3908) feat: add auth resource types & implement CLI auth
+* [`36736e1`](https://github.com/siderolabs/omni/commit/36736e14e5c837d38568a473834d14073b88a153) fix: use correct protobuf URL for cosi resource spec
+* [`b98c56d`](https://github.com/siderolabs/omni/commit/b98c56dafe33beef7792bd861ac4e637fe13c494) feat: bump minimum version for Talos to v1.2.3
+* [`b93bc9c`](https://github.com/siderolabs/omni/commit/b93bc9cd913b017c66502d96d99c52e4d971e231) chore: move containers and optional package to the separate module
+* [`e1af4d8`](https://github.com/siderolabs/omni/commit/e1af4d8a0bee31721d8946ef452afe04da6b494d) chore: update COSI to v0.2.0-alpha.1
+* [`788dd37`](https://github.com/siderolabs/omni/commit/788dd37c0be32745547ee8268aa0f004041dc96f) feat: implement and enable by default etcd backend
+* [`1b83038`](https://github.com/siderolabs/omni/commit/1b83038b77cab87ffc2d4d73a91582785ed446ef) release(v0.1.0-alpha.0): prepare release
+* [`8a9c4f1`](https://github.com/siderolabs/omni/commit/8a9c4f17ed6ee0d8e4a51b466d60a8278cd50f9c) feat: implement CLI configuration file (omniconfig)
+* [`b0c92d5`](https://github.com/siderolabs/omni/commit/b0c92d56da00529c106f042399c1163375046785) feat: implement etcd audit controller
+* [`0e993a0`](https://github.com/siderolabs/omni/commit/0e993a0977c711fb8767e3de2ad828fd5b9e688f) feat: properly support scaling down the cluster
+* [`264cdc9`](https://github.com/siderolabs/omni/commit/264cdc9e015fd87724c7a07128d1136153732540) refactor: prepare for etcd backend integration
+* [`b519d17`](https://github.com/siderolabs/omni/commit/b519d17971bb1c919286813b4c2465c2f5803a03) feat: show version in the UI
+* [`a2fb539`](https://github.com/siderolabs/omni/commit/a2fb5397f9efb22a1354c5675180ca49537bee55) feat: keep track of loadbalancer health in the controller
+* [`4789c62`](https://github.com/siderolabs/omni/commit/4789c62af0d1694d8d0a492cd6fb7d436e213fe5) feat: implement a new controller that can gather cluster machine data
+* [`bd3712e`](https://github.com/siderolabs/omni/commit/bd3712e13491ede4610ab1452ae85bde6d92b2db) fix: populate machine label field in the patches created by the UI
+* [`ba70b4a`](https://github.com/siderolabs/omni/commit/ba70b4a48623939d31775935bd0338c0d60ab65b) fix: rename to Omni, fix workers scale up, hide join token
+* [`47b45c1`](https://github.com/siderolabs/omni/commit/47b45c129160821576d808d9a46a9ec5d14c6469) fix: correct filenames for Digital Ocean images
+* [`9d217cf`](https://github.com/siderolabs/omni/commit/9d217cf16d432c5194110ae16a566b44b02a567e) feat: introduce new resources, deprecate `ClusterMachineTemplate`
+* [`aee153b`](https://github.com/siderolabs/omni/commit/aee153bedb2f7856913a54b282603b07bf20059b) fix: address style issue in the Pods paginator
+* [`752dd44`](https://github.com/siderolabs/omni/commit/752dd44ac42c95c644cad5640f6b2c5536a29676) chore: update Talos machinery to 1.2.0 and use client config struct
+* [`88d7079`](https://github.com/siderolabs/omni/commit/88d7079a6656605a1a8dfed56d392414583a283e) fix: regenerate sources from proto files that were rolled back.
+* [`84062c5`](https://github.com/siderolabs/omni/commit/84062c53417197417ff636a667289342089f390c) chore: update Talos to the latest master
+* [`5a139e4`](https://github.com/siderolabs/omni/commit/5a139e473abcdf7fd25ad7c61dad8cbdc964a453) fix: properly route theila internal requests in the gRPC proxy
+* [`4be4fb6`](https://github.com/siderolabs/omni/commit/4be4fb6a4e0bca29b32e1b732c227c9e7a0b1f43) feat: add support for 'talosconfig' generation
+* [`9235b8b`](https://github.com/siderolabs/omni/commit/9235b8b522d4bc0712012425b68ff89e455886b9) fix: properly layer gRPC proxies
+* [`9a516cc`](https://github.com/siderolabs/omni/commit/9a516ccb5c892ed8fe41f7cf69aaa5bb1d3fa471) fix: wait for selector of 'View All' to render in e2e tests.
+* [`3cf3aa7`](https://github.com/siderolabs/omni/commit/3cf3aa730e7833c0c1abe42a6afb87a85f14b58c) fix: some unhandled errors in the e2e tests.
+* [`c32c7d5`](https://github.com/siderolabs/omni/commit/c32c7d55c92007aa1aa10feab3c7a7de2b2afc42) fix: ignore updating cluster machines statuses without machine statuses
+* [`4cfa307`](https://github.com/siderolabs/omni/commit/4cfa307b85b410b44e482b259d14670b55e4a237) chore: run rekres, fix lint errors and bump Go to 1.19
+* [`eb2d449`](https://github.com/siderolabs/omni/commit/eb2d4499f1a3da7bc1552a6b099c28bed6fd0e4d) fix: skip the machines in `tearingDown` phase in the controller
+* [`9ebc769`](https://github.com/siderolabs/omni/commit/9ebc769b89a2bab37fd081e555f84e3e4c99187e) fix: allow all services to be proxied by gRPC router
+* [`ea2b01d`](https://github.com/siderolabs/omni/commit/ea2b01d0a0e054b259d710317fe368882534cf4c) fix: properly handle non empty resource id in the K8s resource watch
+* [`3bb7da3`](https://github.com/siderolabs/omni/commit/3bb7da3a0fa6b746f6a7b9aa668e055bdf825e6a) feat: show a Cluster column in the Machine section
+* [`8beb70b`](https://github.com/siderolabs/omni/commit/8beb70b7f045a218f9cb753e1402a07542b0bf1c) fix: ignore tearing down clusters in the `Cluster` migrations
+* [`319d4e7`](https://github.com/siderolabs/omni/commit/319d4e7947cb78135f5a14c02afe5814c56a312c) fix: properly handle `null` memory modules list
+* [`6c2120b`](https://github.com/siderolabs/omni/commit/6c2120b5ae2bd947f473d002dfe165646032e811) chore: introduce migrations manager for COSI DB state
+* [`ec52139`](https://github.com/siderolabs/omni/commit/ec521397946cc15929472feb7c45435fb48df848) fix: filter out invalid memory modules info coming from Talos nodes
+* [`8e87031`](https://github.com/siderolabs/omni/commit/8e870313a3a31d052eecf81acb522433ff98ae79) fix: bump loadbalancer timeout settings
+* [`bc0ed26`](https://github.com/siderolabs/omni/commit/bc0ed2672064a6bf148cd9799b35a2790f5aa7f6) feat: introduce websocket, HTTP requests monitoring
+* [`857401f`](https://github.com/siderolabs/omni/commit/857401f54e3922a9ab85d7dc703a5afb70c6ee45) feat: add HTTP logging (static, gateway), and websocket logging
+* [`eb612a3`](https://github.com/siderolabs/omni/commit/eb612a38e9c71913ebecc9f345e17844d60800b8) fix: do hard stop of events sink gRPC server after 5 seconds
+* [`3162513`](https://github.com/siderolabs/omni/commit/31625135e2b971d6b9f92eb4096c010113030a80) fix: populate nodes filter dropdown properly and rewrite filter function
+* [`5713a51`](https://github.com/siderolabs/omni/commit/5713a516391a5190fac9b7044a9f71952ce15479) fix: make `TSelectList` search filter the items in the dropdown
+* [`f2519ff`](https://github.com/siderolabs/omni/commit/f2519ff51b88766a907f1d7717ef74031157fd56) feat: don't allow using nodes with not enough mem for the cluster
+* [`9e474d6`](https://github.com/siderolabs/omni/commit/9e474d69c76a898fc5b6fcd9fdc8e87f25b7dc53) feat: show disconnected warning in the machines list
+* [`fa52b48`](https://github.com/siderolabs/omni/commit/fa52b48f54362c7305681ca79a7d98237531f2b4) feat: redesign Installation Media selection menu
+* [`01e301a`](https://github.com/siderolabs/omni/commit/01e301a875699cf6fcc887cb31cd7939338f58e9) fix: query node list using `talosctl get members` instead of K8s nodes
+* [`e694df5`](https://github.com/siderolabs/omni/commit/e694df59c50fbee356a48c94ade95e924ea46bb2) fix: display all available Talos versions on cluster create page
+* [`7a87525`](https://github.com/siderolabs/omni/commit/7a87525ed1b928a8f8e3e6a39feb4c19009ec264) fix: use `v-model` instead of callbacks in the inputs
+* [`d681f5f`](https://github.com/siderolabs/omni/commit/d681f5f58788612f144fa1f8d90ec6c996badb0e) feat: support scaling up the clusters
+* [`e992b95`](https://github.com/siderolabs/omni/commit/e992b9574d7b8f76497f46e25764618ec274af1a) feat: show notification on image download progress
+* [`8ea6d9f`](https://github.com/siderolabs/omni/commit/8ea6d9f1724b271919e538ed55ff6582858470f9) fix: probably fix 'context canceled' on image download
+* [`692612b`](https://github.com/siderolabs/omni/commit/692612b7e628588fa7608cff683c5af406f24ca7) fix: improve the Talos image generation process
+* [`a69c140`](https://github.com/siderolabs/omni/commit/a69c140e26f4298fcaafb1f96c389269992fc069) feat: introduce Prometheus metrics
+* [`e90ca78`](https://github.com/siderolabs/omni/commit/e90ca7875c501391f860f5df9f2a4e4f8e2f2d7a) fix: make grpc api listen only on siderolink interface
+* [`99fc28c`](https://github.com/siderolabs/omni/commit/99fc28c36c62a8d8c654c05f9b9c64ff37cedba8) fix: display correct cluster/machine status on ui
+* [`eaf7655`](https://github.com/siderolabs/omni/commit/eaf7655395401cd88e6bd47f4f8aa958abee30f1) fix: add a pause before integration tests
+* [`19ff1c9`](https://github.com/siderolabs/omni/commit/19ff1c909bedf63fe6cf2f5cc0e44f34046ca568) chore: rename download button
+* [`e1c4e1b`](https://github.com/siderolabs/omni/commit/e1c4e1b171eab08585a3315ca5838c88a4d2eb24) feat: add download options for all talos images
+* [`24e7863`](https://github.com/siderolabs/omni/commit/24e786369bfc0bb4966712296395db91751e657b) fix: delete cached clients from gRPC proxy when the cluster is destroyed
+* [`58c89ef`](https://github.com/siderolabs/omni/commit/58c89ef3fe621ef6909c5d38a0d47cc861667f45) feat: implement `argesctl delete` command
+* [`3c99b49`](https://github.com/siderolabs/omni/commit/3c99b49a9b680b091d92455a0d3bc325f8f68ca6) test: add a test which removes allocated machine
+* [`75dd28f`](https://github.com/siderolabs/omni/commit/75dd28f56d7ce9a92b96822a867fbfe2655cd0fa) chore: fill in resource definitions for table headers
+* [`028f168`](https://github.com/siderolabs/omni/commit/028f16886c41b7aa7eafb65308cc4adf4d624037) feat: End-to-end tests with playwright
+* [`6be6b36`](https://github.com/siderolabs/omni/commit/6be6b3605583ce8e8068746624ca86ed6adc37af) chore: bump goimports from 0.1.10 to 0.1.11 and node from 18.5.0 to 18.6.0
+* [`af4da08`](https://github.com/siderolabs/omni/commit/af4da086d4b709f504eda7909a36a8f0cf84e480) test: implement kernel log streaming test
+* [`1eacfee`](https://github.com/siderolabs/omni/commit/1eacfee2c1084040ae2201eba957409218a92c66) feat: implement argesctl machine-logs output in 'zap-like' and 'dmesg' form.
+* [`96ab7ab`](https://github.com/siderolabs/omni/commit/96ab7ab8317898dd45d129d5cecd2aaf1d379fba) chore: ignore memory modules with zero size
+* [`fd0575f`](https://github.com/siderolabs/omni/commit/fd0575ff4050702c9d07e34c7d9d5596b4ad7311) chore: retrieve k8s versions from github registry
+* [`8651527`](https://github.com/siderolabs/omni/commit/86515275a77741bacc790d2006f3671a5cfb27c6) feat: redo errgroup to return error on first nil error
+* [`944222d`](https://github.com/siderolabs/omni/commit/944222d06607079b5d982afe4b19fc1dda7f1ec2) fix: show ClusterMachineStatus.Stage in 'Clusters' view
+* [`f3f6b6e`](https://github.com/siderolabs/omni/commit/f3f6b6eecd3ffc13b69845dff50d2e8ab31bc0d2) chore: refactor run method and no longer ignore log receiver listener errors
+* [`b316377`](https://github.com/siderolabs/omni/commit/b316377b277f87a184b969b3bbf20ebe6047a0a8) chore: rename 'Dmesg' to 'Console'
+* [`19ee857`](https://github.com/siderolabs/omni/commit/19ee8578a6f1c1bf742699d1b5720dc4c2674c82) test: add a way to recover deleted machines
+* [`e5b5bdc`](https://github.com/siderolabs/omni/commit/e5b5bdc39fa6f3812b15771366f942ddcbe7f328) fix: update SideroLink library for EEXIST fixes
+* [`363de69`](https://github.com/siderolabs/omni/commit/363de69a50b5c1e9d07fa42152cca935844d118b) fix: spec collector equality
+* [`841f3b2`](https://github.com/siderolabs/omni/commit/841f3b22aacc6d2875062ef324d900c5f2091f9d) feat: add ability to supply machine config patches on the machines
+* [`907ca93`](https://github.com/siderolabs/omni/commit/907ca93247267d80125866c2b60225ceca3ada27) test: fix link destroy test
+* [`4c9f99d`](https://github.com/siderolabs/omni/commit/4c9f99d32874cdaff1eb651bf6d74ef39167c273) fix: remove machine status if the machine is in tearing down phase
+* [`d9747e5`](https://github.com/siderolabs/omni/commit/d9747e552e52156a9baeae962a9478231e26c566) fix: make cluster machine status test more reliable
+* [`3bfff3b`](https://github.com/siderolabs/omni/commit/3bfff3bb0eea9d18956dee21aff7f3de900c6b82) fix: do not set up full theila runtime during clients tests
+* [`4bf33bc`](https://github.com/siderolabs/omni/commit/4bf33bc9d37404a733c5039784c80e92800fb3dc) fix: immediately fail the request if the cluster is down
+* [`124a5c2`](https://github.com/siderolabs/omni/commit/124a5c2947978e6bc86d1b19c9eacbcf7f870b53) fix: ensure the created date on resources is set
+* [`14161bf`](https://github.com/siderolabs/omni/commit/14161bf3dad4484868359d186d99d9198b6eed95) feat: add scale up integration test and minor log fixes
+* [`7af06fd`](https://github.com/siderolabs/omni/commit/7af06fd75959eb9e807680ac8a6ba4f0a7f59255) feat: make integration tests a subtests of one global test
+* [`f7c1464`](https://github.com/siderolabs/omni/commit/f7c1464a1002f63daab29b36d19ea16de0cd5794) feat: implement log receiver for logs from Talos
+* [`5b800ea`](https://github.com/siderolabs/omni/commit/5b800ea970215fb4e100ed7b3b73d7e218fd6d86) fix: accumulate bytes received/send in the link resource
+* [`b3b1e9b`](https://github.com/siderolabs/omni/commit/b3b1e9bbfbf62632dc0d8c2239a72793883101ce) feat: machine removal
+* [`fb01bc4`](https://github.com/siderolabs/omni/commit/fb01bc4b26c5b37f15bac923450e1f58fb7a3d89) fix: use Talos 1.2.0
+* [`3a50efe`](https://github.com/siderolabs/omni/commit/3a50efe363c4724f369a02f672848ad7c284847c) feat: filter machines that can be added to cluster
+* [`ba62db5`](https://github.com/siderolabs/omni/commit/ba62db521b47049e92557bf8cfc5f737e496bf57) fix: properly parse `siderolink-api-advertised-url` if there's no port
+* [`96f835a`](https://github.com/siderolabs/omni/commit/96f835a91136f62d9dbdf5c1d1c46c729d57e51e) fix: properly display node selectors in FireFox
+* [`12c20a4`](https://github.com/siderolabs/omni/commit/12c20a42c9dfdea5f88e0e7942fbdb42ea543b95) fix: populate disks when machines are connected during cluster create
+* [`0dc97f8`](https://github.com/siderolabs/omni/commit/0dc97f8696a7c571d5318daf794700342e06f639) fix: adjust overview page to look closer to the mockups
+* [`2b77af8`](https://github.com/siderolabs/omni/commit/2b77af8d39e555970487c3265dfbd63412e90d2f) feat: add the chart showing the count of clusters
+* [`a1dff65`](https://github.com/siderolabs/omni/commit/a1dff6589d64207e6e7331d0407e7857f9c4079d) feat: implement ISO download with embedded kernel args
+* [`37c03d8`](https://github.com/siderolabs/omni/commit/37c03d8cb04b02e79f42e70eeea1e4368445604d) test: pull kubeconfig and interact with Kubernetes API
+* [`75bfb08`](https://github.com/siderolabs/omni/commit/75bfb08f0738fc9f67259caf12902db67860370f) fix: ignore the error on splitting host/port
+* [`3be5a32`](https://github.com/siderolabs/omni/commit/3be5a3254168cddec8f1629789c2ae50d9eaa08e) feat: make the whole cluster list item clickable, add dropdown menu item
+* [`2c9dc99`](https://github.com/siderolabs/omni/commit/2c9dc99000266b3d4c139f27dea4f6283709251e) fix: adjust the look of the Overview page a bit
+* [`aa4a926`](https://github.com/siderolabs/omni/commit/aa4a926cbb85bf63312493b937440a174aed5070) feat: add the button for downloading cluster Kubeconfig on overview page
+* [`4532de6`](https://github.com/siderolabs/omni/commit/4532de6f3d514a534c38a63731c43075698f5c01) feat: support basic auth in `argesctl` command
+* [`b66bb3c`](https://github.com/siderolabs/omni/commit/b66bb3cbcc85d7be4348ecd9a6d5d62f72a90e11) feat: add summary information Overview page
+* [`3bdbce4`](https://github.com/siderolabs/omni/commit/3bdbce41a3ed89a42556d837bc0c5cfe417e22e6) test: more cluster creation tests, two clusters, cleanup
+* [`3b00bd5`](https://github.com/siderolabs/omni/commit/3b00bd5bf417c5c9cb42471d27811c1849a40c78) fix: improve cluster deletion and node reset flow
+* [`2d83d16`](https://github.com/siderolabs/omni/commit/2d83d1694ec73da818004f91ede76a0bca30fe79) test: create a cluster and verify cluster machine statuses
+* [`f471cfd`](https://github.com/siderolabs/omni/commit/f471cfdcf7c9e70f37436e173c3a58c1965e8bb2) fix: copy all labels from the `ClusterMachine` to `ClusterMachineStatus`
+* [`ec32f86`](https://github.com/siderolabs/omni/commit/ec32f8632db104efd6fedc5421179175274d6339) test: add integration tests up to the cluster creation
+* [`a8d3ee5`](https://github.com/siderolabs/omni/commit/a8d3ee5b14a57ad1d9d88512a95032bbda61e734) feat: add kubeconfig command to argesctl and fix kubeconfig
+* [`10b9a3b`](https://github.com/siderolabs/omni/commit/10b9a3ba676a636e488805ed04a0c908c3d2cf53) test: implement API integration test
+* [`3e6b891`](https://github.com/siderolabs/omni/commit/3e6b8913f916dc5e8ac3ef49e14648defa6e1bf6) feat: aggregate cluster machine statuses in cluster status controller
+* [`f6cbc58`](https://github.com/siderolabs/omni/commit/f6cbc58a91124833f0cbae4ecd0c0416acbe8bfa) chore: ignore empty processor info
+* [`c5fc71b`](https://github.com/siderolabs/omni/commit/c5fc71b86a5492d548ae9098c5c74de240ebd800) fix: clean up Kubernetes client and configs when a cluster is destroyed
+* [`e8478fe`](https://github.com/siderolabs/omni/commit/e8478fe5280d5e8a32bb423ec96edacadabc7e43) fix: properly use tracker to cleanup `ClusterMachineConfig` resources
+* [`044fcad`](https://github.com/siderolabs/omni/commit/044fcadb66de61742ab871d10f3fcf0f453f6e27) fix: make `MachineStatusController` connect to configured nodes
+* [`2867099`](https://github.com/siderolabs/omni/commit/2867099a52d651c3b0f9d3abbae266f2792cafe7) feat: add api endpoint to fetch kubeconfig
+* [`5f32667`](https://github.com/siderolabs/omni/commit/5f3266747012b590dd7a7d0ebc23ee0e80abb2ab) test: support registry mirrors for development purposes
+* [`5114695`](https://github.com/siderolabs/omni/commit/5114695cfeb0b6c792002ff5f0f31c1944c269ab) refactor: consistent flag naming
+* [`9ffb19e`](https://github.com/siderolabs/omni/commit/9ffb19e77968c6e411903a2c59fd9a18063b46d4) chore: use latest node
+* [`5512321`](https://github.com/siderolabs/omni/commit/5512321f05b6b657a28abc25470664f6eb6e3d0a) refactor: set better defaults for cli args
+* [`ff88242`](https://github.com/siderolabs/omni/commit/ff882427f56e42039b79900380b61b86d3290269) chore: mark 'siderolink-wireguard-endpoint' flags as required
+* [`4a9d9ad`](https://github.com/siderolabs/omni/commit/4a9d9adef1e521d3c0293b6dc414f572bd8a93d4) feat: add the ClusterMachineStatus resource
+* [`e4e8b62`](https://github.com/siderolabs/omni/commit/e4e8b6264cb48edd014f97129f52aefaa129fd63) refactor: unify all Arges API under a single HTTP server
+* [`5af9049`](https://github.com/siderolabs/omni/commit/5af9049bdc2e09bf410e1b0646e4e08a4366f33b) chore: rename sidebar item
+* [`a4fc47f`](https://github.com/siderolabs/omni/commit/a4fc47f97d79259532b91a8d391e84b59554ed8e) chore: fix build warning
+* [`547b83c`](https://github.com/siderolabs/omni/commit/547b83c4a2a543d5b6ce4dca6cf6f5de87c33dcb) chore: bump siderolink version
+* [`11c31f3`](https://github.com/siderolabs/omni/commit/11c31f39d834e3352b086c1aec665065fd74e944) refactor: drop one of the layered gRPC servers
+* [`0adbbb7`](https://github.com/siderolabs/omni/commit/0adbbb7edfeacedd98a7e84c2f45ac458750a281) feat: introduce a way to copy kernel arguments from the UI
+* [`ce5422a`](https://github.com/siderolabs/omni/commit/ce5422a27771a94cc25be70ec756711d140b2758) fix: import new COSI library to fix YAML marshaling
+* [`d6cec09`](https://github.com/siderolabs/omni/commit/d6cec099cb6f4c3118e4263b9517176858bb9cfb) feat: implement Arges API client, and minimal `argesctl`
+* [`65c8d68`](https://github.com/siderolabs/omni/commit/65c8d683187d82dc730752294c1bc03657f5df78) feat: implement cluster creation view
+* [`8365b00`](https://github.com/siderolabs/omni/commit/8365b00df90ac55f99e0f82e1fa6d4367ebd6a3f) feat: re-enable old Theila UI
+* [`63e703c`](https://github.com/siderolabs/omni/commit/63e703c4e1dfb4bf645fbc9cd28ba2a722e04dc2) fix: update Talos to the latest master
+* [`d33e27b`](https://github.com/siderolabs/omni/commit/d33e27b49113729c5538fce688832152ff96a7ea) feat: implement clusters list view
+* [`cb9e23c`](https://github.com/siderolabs/omni/commit/cb9e23ca6f420ac7b71acf6b19e9012265f3c69b) feat: protect Theila state from external API access
+* [`952c235`](https://github.com/siderolabs/omni/commit/952c2359b32fdd077d85e312707f8b9c9e01ea0c) fix: properly allocated ports in the loadbalancer
+* [`a58c479`](https://github.com/siderolabs/omni/commit/a58c479e9e31f70e806a1f3482b9b984c5c0ca68) chore: report siderolink events kernel arg
+* [`8a56fe3`](https://github.com/siderolabs/omni/commit/8a56fe34ce1966fe28f9e432c696fdd779dfb638) refactor: move Theila resources to public `pkg/`
+* [`1251699`](https://github.com/siderolabs/omni/commit/12516996eda859db6677403ad1f72a3994ea180b) fix: reset the `MachineEventsSnapshot` after the node is reset
+* [`9a2e6af`](https://github.com/siderolabs/omni/commit/9a2e6af3113b795f57c4e3a86c1348b120fa3bbd) feat: implement bootstrap controller
+* [`7107e27`](https://github.com/siderolabs/omni/commit/7107e27ee6b9ba644fc803e4463cbfcf26cf97de) feat: implement apply and reset config controller
+* [`1579eb0`](https://github.com/siderolabs/omni/commit/1579eb09eb58f2cb679205e9e204369f3a362e07) feat: implement machine events handler and `ClusterStatus`
+* [`7214f4a`](https://github.com/siderolabs/omni/commit/7214f4a514a921d6b9df7515116613996416f383) feat: implement cluster load balancer controller
+* [`9c4fafa`](https://github.com/siderolabs/omni/commit/9c4fafaf6b8dc9b7ff08fe28704ca6a2e7efc097) feat: add a controller that manages load balancers for talos clusters
+* [`7e3d80c`](https://github.com/siderolabs/omni/commit/7e3d80ce956d621ed79e4db094808831e18db85b) feat: add a resources that specify configurations for load balancers
+* [`dc0d356`](https://github.com/siderolabs/omni/commit/dc0d356a181b4c37670d2ed4e8d7af370dccef60) feat: support Theila runtime watch with label selectors
+* [`6a568a7`](https://github.com/siderolabs/omni/commit/6a568a72922e34e91f5448d3c1caa2f0b3a02e96) feat: implement `ClusterMachineConfig` resource and it's controller
+* [`3db0f1c`](https://github.com/siderolabs/omni/commit/3db0f1c9d4e2d6f962b6f3216a4f9c7e2575dd21) feat: implement `TalosConfig` controller
+* [`b7ae8e1`](https://github.com/siderolabs/omni/commit/b7ae8e113dc68acd87c4cfe5e3c8349d32bc392d) feat: introduce `Cluster` controller that adds finalizers on Clusters
+* [`8d7ea02`](https://github.com/siderolabs/omni/commit/8d7ea0293e8f57388fd483dc82e79e6b4c76a53f) chore: use label selectors in `TalosConfig`, set labels on the resources
+* [`cff9cb1`](https://github.com/siderolabs/omni/commit/cff9cb19ba8718fdad509b5e91cb8221c6c1ff00) fix: separate advertised endpoint from the actual wireguard endpoint
+* [`5be6cc3`](https://github.com/siderolabs/omni/commit/5be6cc391adf8bcb58b8d47f09dad5aa75d1ad98) feat: implement cluster creation UI
+* [`a1633eb`](https://github.com/siderolabs/omni/commit/a1633eb18772b9e99d687dfddd12fc09fd1ea5c4) chore: add typed wrappers around State, Reader and Writer
+* [`5515f3d`](https://github.com/siderolabs/omni/commit/5515f3d004f54455a1eb1f4977bbb9d663fd1bca) feat: add `ClusterSecrets` resource and controller and tests
+* [`7226f6c`](https://github.com/siderolabs/omni/commit/7226f6cdc60eeb4d6040d1aa0711fed378c50b33) feat: add `Cluster`, `ClusterMachine` and `TalosConfig` resources
+* [`ec44930`](https://github.com/siderolabs/omni/commit/ec44930672ca8954c6ba68975c1799a087ec0c43) feat: enable vtprotobuf optimized marshaling
+* [`15be219`](https://github.com/siderolabs/omni/commit/15be2198872fb637f7ba2e1ff550e4466179f2b1) feat: generate TS constants from go `//tsgen:` comments
+* [`caa4c4d`](https://github.com/siderolabs/omni/commit/caa4c4d285dcd1176a70d87f28ee303cd0483ca8) fix: resource equality for proto specs
+* [`beeca88`](https://github.com/siderolabs/omni/commit/beeca886213332f313f7f3a477d7e7c508e6d058) refactor: clarify code that creates or gets links for nodes
+* [`340c63a`](https://github.com/siderolabs/omni/commit/340c63ad4ba918d4b11ab1f57fdbd3b5e5d8b3dc) feat: implement `Machines` page
+* [`f7bc0c6`](https://github.com/siderolabs/omni/commit/f7bc0c69c69fe515cfa729bc062c730756a53019) feat: accept nodes if they provide the correct join token
+* [`bdf789a`](https://github.com/siderolabs/omni/commit/bdf789a35da5491a4fcbd2af35a1c6efd22ab1fc) feat: immediately reconnect SideroLink peers after Arges restart
+* [`6b74fa8`](https://github.com/siderolabs/omni/commit/6b74fa82ca5757d6f3809853c1ac3e7754efb06d) feat: implement MachineStatusController
+* [`f5db0e0`](https://github.com/siderolabs/omni/commit/f5db0e05a87d5c11b4a1029b14020b19ca67035d) feat: add more info to the siderolink connection spec
+* [`d3e4a71`](https://github.com/siderolabs/omni/commit/d3e4a71af8fd79328e4edda6d9642b83902b2003) refactor: simplify the usage of gRPC resource CRUD API
+* [`2430115`](https://github.com/siderolabs/omni/commit/2430115af1aaac4226b7d5821e1fe706a1088501) feat: implement MachineController and small fixes
+* [`e31d22d`](https://github.com/siderolabs/omni/commit/e31d22d7639753df53c130461ae1f96b9126f3a5) feat: support running Theila without contexts
+* [`a6b3646`](https://github.com/siderolabs/omni/commit/a6b364626bd808687d5ad95307766344b16dd042) refactor: small fixes
+* [`33d2b59`](https://github.com/siderolabs/omni/commit/33d2b59c202f03785580209c885aa297c023fa60) refactor: clean up a bit SideroLink code, fix shutdown
+* [`98ec883`](https://github.com/siderolabs/omni/commit/98ec8830308755c7073a5d4510483e97d8e1d02d) chore: rename main executable to avoid clashing with Theila project
+* [`828721d`](https://github.com/siderolabs/omni/commit/828721d9aa5d912cce628256f75579309d1ad67d) feat: enable COSI persistence for resources
+* [`f1f7883`](https://github.com/siderolabs/omni/commit/f1f788344254e18bcab00a25b56a86289bfb1638) feat: set up siderolink endpoints in Theila
+* [`6439335`](https://github.com/siderolabs/omni/commit/64393353ca7cf430f82bfe73a004da319da28261) refactor: migrate to `typed.Resource` in Theila internal state
+* [`6195274`](https://github.com/siderolabs/omni/commit/61952742a47ea89e89228f057d0d3de351766150) refactor: restructure folders in the project
+* [`1abf72b`](https://github.com/siderolabs/omni/commit/1abf72b4b2e382fe0cf9302b42242152c255a3ee) chore: update Talos libs to the latest version
+* [`16dffd9`](https://github.com/siderolabs/omni/commit/16dffd9058570477b3a648896a89e6445e5b0162) fix: display delta time for pod's age
+* [`8b80726`](https://github.com/siderolabs/omni/commit/8b807262b23cfa830f3ff444d49f11b3a1654703) feat: update favicon to sidero logo
+* [`2da7378`](https://github.com/siderolabs/omni/commit/2da737841c2ae0bf1f1f916dc6f45b1e3996d6e4) feat: show the extended hardware info
+* [`d3c6004`](https://github.com/siderolabs/omni/commit/d3c6004f9767bf0cff9191dc130308c848ede077) chore: allow getting resources without version and group
+* [`eb19087`](https://github.com/siderolabs/omni/commit/eb190875b30275195e52f1a95ed0bb3aae08424f) fix: remove t-header error notification
+* [`5a28202`](https://github.com/siderolabs/omni/commit/5a28202c939ef9683d14fb3d873e0bacb35577db) feat: restyle t-alert component
+* [`9f2b482`](https://github.com/siderolabs/omni/commit/9f2b48228bbfa39d33b07ae43e9fdb34192c3eed) fix: get rid of racy code in the kubeconfig request code
+* [`c40824e`](https://github.com/siderolabs/omni/commit/c40824ecc5d10cb5289e133b8b1f51213aa12f7f) feat: add text Highlight feature
+* [`9018c81`](https://github.com/siderolabs/omni/commit/9018c81bd0d7c58bb5c632c06f3c3904f6674e03) feat: use `~/.talos/config` as a primary source for clusters
+* [`e10547b`](https://github.com/siderolabs/omni/commit/e10547b5761ad96ab8b5766fe5c3f06fcdf86477) refactor: remove old components and not used code parts
+* [`f704684`](https://github.com/siderolabs/omni/commit/f7046846ea8e83a0e39647c4fcc49addf4c56061) fix: properly calculate servers capacity
+* [`755a077`](https://github.com/siderolabs/omni/commit/755a0779014b0a4177e0fc5180db20720be5a814) fix: use proper units for memory and CPU charts on the node monitor page
+* [`d0a083d`](https://github.com/siderolabs/omni/commit/d0a083d1c15c319e236dd258fabcc9a231f797a1) release(v0.2.0-alpha.0): prepare release
+* [`53878ee`](https://github.com/siderolabs/omni/commit/53878eea09c18f2bc0dd55ca11a6743587748319) fix: properly update servers menu item when the context is changed
+* [`b4cb9c7`](https://github.com/siderolabs/omni/commit/b4cb9c7989ec5299785b86acb3fa0ee648efd259) feat: restyle TMonitor page
+* [`f0377e2`](https://github.com/siderolabs/omni/commit/f0377e2ad5da702af71f2706141f4d7c638c7a15) fix: invert chart value for cpu, storage and memory on the overview page
+* [`6ea6ecf`](https://github.com/siderolabs/omni/commit/6ea6ecf12c4d8b5253b4dfc2e64f5b5d787d022a) fix: update capi-utils to fix talosconfig requests for CAPI clusters
+* [`e3796d3`](https://github.com/siderolabs/omni/commit/e3796d3876d33248fd0998901273a14d29a487a3) chore: update capi-utils
+* [`39186eb`](https://github.com/siderolabs/omni/commit/39186ebe50da531f35d21ac2488f8a58c1ef8e78) feat: implement overview page, cluster dropdown, ongoing tasks
+* [`59f2b27`](https://github.com/siderolabs/omni/commit/59f2b27be4d7f5a591fdeae533d649494356250d) docs: update README.md
+* [`2b7831f`](https://github.com/siderolabs/omni/commit/2b7831f2d22106ac8a82f890d73c2705841b0739) feat: add Kubernetes and Servers pages
+* [`4451a5b`](https://github.com/siderolabs/omni/commit/4451a5bc9f5c6b058c6bcf1252b7c83a001cafbe) fix: properly set TaskStatus namespace in the initial call
+* [`4545464`](https://github.com/siderolabs/omni/commit/454546425f2fd7e4418aa8a03465f3a062de804e) fix: add new fields to the TaskStatus spec, update Talos
+* [`891cf3b`](https://github.com/siderolabs/omni/commit/891cf3b79c8430deeed8a168955afd6e97083baa) docs: describe client context types, usage
+* [`309b515`](https://github.com/siderolabs/omni/commit/309b51545ead2ee144244591df2e5ead2849fb11) feat: update k8s upgrades tasks structure for the new UI representation
+* [`5aa8ca2`](https://github.com/siderolabs/omni/commit/5aa8ca24bd3159879c46c8e8a134702b174e3362) feat: add NodesPage
+* [`db434e0`](https://github.com/siderolabs/omni/commit/db434e07b9f23562bd746a0f78e3868b079006e2) feat: add TPagination component
+* [`0b51727`](https://github.com/siderolabs/omni/commit/0b51727efed31f13f52fa20b360071e7e2a6d9eb) feat: add Pods, Dashboard, Upgrade views, etc
+* [`c549b8b`](https://github.com/siderolabs/omni/commit/c549b8b9ee8a563f14b2e791f91a7b3cb0430aa7) feat: add Overview and Upgrade Kubernetes pages
+* [`cec2e85`](https://github.com/siderolabs/omni/commit/cec2e854f4f3999109220902bccaee6c25d1f502) chore: define constants for all used resource types
+* [`962bdaf`](https://github.com/siderolabs/omni/commit/962bdaf6406ab8e5febea0ad8d32da9c86fa39e7) feat: add TSideBar
+* [`fa28ccb`](https://github.com/siderolabs/omni/commit/fa28ccb67f52c1dd9096b23388427d78be526275) feat: add TheHeader component
+* [`f3418a5`](https://github.com/siderolabs/omni/commit/f3418a59e38e551bd0be7cc7ae66ef4645719aa7) feat: button;icons;config
+* [`db30f50`](https://github.com/siderolabs/omni/commit/db30f503730bdbd8ed359d4070dea0214df67fcd) fix: add `frontend/node_modules` to gitignore
+* [`a675b86`](https://github.com/siderolabs/omni/commit/a675b86f7d55cecd4ae1277cbf057a6bc264940c) fix: properly pass label selector to the metadata in ClusterListItem
+* [`7911d6a`](https://github.com/siderolabs/omni/commit/7911d6a31abdb51e86586a025b705ddfeb1dd19e) chore: add ability to start local development server for the frontend
+* [`076fee1`](https://github.com/siderolabs/omni/commit/076fee10c6583dc49e6530b02cab1f757da0e853) feat: use CAPI utils for CAPI requests
+* [`5ed5ba2`](https://github.com/siderolabs/omni/commit/5ed5ba2a122585a97cf65c3ff081126752cd26fa) fix: more websocket client bugfixes
+* [`6fe22ad`](https://github.com/siderolabs/omni/commit/6fe22ad370026380ba75b38e261870addc341e6f) fix: reset reconnect timeouts after the client is reconnected
+* [`c4b144a`](https://github.com/siderolabs/omni/commit/c4b144af272a46dbdc8d1bb35784e09ba1b79987) fix: talosconfig/kubeconfig when using the default context
+* [`b439a37`](https://github.com/siderolabs/omni/commit/b439a371c13a8d46d986a1dae3d6f4b7cba4a298) fix: properly handle Same-Origin header in websockets
+* [`ffffed1`](https://github.com/siderolabs/omni/commit/ffffed100cec18209bae723b9919eb8613950649) fix: read node name from nodename resource instead of hostname
+* [`2d6f984`](https://github.com/siderolabs/omni/commit/2d6f9844440a6d18b3093dea6228ac6a237dc86b) fix: use secure websockets if the page itself is using https
+* [`799f2d2`](https://github.com/siderolabs/omni/commit/799f2d2d00762d5270dd4a3f4b4b312b32dbb7dd) feat: rework the node overview page
+* [`0d0eaf4`](https://github.com/siderolabs/omni/commit/0d0eaf4b2721dfa1b04bce24e4a1e476579e3a74) fix: make charts height resize depending on the screen height
+* [`7de0101`](https://github.com/siderolabs/omni/commit/7de0101bf0e613653caadd5733db0e29a6bb5bfb) fix: use polyfill to fix streaming APIs on Firefox
+* [`0cff2b0`](https://github.com/siderolabs/omni/commit/0cff2b02b5d8b2c2c644067cf6bd3ed573cb784d) feat: small UI adjustments
+* [`d70bd41`](https://github.com/siderolabs/omni/commit/d70bd41992e13fb3dacc1740532083a8f6ce9afa) feat: implement accept Sidero server functional
+* [`f3a6e16`](https://github.com/siderolabs/omni/commit/f3a6e16a79e1bca9ea6c87eb0d3e0f2a6c65ff2e) feat: add top processes list to the Overview page
+* [`3cf97e4`](https://github.com/siderolabs/omni/commit/3cf97e4b9e07f8383da8a6fb7a993b70c8f82503) refactor: use the same object for gRPC metadata context and messages
+* [`243206f`](https://github.com/siderolabs/omni/commit/243206f95aa6ba944bd4361db6274e7072bae1fc) release(v0.1.0-alpha.2): prepare release
+* [`e5b6f29`](https://github.com/siderolabs/omni/commit/e5b6f29fd298904e06284a67681cc0ce5135145f) feat: implement node Reset
+* [`bcb7d23`](https://github.com/siderolabs/omni/commit/bcb7d237c31f42a35f5c3b53e7615ddae1ce0a8b) fix: node IP not being truncated
+* [`e576d33`](https://github.com/siderolabs/omni/commit/e576d33ba40f629eed14668f2d9bf77d7fef62c2) feat: add upgrade UI for CAPI clusters
+* [`10cdce7`](https://github.com/siderolabs/omni/commit/10cdce7fcc219af969a85a41d18fb904936faa0a) fix: server labels key/value order and chevron orientation
+* [`4007177`](https://github.com/siderolabs/omni/commit/40071775d6de1eea697f67e55441c384c86e75d9) feat: implement Kubernetes upgrade UI components
+* [`f4917ee`](https://github.com/siderolabs/omni/commit/f4917eecfb3173acf7518883c738118c8537d657) fix: accumulate chart updates into a single update
+* [`414d76c`](https://github.com/siderolabs/omni/commit/414d76c1c926695e5d66787b34decae92e151b45) feat: implement upgrade controller
+* [`36742ea`](https://github.com/siderolabs/omni/commit/36742ea5ab1e8a983b73f73443c1cf122a90d054) feat: introduce create, delete and update gRPC APIs
+* [`2b3d314`](https://github.com/siderolabs/omni/commit/2b3d314a460b385d8c13bdd025fadb37b5508bdc) feat: install internal COSI runtime alongside with K8s and Talos
+* [`ae7f784`](https://github.com/siderolabs/omni/commit/ae7f784d08621d18075b1763f026a7513d9d9dcb) refactor: move all generated TypeScript files under `frontend/src/api`
+* [`61bad64`](https://github.com/siderolabs/omni/commit/61bad64540c28fb0520a39a6c64d64c3e9353361) release(v0.1.0-alpha.1): prepare release
+* [`8e5e722`](https://github.com/siderolabs/omni/commit/8e5e7229470713d2fbd5ad0df027bd825f5481e3) feat: implement node reboot controls
+* [`9765a88`](https://github.com/siderolabs/omni/commit/9765a88069f05c49f5a7d854675ee37e1c7a8273) feat: dmesg logs page
+* [`ecbbd67`](https://github.com/siderolabs/omni/commit/ecbbd67936b1fb570d706fe3b93b81f6089b5124) feat: use updated timestamp to display event time on the graph
+* [`7c56773`](https://github.com/siderolabs/omni/commit/7c56773448a496fe1ceeec3c47978975ce336b3a) refactor: use Metadata to pass context in all gRPC calls
+* [`abb4733`](https://github.com/siderolabs/omni/commit/abb47330222217d7d8b5c36ff28902415bc755d8) feat: implement service logs viewer
+* [`8e8e032`](https://github.com/siderolabs/omni/commit/8e8e032b20d082bfd71a26c2af2bbc821d9c2a7b) feat: add ability to pick sort order on the servers page
+* [`1a1c728`](https://github.com/siderolabs/omni/commit/1a1c728ac929bb02db7f1bd0b991a747e63fe81a) fix: resolve the issue with idFn value generating undefined ids
+* [`2e83fe2`](https://github.com/siderolabs/omni/commit/2e83fe23a7feb51b73bc7b53997636b641ae42b9) feat: allow filtering servers by picking from predefined categories
+* [`48f776e`](https://github.com/siderolabs/omni/commit/48f776e10f6c79772481393d7397557419520046) fix: navigate home when changing the context
+* [`a1ce0ca`](https://github.com/siderolabs/omni/commit/a1ce0ca8c8fabb2267c3dc6f6b1509f131e18ba8) fix: resolve services search issues
+* [`5b768f8`](https://github.com/siderolabs/omni/commit/5b768f85277ee31131994ae0b253700a5d26978d) feat: make stacked lists searchable
+* [`ec1bc5b`](https://github.com/siderolabs/omni/commit/ec1bc5b48943e473c756ebc7a8c943a34cdeaeac) feat: implement stats component and add stats to the servers page
+* [`1a85999`](https://github.com/siderolabs/omni/commit/1a8599981f93fc5ce68e23b1b4cd7aabbb43c90c) feat: align Sidero servers list outlook with the wireframes
+* [`524264c`](https://github.com/siderolabs/omni/commit/524264c515a9efdce9f06a3c2ebd59c2979f9b2a) fix: display error message and use proper layout for the spinner
+* [`5263d16`](https://github.com/siderolabs/omni/commit/5263d16cfb936aad9ba461e0cc7b150ff9b806d5) feat: introduce node stats page
+* [`8feb35e`](https://github.com/siderolabs/omni/commit/8feb35e95a6d588e1d9c605231308976be452a2e) feat: make root sidebar sections collapsible
+* [`36ad656`](https://github.com/siderolabs/omni/commit/36ad656a3bbdc1e2915a87c0d09c31738ae3f3c4) feat: detect cluster capabilities
+* [`a25d90d`](https://github.com/siderolabs/omni/commit/a25d90d58a85b3b73432858f134fa09cd1338d5c) feat: support switching context in the UI
+* [`67903e2`](https://github.com/siderolabs/omni/commit/67903e23f49623ae9a9a6b297282c62aa8579aa8) refactor: separate Watch from StackedList
+* [`76b9e1d`](https://github.com/siderolabs/omni/commit/76b9e1dc88cccf74cebb28470eae5e9249809d40) release(v0.1.0-alpha.0): prepare release
+* [`7bde4c8`](https://github.com/siderolabs/omni/commit/7bde4c8c6e16c197578cbb4e037a05d50194958f) fix: cobra command was initialized but not actually used
+* [`04624c9`](https://github.com/siderolabs/omni/commit/04624c95cec587ae0b0d8888d95d484ef8d98cfa) feat: support getting Talos and Kubernetes client configs for a cluster
+* [`219b9c8`](https://github.com/siderolabs/omni/commit/219b9c8663fe03af65796b0b6299cff5e66b3efc) feat: implement notifications component
+* [`f8b19a0`](https://github.com/siderolabs/omni/commit/f8b19a0585e6e19c0e7da4e4afad5bbd264e0029) feat: decouple watch list from the view
+* [`2f8c96e`](https://github.com/siderolabs/omni/commit/2f8c96e44012e7bd0db9869eeb90ab48ff41e162) feat: implement appearance settings modal window
+* [`de745d6`](https://github.com/siderolabs/omni/commit/de745d6b7170a9c509cc835a8b675a1c788e80f4) feat: implement Talos runtime backend
+* [`af69a0d`](https://github.com/siderolabs/omni/commit/af69a0d58906a86974bc7dbec2c09ca9f78b152f) feat: support getting Kubernetes resource through gRPC gateway
+* [`2c50010`](https://github.com/siderolabs/omni/commit/2c50010b0d9f7b168354fedd698600d94123c354) feat: implement breadcrumbs component, add support for table header
+* [`3fc1e80`](https://github.com/siderolabs/omni/commit/3fc1e808875f6f502cd2657c4548dd886fbf465d) feat: implement nodes view
+* [`961e93a`](https://github.com/siderolabs/omni/commit/961e93a4af430eaa9efcd1e2922af8072fe4cf85) feat: implement clusters view
+* [`e8248ff`](https://github.com/siderolabs/omni/commit/e8248ffab89633cae8834631e39cf4dce5e4147a) feat: use plain zap instead of SugaredLogger everywhere
+* [`81ba93d`](https://github.com/siderolabs/omni/commit/81ba93dffdc37efdde06557a1c63511a7d61b2f2) chore: generate websocket protocol messages using protobuf
+* [`37a878d`](https://github.com/siderolabs/omni/commit/37a878dd396b650df8afaf6730f9afe52d35569c) feat: make JS websocket reconnect on connection loss
+* [`23b3281`](https://github.com/siderolabs/omni/commit/23b3281f8880800a9084e1c8a74617fcf966c846) feat: use dynamic watcher to allow listing any kinds of resources
+* [`16475f5`](https://github.com/siderolabs/omni/commit/16475f51cc9651736213b36c57381b24dcabdc62) feat: implement real time update server on top of web sockets
+* [`76b39ae`](https://github.com/siderolabs/omni/commit/76b39ae563d9f09ecac3451389e3d260abdad48d) feat: create hello world Vue app using Kres
+* [`baab493`](https://github.com/siderolabs/omni/commit/baab493f155cbd78c2e8af6ce45268c40ef6aeed) Initial commit
+
+
+
+### Changes since v0.1.0-alpha.1
+55 commits
+
+
+* [`e096c88`](https://github.com/siderolabs/omni/commit/e096c887604399028a559e33da13653c1f54965d) chore: add resource operation metrics
+* [`741e820`](https://github.com/siderolabs/omni/commit/741e8202c5aecfe171082c38e2c55e0184e9c80c) feat: implement config patch creation UI
+* [`5def267`](https://github.com/siderolabs/omni/commit/5def26706fa21df7748801cbdab5c6e81543174f) fix: attempt to clean up docker container better
+* [`876ff5e`](https://github.com/siderolabs/omni/commit/876ff5ee44d4193c52e4daeec776ad50b69664f9) feat: update COSI and state-etcd to 0.2.0
+* [`3df410d`](https://github.com/siderolabs/omni/commit/3df410d964fc66b2d4ad8c7db0459108d16adde0) test: refactor and update config patch integration tests
+* [`5eea9e5`](https://github.com/siderolabs/omni/commit/5eea9e50b47a6df324f2fd5564aa9010b56e16e0) feat: add TLS support to siderolink API
+* [`36394ea`](https://github.com/siderolabs/omni/commit/36394ea242f9af4d9c17f90ec143b0356fa9e671) refactor: simplify the resource leak fix
+* [`e5b962b`](https://github.com/siderolabs/omni/commit/e5b962b66f158fd31b74dc6b97f524c168b4fad1) chore: update dev environment
+* [`39bf206`](https://github.com/siderolabs/omni/commit/39bf206eec29262b1c15ed557f7f24e029c61206) fix: save user picture and fullname in the local storage
+* [`f1611c1`](https://github.com/siderolabs/omni/commit/f1611c10d26b937b5bae69a1b9eda67d2bc5e137) feat: add machine level config patch support
+* [`f2e6cf5`](https://github.com/siderolabs/omni/commit/f2e6cf5cddb47aaa290e7db1a037f2155fcd60d2) fix: remove several resource/goroutine leaks
+* [`fc37af3`](https://github.com/siderolabs/omni/commit/fc37af36d87e01c3e9f349f206711f154740e0b4) feat: allow destroying config patches in the UI
+* [`3154d59`](https://github.com/siderolabs/omni/commit/3154d591e7c65713c6940d953df45d8242ae9359) fix: respect SIDEROLINK_DEV_JOIN_TOKEN only in debug mode
+* [`38f5380`](https://github.com/siderolabs/omni/commit/38f53802ab3dda70fedc0a81de9d6dd43e6204f1) feat: avoid deleting all resources on omnictl delete
+* [`28666bc`](https://github.com/siderolabs/omni/commit/28666bcb4acaf6e4f053e99d8d45d5dae320c89c) chore: add support for local development using compose
+* [`cad73ce`](https://github.com/siderolabs/omni/commit/cad73cefc6b187a26e3833089e89ca1cb6fbf843) chore: increase TestEtcdAudit timeout and fix incorrect `Assert()` calls.
+* [`7199b75`](https://github.com/siderolabs/omni/commit/7199b75c2108568d8bee82c42fcc00edb4a22e1c) chore: during `config merge` create config if there was none
+* [`dab54d1`](https://github.com/siderolabs/omni/commit/dab54d14fcd8c0fadc6bb2a49d79e90379234403) chore: increase `TestTalosBackendRoles` reliability
+* [`997cd78`](https://github.com/siderolabs/omni/commit/997cd7823bd126302ed4772658c0791768d67638) feat: add reconfiguring phase to machinesetstatus
+* [`81fb2b9`](https://github.com/siderolabs/omni/commit/81fb2b94e61f7e7aaf41075fe17a2bbfea005d9f) fix: fix button order and vue config
+* [`252fb29`](https://github.com/siderolabs/omni/commit/252fb29d64dac660da08459d9c5acc44e457b034) refactor: simplify backend.Server.Run method
+* [`f335c2f`](https://github.com/siderolabs/omni/commit/f335c2f5311a81ca23699c473b68bf6918430aab) refactor: split watch to `Watch` and `WatchFunc`, add unit tests
+* [`35a7919`](https://github.com/siderolabs/omni/commit/35a79193b965d42fba0a649bef0efe82abbd2fd5) feat: track machine config apply status
+* [`1c54710`](https://github.com/siderolabs/omni/commit/1c54710c6f5ebe2740af27cebfb9c5532b22cc26) fix: use rolling update strategy on control planes
+* [`17ccdc2`](https://github.com/siderolabs/omni/commit/17ccdc2f78693b5d1276b843c027e8057faa2ff7) refactor: various logging fixes
+* [`3c9ca9c`](https://github.com/siderolabs/omni/commit/3c9ca9cd83298c5281c7ced50720b341c10a02f0) fix: update node overview Kubernetes node watch to make it compatible
+* [`e8c2063`](https://github.com/siderolabs/omni/commit/e8c20631501308952bbc596e994a71b7677034b3) fix: enable edit config patches button on the cluster overview page
+* [`6e80521`](https://github.com/siderolabs/omni/commit/6e8052169dd672e6fce5668982b704331eac4645) fix: reset the item list after the watch gets reconnected
+* [`620d197`](https://github.com/siderolabs/omni/commit/620d1977a70bbc2cca8b331db825fc7bdb8fcda3) chore: remove AddContext method from runtime.Runtime interface
+* [`8972ade`](https://github.com/siderolabs/omni/commit/8972ade40dea2bf3bf41bcb865a817d90b37657d) chore: update default version of Talos to v1.2.7
+* [`6a2dde8`](https://github.com/siderolabs/omni/commit/6a2dde863d306986027904167f262d4307a7420d) fix: update the config patch rollout strategy
+* [`fb3f6a3`](https://github.com/siderolabs/omni/commit/fb3f6a340c37d1958e36400edf7ca53e2cde48a7) fix: skip updating config status if applying config caused a reboot
+* [`8776146`](https://github.com/siderolabs/omni/commit/877614606d0c7d0259c4e65e4911f331550dd7d7) fix: apply finalizer to the `Machine` only when CMS is created
+* [`134bb20`](https://github.com/siderolabs/omni/commit/134bb2053ce6250b9b4c647f3b2dbb8255cea2ce) test: fix config patch test with reboot
+* [`d3b6b5a`](https://github.com/siderolabs/omni/commit/d3b6b5a75f9ea5304595851d6160e98ec4c9b8aa) feat: implement config patch viewer and editor
+* [`149efe1`](https://github.com/siderolabs/omni/commit/149efe189a24c07e648289ee81d0b95ed1c972b7) chore: bump runtime and state-etcd modules
+* [`c345b83`](https://github.com/siderolabs/omni/commit/c345b8348412aef59cbd43c35bf06ce3eac5ad3f) chore: output omnictl auth log to stderr
+* [`39b2ba2`](https://github.com/siderolabs/omni/commit/39b2ba2a86972324161c6cff056abf10eb2fce5c) refactor: introduce ClusterEndpoint resource
+* [`6998ff0`](https://github.com/siderolabs/omni/commit/6998ff0803063b22e113da0c72356ee254f13143) fix: treat created and updated events same
+* [`289fe88`](https://github.com/siderolabs/omni/commit/289fe88aba94d6cfe4d7be7472b609232e45cbf6) feat: add omnictl apply
+* [`2f1be3b`](https://github.com/siderolabs/omni/commit/2f1be3b4643e2a66a62da6a7f8f1f1da39ed6e17) chore: fix `TestGenerateJoinToken` test
+* [`3829176`](https://github.com/siderolabs/omni/commit/382917630030415b1a218f14f2a1d6d3595834a0) fix: don't close config patch editor window if config validation fails
+* [`c96f504`](https://github.com/siderolabs/omni/commit/c96f5041be7befb517998fc7bbccd135cb76908d) feat: add suspended mode
+* [`b967bcf`](https://github.com/siderolabs/omni/commit/b967bcfd26b2fccfa6bbb08b8a15eb3796e2e872) feat: add last config apply error to clustermachineconfigstatus
+* [`0395d9d`](https://github.com/siderolabs/omni/commit/0395d9dd7b985802be8f4cd2b8005b409faca3de) test: increase key generation timeout on storage signing test
+* [`577eba4`](https://github.com/siderolabs/omni/commit/577eba4231142fe983f9a0f9b5a81280c377686e) fix: set SideroLink MTU to 1280
+* [`0f32172`](https://github.com/siderolabs/omni/commit/0f32172922ed2f7b8b4b7433fb1f9ce104f3c5a8) fix: minor things in frontend
+* [`9abcc7b`](https://github.com/siderolabs/omni/commit/9abcc7b444c49f6223e0ae4948bff13eedbb05b5) test: add config patching integration tests
+* [`99531fb`](https://github.com/siderolabs/omni/commit/99531fbeee982e2ab87d9f0162a0080308b852ab) refactor: drop unneeded controller inputs
+* [`5172354`](https://github.com/siderolabs/omni/commit/51723541621d91964e88e8a5add834159214dc5b) chore: add omnictl to the generated image
+* [`738cf64`](https://github.com/siderolabs/omni/commit/738cf649f53ec29e88112a027ec72f3d6f0cfff8) fix: set cluster machine version in machine config status correctly
+* [`1d0d220`](https://github.com/siderolabs/omni/commit/1d0d220f47f1cc9ca8b20bfef47004a875b7573c) fix: lower ttl of the issued keys on the FE side by 10 minutes
+* [`2889524`](https://github.com/siderolabs/omni/commit/2889524f222e42d49061867b2b2f5b59a16af4ba) feat: dynamic title
+* [`3d17bd7`](https://github.com/siderolabs/omni/commit/3d17bd7cfd4775292090ccb3fd3c2b575b26d449) chore: fix release CI run
+* [`f2c752f`](https://github.com/siderolabs/omni/commit/f2c752fed627006912018ae3e5f2ff0f2bed60b8) fix: properly proxy watch requests through dev-server
+
+
+
+### Dependency Changes
+
+This release has no dependency changes
+
+## [Omni 0.1.0-alpha.1](https://github.com/siderolabs/omni/releases/tag/v0.1.0-alpha.1) (2022-11-10)
+
+Welcome to the v0.1.0-alpha.1 release of Omni!
+*This is a pre-release of Omni*
+
+
+
+Please try out the release binaries and report any issues at
+https://github.com/siderolabs/omni/issues.
+
+### Contributors
+
+* Artem Chernyshev
+* Andrey Smirnov
+* Artem Chernyshev
+* Dmitriy Matrenichev
+* Philipp Sauter
+* Utku Ozdemir
+* evgeniybryzh
+* Noel Georgi
+* Andrew Rynhard
+* Tim Jones
+* Andrew Rynhard
+* Gerard de Leeuw
+* Steve Francis
+* Volodymyr Mazurets
+
+### Changes
+349 commits
+
+
+* [`8b284f3`](https://github.com/siderolabs/omni/commit/8b284f3aa26cf8a34452f33807dcc04045e7a098) feat: implement Kubernetes API OIDC proxy and OIDC server
+* [`adad8d0`](https://github.com/siderolabs/omni/commit/adad8d0fe2f3356e97de613104196233a3b98ff5) refactor: rework LoadBalancerConfig/LoadBalancerStatus resources
+* [`08e2cb4`](https://github.com/siderolabs/omni/commit/08e2cb4fd40ec918bf458edd6a5d8e6c86fe5c97) feat: support editing config patches on cluster and machine set levels
+* [`e2197c8`](https://github.com/siderolabs/omni/commit/e2197c83e994afb435671f5af5cdefa843bbddb5) test: e2e testing improvements
+* [`ec9051f`](https://github.com/siderolabs/omni/commit/ec9051f6dfdf1f5acaf3fa6766dc1195b6f6dcdd) fix: config patching
+* [`e2a1d6c`](https://github.com/siderolabs/omni/commit/e2a1d6c78809eaa4168ca5ede433824797a6aa4e) fix: send logs in JSON format by default
+* [`954dd70`](https://github.com/siderolabs/omni/commit/954dd70b935b7c373ba5830fd7ad6e965f6b0da8) chore: replace talos-systems depedencies with siderolabs
+* [`acf94db`](https://github.com/siderolabs/omni/commit/acf94db8ac80fb6f15cc87ff276b7edca0cb8661) chore: add payload logger
+* [`838c716`](https://github.com/siderolabs/omni/commit/838c7168c64f2296a9e01d3ef6ab4feb9f16aeb9) fix: allow time skew on validating the public keys
+* [`dd481d6`](https://github.com/siderolabs/omni/commit/dd481d6cb3620790f6e7a9c8e305defb507cbe5f) fix: refactor runGRPCProxy in router tests to catch listener errors
+* [`e68d010`](https://github.com/siderolabs/omni/commit/e68d010685d4f0a5d25fee671744119cecf6c27b) chore: small fixes
+* [`ad86875`](https://github.com/siderolabs/omni/commit/ad86875ec146e05d7d7f461bf7c8094a8c143df5) feat: minor adjustments on the cluster create page
+* [`e61f194`](https://github.com/siderolabs/omni/commit/e61f1943e965287c79fbaef05760bb0b0deee988) chore: implement debug handlers with controller dependency graphs
+* [`cbbf901`](https://github.com/siderolabs/omni/commit/cbbf901e601d31c777ad2ada0f0036c57020ba96) refactor: use generic TransformController more
+* [`33f9f2c`](https://github.com/siderolabs/omni/commit/33f9f2ce3ec0999198f311ae4bae9b58e57153c9) chore: remove reflect from runtime package
+* [`6586963`](https://github.com/siderolabs/omni/commit/65869636aa33013b5feafb06e727b9d2a4cf1c19) feat: add scopes to users, rework authz & add integration tests
+* [`bb355f5`](https://github.com/siderolabs/omni/commit/bb355f5c659d8c66b825de409d9446767005a2bb) fix: reload the page to init the UI Authenticator on signature fails
+* [`c90cd48`](https://github.com/siderolabs/omni/commit/c90cd48eefa7f29328a456aa5ca474eece17c6fe) chore: log auth context
+* [`d278780`](https://github.com/siderolabs/omni/commit/d2787801a4904fe895996e5319f301a1d7ca76df) fix: update Clusters page UI
+* [`5e77607`](https://github.com/siderolabs/omni/commit/5e776072285e535e93c0458774dcad810b9b857a) tests: abort on first failure
+* [`4c55980`](https://github.com/siderolabs/omni/commit/4c5598083ff6d8763c8763d8e46a3d7b659784ff) chore: get full method name from the service
+* [`2194f43`](https://github.com/siderolabs/omni/commit/2194f4391607e6e73bce1917d2744e78fdd2cebc) feat: redesign cluster list view
+* [`40b3f23`](https://github.com/siderolabs/omni/commit/40b3f23071096987e8a7c6f30a2622c317c190cb) chore: enable gRPC request duration histogram
+* [`0235bb9`](https://github.com/siderolabs/omni/commit/0235bb91a71510cf4d349eedd3625b119c7e4e11) refactor: make sure Talos/Kubernetes versions are defined once
+* [`dd6154a`](https://github.com/siderolabs/omni/commit/dd6154a45d5dcd14870e0aa3f97aa1d4e53bdcfb) chore: add public key pruning
+* [`68908ba`](https://github.com/siderolabs/omni/commit/68908ba330ecd1e285681e24db4b9037eb2e8202) fix: bring back UpgradeInfo API
+* [`f1bc692`](https://github.com/siderolabs/omni/commit/f1bc692c9125f7683fe5f234b03eb3521ba7e773) refactor: drop dependency on Talos Go module
+* [`0e3ef43`](https://github.com/siderolabs/omni/commit/0e3ef43cfed68e53879e6c22b46e7d0568ddc05f) feat: implement talosctl access via Omni
+* [`2b0014f`](https://github.com/siderolabs/omni/commit/2b0014fea15da359217f89ef723965dcc9faa739) fix: provide a way to switch the user on the authenticate page
+* [`e295d7e`](https://github.com/siderolabs/omni/commit/e295d7e2854ac0226e7efda32864f6a687a88470) chore: refactor all controller tests to use assertResource function
+* [`8251dfb`](https://github.com/siderolabs/omni/commit/8251dfb9e44341e9df9471f387cc76c91359cf84) refactor: extract PGP client key handling
+* [`02da9ee`](https://github.com/siderolabs/omni/commit/02da9ee66f15462e6f4d7da18515651a5fde11aa) refactor: use extracted go-api-signature library
+* [`4bc3db4`](https://github.com/siderolabs/omni/commit/4bc3db4dcbc14e0e51c7a3b5257686b671cc2823) fix: drop not working upgrade k8s functional
+* [`17ca75e`](https://github.com/siderolabs/omni/commit/17ca75ef864b7a59f9c6f829de19cc9630a670c0) feat: add 404 page
+* [`8dcde2a`](https://github.com/siderolabs/omni/commit/8dcde2af3ca49d9be16cc705c0b403826f2eee5d) feat: implement logout flow in the frontend
+* [`ba766b9`](https://github.com/siderolabs/omni/commit/ba766b9922302b9d1f279b74caf94e6ca727f86f) fix: make `omnictl` correctly re-auth on invalid key
+* [`fd16f87`](https://github.com/siderolabs/omni/commit/fd16f8743d3843e8ec6735a7c2e96532694b876e) fix: don't set timeout on watch gRPC requests
+* [`8dc3cc6`](https://github.com/siderolabs/omni/commit/8dc3cc682e5419c3824c6e740a32085c386b8817) fix: don't use `omni` in external names
+* [`2513661`](https://github.com/siderolabs/omni/commit/2513661578574255ca3f736d3dfa1f307f5d43b6) fix: reset `Error` field of the `MachineSetStatus`
+* [`b611e99`](https://github.com/siderolabs/omni/commit/b611e99e14a7e2ebc64c55ed5c95a47e17d6ac32) fix: properly handle `Forbidden` errors on the authentication page
+* [`8525502`](https://github.com/siderolabs/omni/commit/8525502265b10dc3cc056d301785f6f60e4f7e22) fix: stop runners properly and clean up StatusMachineSnapshot
+* [`ab0190d`](https://github.com/siderolabs/omni/commit/ab0190d9a41b830daf60173b998acdbcbbdd3754) feat: implement scopes and enforce authorization
+* [`9198d96`](https://github.com/siderolabs/omni/commit/9198d96ea9d57bb5949c59350aec42b2ce13ebac) feat: sign gRPC requests on the frontend to enable Authentication flow
+* [`bdd8f21`](https://github.com/siderolabs/omni/commit/bdd8f216a9eca7ec657fa0dc554e663743f058d1) chore: remove reset button and fix padding
+* [`362db57`](https://github.com/siderolabs/omni/commit/362db570349b4a2659f746ce18a436d684481ecb) fix: gRPC verifier should verify against original JSON payload
+* [`30186b8`](https://github.com/siderolabs/omni/commit/30186b8cfe2eea6eaade8bacf31114886d3da3ea) fix: omnictl ignoring omniconfig argument
+* [`e8ab0ba`](https://github.com/siderolabs/omni/commit/e8ab0ba45648b8f521500b46fe032797da6a111f) fix: do not attempt to execute failed integration test again
+* [`9fda25e`](https://github.com/siderolabs/omni/commit/9fda25ef45f0060cc6c3ec812f5fa1c7b1015801) chore: add more info on errors to different controllers
+* [`ccda526`](https://github.com/siderolabs/omni/commit/ccda5260c4645b5929724574a9f856eeaa4c232f) chore: bump grpc version
+* [`b1ac125`](https://github.com/siderolabs/omni/commit/b1ac1255da5ca4b5d9c409e27c51e4298275e73c) chore: emit log when we got machine status event.
+* [`005d257`](https://github.com/siderolabs/omni/commit/005d257c25c745b61e5a25c39167d511710562c7) chore: set admin role specifically for Reboot request.
+* [`27f0e30`](https://github.com/siderolabs/omni/commit/27f0e309cec76a454e5bb24c2df1e62d9e4718e0) chore: update deps
+* [`77f0219`](https://github.com/siderolabs/omni/commit/77f02198c1e7fb215548f3a0e2be30a0e19aaf6d) test: more unit-tests for auth components
+* [`0bf6ddf`](https://github.com/siderolabs/omni/commit/0bf6ddfa46e0ea6ad255ede00a600c390344e221) fix: pass through HTTP request if auth is disabled
+* [`4f3a67b`](https://github.com/siderolabs/omni/commit/4f3a67b08e03a1bad65c2acb8d65f0281fdd2f9e) fix: unit-tests for auth package and fixes
+* [`e3390cb`](https://github.com/siderolabs/omni/commit/e3390cbbac1d0e78b72512c6ebb64a8f53dcde17) chore: rename arges-theila to omni
+* [`14d2614`](https://github.com/siderolabs/omni/commit/14d2614538ec696d468a0850bd4ee7bc6884c3b1) chore: allow slashes in secretPath
+* [`e423edc`](https://github.com/siderolabs/omni/commit/e423edc072714e7f693249b60079f5f700cc0a65) fix: add unit-tests for auth message and fix issues
+* [`b5cfa1a`](https://github.com/siderolabs/omni/commit/b5cfa1a84e93b6bbf5533c599917f293fc5cdf66) feat: add vault client
+* [`b47791c`](https://github.com/siderolabs/omni/commit/b47791ce303cbb9a8aab279685d17f92a480c7f4) feat: sign grpc requests on cli with pgp key & verify it on server
+* [`d6ef4d9`](https://github.com/siderolabs/omni/commit/d6ef4d9c36758cb0091e2c528b848952f312941a) feat: split account ID and name
+* [`e412e1a`](https://github.com/siderolabs/omni/commit/e412e1a69edad0d19d7e46fa3aa076dcb8e6d4b6) chore: workaround the bind problem
+* [`e23cc59`](https://github.com/siderolabs/omni/commit/e23cc59bb8cb8f9df81738d4c58aed08d80fa9c4) chore: bump minimum Talos version to v1.2.4
+* [`0638a29`](https://github.com/siderolabs/omni/commit/0638a29d78c092641573aa2b8d2e594a7ff6aab4) feat: stop using websockets
+* [`8f3c19d`](https://github.com/siderolabs/omni/commit/8f3c19d0f0ecfbe5beabc7dc508dcafa720e83e2) feat: update install media to be identifiable
+* [`70d1e35`](https://github.com/siderolabs/omni/commit/70d1e354466618bb07c13445a16ca639be12009e) feat: implement resource encryption
+* [`7653638`](https://github.com/siderolabs/omni/commit/76536386499889994b65f66a8a40f18b5535c5ba) fix: fix NPE in integration tests
+* [`e39849f`](https://github.com/siderolabs/omni/commit/e39849f4047f028251123781bd8be350ebbfd65d) chore: update Makefile and Dockerfile with kres
+* [`4709473`](https://github.com/siderolabs/omni/commit/4709473ec20fbf92a3240fb3376a322f1321103a) fix: return an error if external etcd client fails to be built
+* [`5366661`](https://github.com/siderolabs/omni/commit/536666140556ba9b997a2b5d4441ea4b5f42d1c5) refactor: use generic transform controller
+* [`a2a5f16`](https://github.com/siderolabs/omni/commit/a2a5f167f21df6375767d018981651d60bb2f768) feat: limit access to Talos API via Omni to `os:reader`
+* [`e254201`](https://github.com/siderolabs/omni/commit/e2542013938991faa8f1c521fc524b8fcf31ea34) feat: merge internal/external states into one
+* [`3258ca4`](https://github.com/siderolabs/omni/commit/3258ca487c818a34924f138640f44a2e51d307fb) feat: add `ControlPlaneStatus` controller
+* [`1c0f286`](https://github.com/siderolabs/omni/commit/1c0f286a28f5134333130708d031dbfa11051a42) refactor: use `MachineStatus` Talos resource
+* [`0a6b19f`](https://github.com/siderolabs/omni/commit/0a6b19fb916ea301a8f5f6ccd9bbdaa7cb4c39e0) chore: drop support for Talos resource API
+* [`ee5f6d5`](https://github.com/siderolabs/omni/commit/ee5f6d58a2b22a87930d3c8bb9963f71c92f3908) feat: add auth resource types & implement CLI auth
+* [`36736e1`](https://github.com/siderolabs/omni/commit/36736e14e5c837d38568a473834d14073b88a153) fix: use correct protobuf URL for cosi resource spec
+* [`b98c56d`](https://github.com/siderolabs/omni/commit/b98c56dafe33beef7792bd861ac4e637fe13c494) feat: bump minimum version for Talos to v1.2.3
+* [`b93bc9c`](https://github.com/siderolabs/omni/commit/b93bc9cd913b017c66502d96d99c52e4d971e231) chore: move containers and optional package to the separate module
+* [`e1af4d8`](https://github.com/siderolabs/omni/commit/e1af4d8a0bee31721d8946ef452afe04da6b494d) chore: update COSI to v0.2.0-alpha.1
+* [`788dd37`](https://github.com/siderolabs/omni/commit/788dd37c0be32745547ee8268aa0f004041dc96f) feat: implement and enable by default etcd backend
+* [`1b83038`](https://github.com/siderolabs/omni/commit/1b83038b77cab87ffc2d4d73a91582785ed446ef) release(v0.1.0-alpha.0): prepare release
+* [`8a9c4f1`](https://github.com/siderolabs/omni/commit/8a9c4f17ed6ee0d8e4a51b466d60a8278cd50f9c) feat: implement CLI configuration file (omniconfig)
+* [`b0c92d5`](https://github.com/siderolabs/omni/commit/b0c92d56da00529c106f042399c1163375046785) feat: implement etcd audit controller
+* [`0e993a0`](https://github.com/siderolabs/omni/commit/0e993a0977c711fb8767e3de2ad828fd5b9e688f) feat: properly support scaling down the cluster
+* [`264cdc9`](https://github.com/siderolabs/omni/commit/264cdc9e015fd87724c7a07128d1136153732540) refactor: prepare for etcd backend integration
+* [`b519d17`](https://github.com/siderolabs/omni/commit/b519d17971bb1c919286813b4c2465c2f5803a03) feat: show version in the UI
+* [`a2fb539`](https://github.com/siderolabs/omni/commit/a2fb5397f9efb22a1354c5675180ca49537bee55) feat: keep track of loadbalancer health in the controller
+* [`4789c62`](https://github.com/siderolabs/omni/commit/4789c62af0d1694d8d0a492cd6fb7d436e213fe5) feat: implement a new controller that can gather cluster machine data
+* [`bd3712e`](https://github.com/siderolabs/omni/commit/bd3712e13491ede4610ab1452ae85bde6d92b2db) fix: populate machine label field in the patches created by the UI
+* [`ba70b4a`](https://github.com/siderolabs/omni/commit/ba70b4a48623939d31775935bd0338c0d60ab65b) fix: rename to Omni, fix workers scale up, hide join token
+* [`47b45c1`](https://github.com/siderolabs/omni/commit/47b45c129160821576d808d9a46a9ec5d14c6469) fix: correct filenames for Digital Ocean images
+* [`9d217cf`](https://github.com/siderolabs/omni/commit/9d217cf16d432c5194110ae16a566b44b02a567e) feat: introduce new resources, deprecate `ClusterMachineTemplate`
+* [`aee153b`](https://github.com/siderolabs/omni/commit/aee153bedb2f7856913a54b282603b07bf20059b) fix: address style issue in the Pods paginator
+* [`752dd44`](https://github.com/siderolabs/omni/commit/752dd44ac42c95c644cad5640f6b2c5536a29676) chore: update Talos machinery to 1.2.0 and use client config struct
+* [`88d7079`](https://github.com/siderolabs/omni/commit/88d7079a6656605a1a8dfed56d392414583a283e) fix: regenerate sources from proto files that were rolled back.
+* [`84062c5`](https://github.com/siderolabs/omni/commit/84062c53417197417ff636a667289342089f390c) chore: update Talos to the latest master
+* [`5a139e4`](https://github.com/siderolabs/omni/commit/5a139e473abcdf7fd25ad7c61dad8cbdc964a453) fix: properly route theila internal requests in the gRPC proxy
+* [`4be4fb6`](https://github.com/siderolabs/omni/commit/4be4fb6a4e0bca29b32e1b732c227c9e7a0b1f43) feat: add support for 'talosconfig' generation
+* [`9235b8b`](https://github.com/siderolabs/omni/commit/9235b8b522d4bc0712012425b68ff89e455886b9) fix: properly layer gRPC proxies
+* [`9a516cc`](https://github.com/siderolabs/omni/commit/9a516ccb5c892ed8fe41f7cf69aaa5bb1d3fa471) fix: wait for selector of 'View All' to render in e2e tests.
+* [`3cf3aa7`](https://github.com/siderolabs/omni/commit/3cf3aa730e7833c0c1abe42a6afb87a85f14b58c) fix: some unhandled errors in the e2e tests.
+* [`c32c7d5`](https://github.com/siderolabs/omni/commit/c32c7d55c92007aa1aa10feab3c7a7de2b2afc42) fix: ignore updating cluster machines statuses without machine statuses
+* [`4cfa307`](https://github.com/siderolabs/omni/commit/4cfa307b85b410b44e482b259d14670b55e4a237) chore: run rekres, fix lint errors and bump Go to 1.19
+* [`eb2d449`](https://github.com/siderolabs/omni/commit/eb2d4499f1a3da7bc1552a6b099c28bed6fd0e4d) fix: skip the machines in `tearingDown` phase in the controller
+* [`9ebc769`](https://github.com/siderolabs/omni/commit/9ebc769b89a2bab37fd081e555f84e3e4c99187e) fix: allow all services to be proxied by gRPC router
+* [`ea2b01d`](https://github.com/siderolabs/omni/commit/ea2b01d0a0e054b259d710317fe368882534cf4c) fix: properly handle non empty resource id in the K8s resource watch
+* [`3bb7da3`](https://github.com/siderolabs/omni/commit/3bb7da3a0fa6b746f6a7b9aa668e055bdf825e6a) feat: show a Cluster column in the Machine section
+* [`8beb70b`](https://github.com/siderolabs/omni/commit/8beb70b7f045a218f9cb753e1402a07542b0bf1c) fix: ignore tearing down clusters in the `Cluster` migrations
+* [`319d4e7`](https://github.com/siderolabs/omni/commit/319d4e7947cb78135f5a14c02afe5814c56a312c) fix: properly handle `null` memory modules list
+* [`6c2120b`](https://github.com/siderolabs/omni/commit/6c2120b5ae2bd947f473d002dfe165646032e811) chore: introduce migrations manager for COSI DB state
+* [`ec52139`](https://github.com/siderolabs/omni/commit/ec521397946cc15929472feb7c45435fb48df848) fix: filter out invalid memory modules info coming from Talos nodes
+* [`8e87031`](https://github.com/siderolabs/omni/commit/8e870313a3a31d052eecf81acb522433ff98ae79) fix: bump loadbalancer timeout settings
+* [`bc0ed26`](https://github.com/siderolabs/omni/commit/bc0ed2672064a6bf148cd9799b35a2790f5aa7f6) feat: introduce websocket, HTTP requests monitoring
+* [`857401f`](https://github.com/siderolabs/omni/commit/857401f54e3922a9ab85d7dc703a5afb70c6ee45) feat: add HTTP logging (static, gateway), and websocket logging
+* [`eb612a3`](https://github.com/siderolabs/omni/commit/eb612a38e9c71913ebecc9f345e17844d60800b8) fix: do hard stop of events sink gRPC server after 5 seconds
+* [`3162513`](https://github.com/siderolabs/omni/commit/31625135e2b971d6b9f92eb4096c010113030a80) fix: populate nodes filter dropdown properly and rewrite filter function
+* [`5713a51`](https://github.com/siderolabs/omni/commit/5713a516391a5190fac9b7044a9f71952ce15479) fix: make `TSelectList` search filter the items in the dropdown
+* [`f2519ff`](https://github.com/siderolabs/omni/commit/f2519ff51b88766a907f1d7717ef74031157fd56) feat: don't allow using nodes with not enough mem for the cluster
+* [`9e474d6`](https://github.com/siderolabs/omni/commit/9e474d69c76a898fc5b6fcd9fdc8e87f25b7dc53) feat: show disconnected warning in the machines list
+* [`fa52b48`](https://github.com/siderolabs/omni/commit/fa52b48f54362c7305681ca79a7d98237531f2b4) feat: redesign Installation Media selection menu
+* [`01e301a`](https://github.com/siderolabs/omni/commit/01e301a875699cf6fcc887cb31cd7939338f58e9) fix: query node list using `talosctl get members` instead of K8s nodes
+* [`e694df5`](https://github.com/siderolabs/omni/commit/e694df59c50fbee356a48c94ade95e924ea46bb2) fix: display all available Talos versions on cluster create page
+* [`7a87525`](https://github.com/siderolabs/omni/commit/7a87525ed1b928a8f8e3e6a39feb4c19009ec264) fix: use `v-model` instead of callbacks in the inputs
+* [`d681f5f`](https://github.com/siderolabs/omni/commit/d681f5f58788612f144fa1f8d90ec6c996badb0e) feat: support scaling up the clusters
+* [`e992b95`](https://github.com/siderolabs/omni/commit/e992b9574d7b8f76497f46e25764618ec274af1a) feat: show notification on image download progress
+* [`8ea6d9f`](https://github.com/siderolabs/omni/commit/8ea6d9f1724b271919e538ed55ff6582858470f9) fix: probably fix 'context canceled' on image download
+* [`692612b`](https://github.com/siderolabs/omni/commit/692612b7e628588fa7608cff683c5af406f24ca7) fix: improve the Talos image generation process
+* [`a69c140`](https://github.com/siderolabs/omni/commit/a69c140e26f4298fcaafb1f96c389269992fc069) feat: introduce Prometheus metrics
+* [`e90ca78`](https://github.com/siderolabs/omni/commit/e90ca7875c501391f860f5df9f2a4e4f8e2f2d7a) fix: make grpc api listen only on siderolink interface
+* [`99fc28c`](https://github.com/siderolabs/omni/commit/99fc28c36c62a8d8c654c05f9b9c64ff37cedba8) fix: display correct cluster/machine status on ui
+* [`eaf7655`](https://github.com/siderolabs/omni/commit/eaf7655395401cd88e6bd47f4f8aa958abee30f1) fix: add a pause before integration tests
+* [`19ff1c9`](https://github.com/siderolabs/omni/commit/19ff1c909bedf63fe6cf2f5cc0e44f34046ca568) chore: rename download button
+* [`e1c4e1b`](https://github.com/siderolabs/omni/commit/e1c4e1b171eab08585a3315ca5838c88a4d2eb24) feat: add download options for all talos images
+* [`24e7863`](https://github.com/siderolabs/omni/commit/24e786369bfc0bb4966712296395db91751e657b) fix: delete cached clients from gRPC proxy when the cluster is destroyed
+* [`58c89ef`](https://github.com/siderolabs/omni/commit/58c89ef3fe621ef6909c5d38a0d47cc861667f45) feat: implement `argesctl delete` command
+* [`3c99b49`](https://github.com/siderolabs/omni/commit/3c99b49a9b680b091d92455a0d3bc325f8f68ca6) test: add a test which removes allocated machine
+* [`75dd28f`](https://github.com/siderolabs/omni/commit/75dd28f56d7ce9a92b96822a867fbfe2655cd0fa) chore: fill in resource definitions for table headers
+* [`028f168`](https://github.com/siderolabs/omni/commit/028f16886c41b7aa7eafb65308cc4adf4d624037) feat: End-to-end tests with playwright
+* [`6be6b36`](https://github.com/siderolabs/omni/commit/6be6b3605583ce8e8068746624ca86ed6adc37af) chore: bump goimports from 0.1.10 to 0.1.11 and node from 18.5.0 to 18.6.0
+* [`af4da08`](https://github.com/siderolabs/omni/commit/af4da086d4b709f504eda7909a36a8f0cf84e480) test: implement kernel log streaming test
+* [`1eacfee`](https://github.com/siderolabs/omni/commit/1eacfee2c1084040ae2201eba957409218a92c66) feat: implement argesctl machine-logs output in 'zap-like' and 'dmesg' form.
+* [`96ab7ab`](https://github.com/siderolabs/omni/commit/96ab7ab8317898dd45d129d5cecd2aaf1d379fba) chore: ignore memory modules with zero size
+* [`fd0575f`](https://github.com/siderolabs/omni/commit/fd0575ff4050702c9d07e34c7d9d5596b4ad7311) chore: retrieve k8s versions from github registry
+* [`8651527`](https://github.com/siderolabs/omni/commit/86515275a77741bacc790d2006f3671a5cfb27c6) feat: redo errgroup to return error on first nil error
+* [`944222d`](https://github.com/siderolabs/omni/commit/944222d06607079b5d982afe4b19fc1dda7f1ec2) fix: show ClusterMachineStatus.Stage in 'Clusters' view
+* [`f3f6b6e`](https://github.com/siderolabs/omni/commit/f3f6b6eecd3ffc13b69845dff50d2e8ab31bc0d2) chore: refactor run method and no longer ignore log receiver listener errors
+* [`b316377`](https://github.com/siderolabs/omni/commit/b316377b277f87a184b969b3bbf20ebe6047a0a8) chore: rename 'Dmesg' to 'Console'
+* [`19ee857`](https://github.com/siderolabs/omni/commit/19ee8578a6f1c1bf742699d1b5720dc4c2674c82) test: add a way to recover deleted machines
+* [`e5b5bdc`](https://github.com/siderolabs/omni/commit/e5b5bdc39fa6f3812b15771366f942ddcbe7f328) fix: update SideroLink library for EEXIST fixes
+* [`363de69`](https://github.com/siderolabs/omni/commit/363de69a50b5c1e9d07fa42152cca935844d118b) fix: spec collector equality
+* [`841f3b2`](https://github.com/siderolabs/omni/commit/841f3b22aacc6d2875062ef324d900c5f2091f9d) feat: add ability to supply machine config patches on the machines
+* [`907ca93`](https://github.com/siderolabs/omni/commit/907ca93247267d80125866c2b60225ceca3ada27) test: fix link destroy test
+* [`4c9f99d`](https://github.com/siderolabs/omni/commit/4c9f99d32874cdaff1eb651bf6d74ef39167c273) fix: remove machine status if the machine is in tearing down phase
+* [`d9747e5`](https://github.com/siderolabs/omni/commit/d9747e552e52156a9baeae962a9478231e26c566) fix: make cluster machine status test more reliable
+* [`3bfff3b`](https://github.com/siderolabs/omni/commit/3bfff3bb0eea9d18956dee21aff7f3de900c6b82) fix: do not set up full theila runtime during clients tests
+* [`4bf33bc`](https://github.com/siderolabs/omni/commit/4bf33bc9d37404a733c5039784c80e92800fb3dc) fix: immediately fail the request if the cluster is down
+* [`124a5c2`](https://github.com/siderolabs/omni/commit/124a5c2947978e6bc86d1b19c9eacbcf7f870b53) fix: ensure the created date on resources is set
+* [`14161bf`](https://github.com/siderolabs/omni/commit/14161bf3dad4484868359d186d99d9198b6eed95) feat: add scale up integration test and minor log fixes
+* [`7af06fd`](https://github.com/siderolabs/omni/commit/7af06fd75959eb9e807680ac8a6ba4f0a7f59255) feat: make integration tests a subtests of one global test
+* [`f7c1464`](https://github.com/siderolabs/omni/commit/f7c1464a1002f63daab29b36d19ea16de0cd5794) feat: implement log receiver for logs from Talos
+* [`5b800ea`](https://github.com/siderolabs/omni/commit/5b800ea970215fb4e100ed7b3b73d7e218fd6d86) fix: accumulate bytes received/send in the link resource
+* [`b3b1e9b`](https://github.com/siderolabs/omni/commit/b3b1e9bbfbf62632dc0d8c2239a72793883101ce) feat: machine removal
+* [`fb01bc4`](https://github.com/siderolabs/omni/commit/fb01bc4b26c5b37f15bac923450e1f58fb7a3d89) fix: use Talos 1.2.0
+* [`3a50efe`](https://github.com/siderolabs/omni/commit/3a50efe363c4724f369a02f672848ad7c284847c) feat: filter machines that can be added to cluster
+* [`ba62db5`](https://github.com/siderolabs/omni/commit/ba62db521b47049e92557bf8cfc5f737e496bf57) fix: properly parse `siderolink-api-advertised-url` if there's no port
+* [`96f835a`](https://github.com/siderolabs/omni/commit/96f835a91136f62d9dbdf5c1d1c46c729d57e51e) fix: properly display node selectors in FireFox
+* [`12c20a4`](https://github.com/siderolabs/omni/commit/12c20a42c9dfdea5f88e0e7942fbdb42ea543b95) fix: populate disks when machines are connected during cluster create
+* [`0dc97f8`](https://github.com/siderolabs/omni/commit/0dc97f8696a7c571d5318daf794700342e06f639) fix: adjust overview page to look closer to the mockups
+* [`2b77af8`](https://github.com/siderolabs/omni/commit/2b77af8d39e555970487c3265dfbd63412e90d2f) feat: add the chart showing the count of clusters
+* [`a1dff65`](https://github.com/siderolabs/omni/commit/a1dff6589d64207e6e7331d0407e7857f9c4079d) feat: implement ISO download with embedded kernel args
+* [`37c03d8`](https://github.com/siderolabs/omni/commit/37c03d8cb04b02e79f42e70eeea1e4368445604d) test: pull kubeconfig and interact with Kubernetes API
+* [`75bfb08`](https://github.com/siderolabs/omni/commit/75bfb08f0738fc9f67259caf12902db67860370f) fix: ignore the error on splitting host/port
+* [`3be5a32`](https://github.com/siderolabs/omni/commit/3be5a3254168cddec8f1629789c2ae50d9eaa08e) feat: make the whole cluster list item clickable, add dropdown menu item
+* [`2c9dc99`](https://github.com/siderolabs/omni/commit/2c9dc99000266b3d4c139f27dea4f6283709251e) fix: adjust the look of the Overview page a bit
+* [`aa4a926`](https://github.com/siderolabs/omni/commit/aa4a926cbb85bf63312493b937440a174aed5070) feat: add the button for downloading cluster Kubeconfig on overview page
+* [`4532de6`](https://github.com/siderolabs/omni/commit/4532de6f3d514a534c38a63731c43075698f5c01) feat: support basic auth in `argesctl` command
+* [`b66bb3c`](https://github.com/siderolabs/omni/commit/b66bb3cbcc85d7be4348ecd9a6d5d62f72a90e11) feat: add summary information Overview page
+* [`3bdbce4`](https://github.com/siderolabs/omni/commit/3bdbce41a3ed89a42556d837bc0c5cfe417e22e6) test: more cluster creation tests, two clusters, cleanup
+* [`3b00bd5`](https://github.com/siderolabs/omni/commit/3b00bd5bf417c5c9cb42471d27811c1849a40c78) fix: improve cluster deletion and node reset flow
+* [`2d83d16`](https://github.com/siderolabs/omni/commit/2d83d1694ec73da818004f91ede76a0bca30fe79) test: create a cluster and verify cluster machine statuses
+* [`f471cfd`](https://github.com/siderolabs/omni/commit/f471cfdcf7c9e70f37436e173c3a58c1965e8bb2) fix: copy all labels from the `ClusterMachine` to `ClusterMachineStatus`
+* [`ec32f86`](https://github.com/siderolabs/omni/commit/ec32f8632db104efd6fedc5421179175274d6339) test: add integration tests up to the cluster creation
+* [`a8d3ee5`](https://github.com/siderolabs/omni/commit/a8d3ee5b14a57ad1d9d88512a95032bbda61e734) feat: add kubeconfig command to argesctl and fix kubeconfig
+* [`10b9a3b`](https://github.com/siderolabs/omni/commit/10b9a3ba676a636e488805ed04a0c908c3d2cf53) test: implement API integration test
+* [`3e6b891`](https://github.com/siderolabs/omni/commit/3e6b8913f916dc5e8ac3ef49e14648defa6e1bf6) feat: aggregate cluster machine statuses in cluster status controller
+* [`f6cbc58`](https://github.com/siderolabs/omni/commit/f6cbc58a91124833f0cbae4ecd0c0416acbe8bfa) chore: ignore empty processor info
+* [`c5fc71b`](https://github.com/siderolabs/omni/commit/c5fc71b86a5492d548ae9098c5c74de240ebd800) fix: clean up Kubernetes client and configs when a cluster is destroyed
+* [`e8478fe`](https://github.com/siderolabs/omni/commit/e8478fe5280d5e8a32bb423ec96edacadabc7e43) fix: properly use tracker to cleanup `ClusterMachineConfig` resources
+* [`044fcad`](https://github.com/siderolabs/omni/commit/044fcadb66de61742ab871d10f3fcf0f453f6e27) fix: make `MachineStatusController` connect to configured nodes
+* [`2867099`](https://github.com/siderolabs/omni/commit/2867099a52d651c3b0f9d3abbae266f2792cafe7) feat: add api endpoint to fetch kubeconfig
+* [`5f32667`](https://github.com/siderolabs/omni/commit/5f3266747012b590dd7a7d0ebc23ee0e80abb2ab) test: support registry mirrors for development purposes
+* [`5114695`](https://github.com/siderolabs/omni/commit/5114695cfeb0b6c792002ff5f0f31c1944c269ab) refactor: consistent flag naming
+* [`9ffb19e`](https://github.com/siderolabs/omni/commit/9ffb19e77968c6e411903a2c59fd9a18063b46d4) chore: use latest node
+* [`5512321`](https://github.com/siderolabs/omni/commit/5512321f05b6b657a28abc25470664f6eb6e3d0a) refactor: set better defaults for cli args
+* [`ff88242`](https://github.com/siderolabs/omni/commit/ff882427f56e42039b79900380b61b86d3290269) chore: mark 'siderolink-wireguard-endpoint' flags as required
+* [`4a9d9ad`](https://github.com/siderolabs/omni/commit/4a9d9adef1e521d3c0293b6dc414f572bd8a93d4) feat: add the ClusterMachineStatus resource
+* [`e4e8b62`](https://github.com/siderolabs/omni/commit/e4e8b6264cb48edd014f97129f52aefaa129fd63) refactor: unify all Arges API under a single HTTP server
+* [`5af9049`](https://github.com/siderolabs/omni/commit/5af9049bdc2e09bf410e1b0646e4e08a4366f33b) chore: rename sidebar item
+* [`a4fc47f`](https://github.com/siderolabs/omni/commit/a4fc47f97d79259532b91a8d391e84b59554ed8e) chore: fix build warning
+* [`547b83c`](https://github.com/siderolabs/omni/commit/547b83c4a2a543d5b6ce4dca6cf6f5de87c33dcb) chore: bump siderolink version
+* [`11c31f3`](https://github.com/siderolabs/omni/commit/11c31f39d834e3352b086c1aec665065fd74e944) refactor: drop one of the layered gRPC servers
+* [`0adbbb7`](https://github.com/siderolabs/omni/commit/0adbbb7edfeacedd98a7e84c2f45ac458750a281) feat: introduce a way to copy kernel arguments from the UI
+* [`ce5422a`](https://github.com/siderolabs/omni/commit/ce5422a27771a94cc25be70ec756711d140b2758) fix: import new COSI library to fix YAML marshaling
+* [`d6cec09`](https://github.com/siderolabs/omni/commit/d6cec099cb6f4c3118e4263b9517176858bb9cfb) feat: implement Arges API client, and minimal `argesctl`
+* [`65c8d68`](https://github.com/siderolabs/omni/commit/65c8d683187d82dc730752294c1bc03657f5df78) feat: implement cluster creation view
+* [`8365b00`](https://github.com/siderolabs/omni/commit/8365b00df90ac55f99e0f82e1fa6d4367ebd6a3f) feat: re-enable old Theila UI
+* [`63e703c`](https://github.com/siderolabs/omni/commit/63e703c4e1dfb4bf645fbc9cd28ba2a722e04dc2) fix: update Talos to the latest master
+* [`d33e27b`](https://github.com/siderolabs/omni/commit/d33e27b49113729c5538fce688832152ff96a7ea) feat: implement clusters list view
+* [`cb9e23c`](https://github.com/siderolabs/omni/commit/cb9e23ca6f420ac7b71acf6b19e9012265f3c69b) feat: protect Theila state from external API access
+* [`952c235`](https://github.com/siderolabs/omni/commit/952c2359b32fdd077d85e312707f8b9c9e01ea0c) fix: properly allocated ports in the loadbalancer
+* [`a58c479`](https://github.com/siderolabs/omni/commit/a58c479e9e31f70e806a1f3482b9b984c5c0ca68) chore: report siderolink events kernel arg
+* [`8a56fe3`](https://github.com/siderolabs/omni/commit/8a56fe34ce1966fe28f9e432c696fdd779dfb638) refactor: move Theila resources to public `pkg/`
+* [`1251699`](https://github.com/siderolabs/omni/commit/12516996eda859db6677403ad1f72a3994ea180b) fix: reset the `MachineEventsSnapshot` after the node is reset
+* [`9a2e6af`](https://github.com/siderolabs/omni/commit/9a2e6af3113b795f57c4e3a86c1348b120fa3bbd) feat: implement bootstrap controller
+* [`7107e27`](https://github.com/siderolabs/omni/commit/7107e27ee6b9ba644fc803e4463cbfcf26cf97de) feat: implement apply and reset config controller
+* [`1579eb0`](https://github.com/siderolabs/omni/commit/1579eb09eb58f2cb679205e9e204369f3a362e07) feat: implement machine events handler and `ClusterStatus`
+* [`7214f4a`](https://github.com/siderolabs/omni/commit/7214f4a514a921d6b9df7515116613996416f383) feat: implement cluster load balancer controller
+* [`9c4fafa`](https://github.com/siderolabs/omni/commit/9c4fafaf6b8dc9b7ff08fe28704ca6a2e7efc097) feat: add a controller that manages load balancers for talos clusters
+* [`7e3d80c`](https://github.com/siderolabs/omni/commit/7e3d80ce956d621ed79e4db094808831e18db85b) feat: add a resources that specify configurations for load balancers
+* [`dc0d356`](https://github.com/siderolabs/omni/commit/dc0d356a181b4c37670d2ed4e8d7af370dccef60) feat: support Theila runtime watch with label selectors
+* [`6a568a7`](https://github.com/siderolabs/omni/commit/6a568a72922e34e91f5448d3c1caa2f0b3a02e96) feat: implement `ClusterMachineConfig` resource and it's controller
+* [`3db0f1c`](https://github.com/siderolabs/omni/commit/3db0f1c9d4e2d6f962b6f3216a4f9c7e2575dd21) feat: implement `TalosConfig` controller
+* [`b7ae8e1`](https://github.com/siderolabs/omni/commit/b7ae8e113dc68acd87c4cfe5e3c8349d32bc392d) feat: introduce `Cluster` controller that adds finalizers on Clusters
+* [`8d7ea02`](https://github.com/siderolabs/omni/commit/8d7ea0293e8f57388fd483dc82e79e6b4c76a53f) chore: use label selectors in `TalosConfig`, set labels on the resources
+* [`cff9cb1`](https://github.com/siderolabs/omni/commit/cff9cb19ba8718fdad509b5e91cb8221c6c1ff00) fix: separate advertised endpoint from the actual wireguard endpoint
+* [`5be6cc3`](https://github.com/siderolabs/omni/commit/5be6cc391adf8bcb58b8d47f09dad5aa75d1ad98) feat: implement cluster creation UI
+* [`a1633eb`](https://github.com/siderolabs/omni/commit/a1633eb18772b9e99d687dfddd12fc09fd1ea5c4) chore: add typed wrappers around State, Reader and Writer
+* [`5515f3d`](https://github.com/siderolabs/omni/commit/5515f3d004f54455a1eb1f4977bbb9d663fd1bca) feat: add `ClusterSecrets` resource and controller and tests
+* [`7226f6c`](https://github.com/siderolabs/omni/commit/7226f6cdc60eeb4d6040d1aa0711fed378c50b33) feat: add `Cluster`, `ClusterMachine` and `TalosConfig` resources
+* [`ec44930`](https://github.com/siderolabs/omni/commit/ec44930672ca8954c6ba68975c1799a087ec0c43) feat: enable vtprotobuf optimized marshaling
+* [`15be219`](https://github.com/siderolabs/omni/commit/15be2198872fb637f7ba2e1ff550e4466179f2b1) feat: generate TS constants from go `//tsgen:` comments
+* [`caa4c4d`](https://github.com/siderolabs/omni/commit/caa4c4d285dcd1176a70d87f28ee303cd0483ca8) fix: resource equality for proto specs
+* [`beeca88`](https://github.com/siderolabs/omni/commit/beeca886213332f313f7f3a477d7e7c508e6d058) refactor: clarify code that creates or gets links for nodes
+* [`340c63a`](https://github.com/siderolabs/omni/commit/340c63ad4ba918d4b11ab1f57fdbd3b5e5d8b3dc) feat: implement `Machines` page
+* [`f7bc0c6`](https://github.com/siderolabs/omni/commit/f7bc0c69c69fe515cfa729bc062c730756a53019) feat: accept nodes if they provide the correct join token
+* [`bdf789a`](https://github.com/siderolabs/omni/commit/bdf789a35da5491a4fcbd2af35a1c6efd22ab1fc) feat: immediately reconnect SideroLink peers after Arges restart
+* [`6b74fa8`](https://github.com/siderolabs/omni/commit/6b74fa82ca5757d6f3809853c1ac3e7754efb06d) feat: implement MachineStatusController
+* [`f5db0e0`](https://github.com/siderolabs/omni/commit/f5db0e05a87d5c11b4a1029b14020b19ca67035d) feat: add more info to the siderolink connection spec
+* [`d3e4a71`](https://github.com/siderolabs/omni/commit/d3e4a71af8fd79328e4edda6d9642b83902b2003) refactor: simplify the usage of gRPC resource CRUD API
+* [`2430115`](https://github.com/siderolabs/omni/commit/2430115af1aaac4226b7d5821e1fe706a1088501) feat: implement MachineController and small fixes
+* [`e31d22d`](https://github.com/siderolabs/omni/commit/e31d22d7639753df53c130461ae1f96b9126f3a5) feat: support running Theila without contexts
+* [`a6b3646`](https://github.com/siderolabs/omni/commit/a6b364626bd808687d5ad95307766344b16dd042) refactor: small fixes
+* [`33d2b59`](https://github.com/siderolabs/omni/commit/33d2b59c202f03785580209c885aa297c023fa60) refactor: clean up a bit SideroLink code, fix shutdown
+* [`98ec883`](https://github.com/siderolabs/omni/commit/98ec8830308755c7073a5d4510483e97d8e1d02d) chore: rename main executable to avoid clashing with Theila project
+* [`828721d`](https://github.com/siderolabs/omni/commit/828721d9aa5d912cce628256f75579309d1ad67d) feat: enable COSI persistence for resources
+* [`f1f7883`](https://github.com/siderolabs/omni/commit/f1f788344254e18bcab00a25b56a86289bfb1638) feat: set up siderolink endpoints in Theila
+* [`6439335`](https://github.com/siderolabs/omni/commit/64393353ca7cf430f82bfe73a004da319da28261) refactor: migrate to `typed.Resource` in Theila internal state
+* [`6195274`](https://github.com/siderolabs/omni/commit/61952742a47ea89e89228f057d0d3de351766150) refactor: restructure folders in the project
+* [`1abf72b`](https://github.com/siderolabs/omni/commit/1abf72b4b2e382fe0cf9302b42242152c255a3ee) chore: update Talos libs to the latest version
+* [`16dffd9`](https://github.com/siderolabs/omni/commit/16dffd9058570477b3a648896a89e6445e5b0162) fix: display delta time for pod's age
+* [`8b80726`](https://github.com/siderolabs/omni/commit/8b807262b23cfa830f3ff444d49f11b3a1654703) feat: update favicon to sidero logo
+* [`2da7378`](https://github.com/siderolabs/omni/commit/2da737841c2ae0bf1f1f916dc6f45b1e3996d6e4) feat: show the extended hardware info
+* [`d3c6004`](https://github.com/siderolabs/omni/commit/d3c6004f9767bf0cff9191dc130308c848ede077) chore: allow getting resources without version and group
+* [`eb19087`](https://github.com/siderolabs/omni/commit/eb190875b30275195e52f1a95ed0bb3aae08424f) fix: remove t-header error notification
+* [`5a28202`](https://github.com/siderolabs/omni/commit/5a28202c939ef9683d14fb3d873e0bacb35577db) feat: restyle t-alert component
+* [`9f2b482`](https://github.com/siderolabs/omni/commit/9f2b48228bbfa39d33b07ae43e9fdb34192c3eed) fix: get rid of racy code in the kubeconfig request code
+* [`c40824e`](https://github.com/siderolabs/omni/commit/c40824ecc5d10cb5289e133b8b1f51213aa12f7f) feat: add text Highlight feature
+* [`9018c81`](https://github.com/siderolabs/omni/commit/9018c81bd0d7c58bb5c632c06f3c3904f6674e03) feat: use `~/.talos/config` as a primary source for clusters
+* [`e10547b`](https://github.com/siderolabs/omni/commit/e10547b5761ad96ab8b5766fe5c3f06fcdf86477) refactor: remove old components and not used code parts
+* [`f704684`](https://github.com/siderolabs/omni/commit/f7046846ea8e83a0e39647c4fcc49addf4c56061) fix: properly calculate servers capacity
+* [`755a077`](https://github.com/siderolabs/omni/commit/755a0779014b0a4177e0fc5180db20720be5a814) fix: use proper units for memory and CPU charts on the node monitor page
+* [`d0a083d`](https://github.com/siderolabs/omni/commit/d0a083d1c15c319e236dd258fabcc9a231f797a1) release(v0.2.0-alpha.0): prepare release
+* [`53878ee`](https://github.com/siderolabs/omni/commit/53878eea09c18f2bc0dd55ca11a6743587748319) fix: properly update servers menu item when the context is changed
+* [`b4cb9c7`](https://github.com/siderolabs/omni/commit/b4cb9c7989ec5299785b86acb3fa0ee648efd259) feat: restyle TMonitor page
+* [`f0377e2`](https://github.com/siderolabs/omni/commit/f0377e2ad5da702af71f2706141f4d7c638c7a15) fix: invert chart value for cpu, storage and memory on the overview page
+* [`6ea6ecf`](https://github.com/siderolabs/omni/commit/6ea6ecf12c4d8b5253b4dfc2e64f5b5d787d022a) fix: update capi-utils to fix talosconfig requests for CAPI clusters
+* [`e3796d3`](https://github.com/siderolabs/omni/commit/e3796d3876d33248fd0998901273a14d29a487a3) chore: update capi-utils
+* [`39186eb`](https://github.com/siderolabs/omni/commit/39186ebe50da531f35d21ac2488f8a58c1ef8e78) feat: implement overview page, cluster dropdown, ongoing tasks
+* [`59f2b27`](https://github.com/siderolabs/omni/commit/59f2b27be4d7f5a591fdeae533d649494356250d) docs: update README.md
+* [`2b7831f`](https://github.com/siderolabs/omni/commit/2b7831f2d22106ac8a82f890d73c2705841b0739) feat: add Kubernetes and Servers pages
+* [`4451a5b`](https://github.com/siderolabs/omni/commit/4451a5bc9f5c6b058c6bcf1252b7c83a001cafbe) fix: properly set TaskStatus namespace in the initial call
+* [`4545464`](https://github.com/siderolabs/omni/commit/454546425f2fd7e4418aa8a03465f3a062de804e) fix: add new fields to the TaskStatus spec, update Talos
+* [`891cf3b`](https://github.com/siderolabs/omni/commit/891cf3b79c8430deeed8a168955afd6e97083baa) docs: describe client context types, usage
+* [`309b515`](https://github.com/siderolabs/omni/commit/309b51545ead2ee144244591df2e5ead2849fb11) feat: update k8s upgrades tasks structure for the new UI representation
+* [`5aa8ca2`](https://github.com/siderolabs/omni/commit/5aa8ca24bd3159879c46c8e8a134702b174e3362) feat: add NodesPage
+* [`db434e0`](https://github.com/siderolabs/omni/commit/db434e07b9f23562bd746a0f78e3868b079006e2) feat: add TPagination component
+* [`0b51727`](https://github.com/siderolabs/omni/commit/0b51727efed31f13f52fa20b360071e7e2a6d9eb) feat: add Pods, Dashboard, Upgrade views, etc
+* [`c549b8b`](https://github.com/siderolabs/omni/commit/c549b8b9ee8a563f14b2e791f91a7b3cb0430aa7) feat: add Overview and Upgrade Kubernetes pages
+* [`cec2e85`](https://github.com/siderolabs/omni/commit/cec2e854f4f3999109220902bccaee6c25d1f502) chore: define constants for all used resource types
+* [`962bdaf`](https://github.com/siderolabs/omni/commit/962bdaf6406ab8e5febea0ad8d32da9c86fa39e7) feat: add TSideBar
+* [`fa28ccb`](https://github.com/siderolabs/omni/commit/fa28ccb67f52c1dd9096b23388427d78be526275) feat: add TheHeader component
+* [`f3418a5`](https://github.com/siderolabs/omni/commit/f3418a59e38e551bd0be7cc7ae66ef4645719aa7) feat: button;icons;config
+* [`db30f50`](https://github.com/siderolabs/omni/commit/db30f503730bdbd8ed359d4070dea0214df67fcd) fix: add `frontend/node_modules` to gitignore
+* [`a675b86`](https://github.com/siderolabs/omni/commit/a675b86f7d55cecd4ae1277cbf057a6bc264940c) fix: properly pass label selector to the metadata in ClusterListItem
+* [`7911d6a`](https://github.com/siderolabs/omni/commit/7911d6a31abdb51e86586a025b705ddfeb1dd19e) chore: add ability to start local development server for the frontend
+* [`076fee1`](https://github.com/siderolabs/omni/commit/076fee10c6583dc49e6530b02cab1f757da0e853) feat: use CAPI utils for CAPI requests
+* [`5ed5ba2`](https://github.com/siderolabs/omni/commit/5ed5ba2a122585a97cf65c3ff081126752cd26fa) fix: more websocket client bugfixes
+* [`6fe22ad`](https://github.com/siderolabs/omni/commit/6fe22ad370026380ba75b38e261870addc341e6f) fix: reset reconnect timeouts after the client is reconnected
+* [`c4b144a`](https://github.com/siderolabs/omni/commit/c4b144af272a46dbdc8d1bb35784e09ba1b79987) fix: talosconfig/kubeconfig when using the default context
+* [`b439a37`](https://github.com/siderolabs/omni/commit/b439a371c13a8d46d986a1dae3d6f4b7cba4a298) fix: properly handle Same-Origin header in websockets
+* [`ffffed1`](https://github.com/siderolabs/omni/commit/ffffed100cec18209bae723b9919eb8613950649) fix: read node name from nodename resource instead of hostname
+* [`2d6f984`](https://github.com/siderolabs/omni/commit/2d6f9844440a6d18b3093dea6228ac6a237dc86b) fix: use secure websockets if the page itself is using https
+* [`799f2d2`](https://github.com/siderolabs/omni/commit/799f2d2d00762d5270dd4a3f4b4b312b32dbb7dd) feat: rework the node overview page
+* [`0d0eaf4`](https://github.com/siderolabs/omni/commit/0d0eaf4b2721dfa1b04bce24e4a1e476579e3a74) fix: make charts height resize depending on the screen height
+* [`7de0101`](https://github.com/siderolabs/omni/commit/7de0101bf0e613653caadd5733db0e29a6bb5bfb) fix: use polyfill to fix streaming APIs on Firefox
+* [`0cff2b0`](https://github.com/siderolabs/omni/commit/0cff2b02b5d8b2c2c644067cf6bd3ed573cb784d) feat: small UI adjustments
+* [`d70bd41`](https://github.com/siderolabs/omni/commit/d70bd41992e13fb3dacc1740532083a8f6ce9afa) feat: implement accept Sidero server functional
+* [`f3a6e16`](https://github.com/siderolabs/omni/commit/f3a6e16a79e1bca9ea6c87eb0d3e0f2a6c65ff2e) feat: add top processes list to the Overview page
+* [`3cf97e4`](https://github.com/siderolabs/omni/commit/3cf97e4b9e07f8383da8a6fb7a993b70c8f82503) refactor: use the same object for gRPC metadata context and messages
+* [`243206f`](https://github.com/siderolabs/omni/commit/243206f95aa6ba944bd4361db6274e7072bae1fc) release(v0.1.0-alpha.2): prepare release
+* [`e5b6f29`](https://github.com/siderolabs/omni/commit/e5b6f29fd298904e06284a67681cc0ce5135145f) feat: implement node Reset
+* [`bcb7d23`](https://github.com/siderolabs/omni/commit/bcb7d237c31f42a35f5c3b53e7615ddae1ce0a8b) fix: node IP not being truncated
+* [`e576d33`](https://github.com/siderolabs/omni/commit/e576d33ba40f629eed14668f2d9bf77d7fef62c2) feat: add upgrade UI for CAPI clusters
+* [`10cdce7`](https://github.com/siderolabs/omni/commit/10cdce7fcc219af969a85a41d18fb904936faa0a) fix: server labels key/value order and chevron orientation
+* [`4007177`](https://github.com/siderolabs/omni/commit/40071775d6de1eea697f67e55441c384c86e75d9) feat: implement Kubernetes upgrade UI components
+* [`f4917ee`](https://github.com/siderolabs/omni/commit/f4917eecfb3173acf7518883c738118c8537d657) fix: accumulate chart updates into a single update
+* [`414d76c`](https://github.com/siderolabs/omni/commit/414d76c1c926695e5d66787b34decae92e151b45) feat: implement upgrade controller
+* [`36742ea`](https://github.com/siderolabs/omni/commit/36742ea5ab1e8a983b73f73443c1cf122a90d054) feat: introduce create, delete and update gRPC APIs
+* [`2b3d314`](https://github.com/siderolabs/omni/commit/2b3d314a460b385d8c13bdd025fadb37b5508bdc) feat: install internal COSI runtime alongside with K8s and Talos
+* [`ae7f784`](https://github.com/siderolabs/omni/commit/ae7f784d08621d18075b1763f026a7513d9d9dcb) refactor: move all generated TypeScript files under `frontend/src/api`
+* [`61bad64`](https://github.com/siderolabs/omni/commit/61bad64540c28fb0520a39a6c64d64c3e9353361) release(v0.1.0-alpha.1): prepare release
+* [`8e5e722`](https://github.com/siderolabs/omni/commit/8e5e7229470713d2fbd5ad0df027bd825f5481e3) feat: implement node reboot controls
+* [`9765a88`](https://github.com/siderolabs/omni/commit/9765a88069f05c49f5a7d854675ee37e1c7a8273) feat: dmesg logs page
+* [`ecbbd67`](https://github.com/siderolabs/omni/commit/ecbbd67936b1fb570d706fe3b93b81f6089b5124) feat: use updated timestamp to display event time on the graph
+* [`7c56773`](https://github.com/siderolabs/omni/commit/7c56773448a496fe1ceeec3c47978975ce336b3a) refactor: use Metadata to pass context in all gRPC calls
+* [`abb4733`](https://github.com/siderolabs/omni/commit/abb47330222217d7d8b5c36ff28902415bc755d8) feat: implement service logs viewer
+* [`8e8e032`](https://github.com/siderolabs/omni/commit/8e8e032b20d082bfd71a26c2af2bbc821d9c2a7b) feat: add ability to pick sort order on the servers page
+* [`1a1c728`](https://github.com/siderolabs/omni/commit/1a1c728ac929bb02db7f1bd0b991a747e63fe81a) fix: resolve the issue with idFn value generating undefined ids
+* [`2e83fe2`](https://github.com/siderolabs/omni/commit/2e83fe23a7feb51b73bc7b53997636b641ae42b9) feat: allow filtering servers by picking from predefined categories
+* [`48f776e`](https://github.com/siderolabs/omni/commit/48f776e10f6c79772481393d7397557419520046) fix: navigate home when changing the context
+* [`a1ce0ca`](https://github.com/siderolabs/omni/commit/a1ce0ca8c8fabb2267c3dc6f6b1509f131e18ba8) fix: resolve services search issues
+* [`5b768f8`](https://github.com/siderolabs/omni/commit/5b768f85277ee31131994ae0b253700a5d26978d) feat: make stacked lists searchable
+* [`ec1bc5b`](https://github.com/siderolabs/omni/commit/ec1bc5b48943e473c756ebc7a8c943a34cdeaeac) feat: implement stats component and add stats to the servers page
+* [`1a85999`](https://github.com/siderolabs/omni/commit/1a8599981f93fc5ce68e23b1b4cd7aabbb43c90c) feat: align Sidero servers list outlook with the wireframes
+* [`524264c`](https://github.com/siderolabs/omni/commit/524264c515a9efdce9f06a3c2ebd59c2979f9b2a) fix: display error message and use proper layout for the spinner
+* [`5263d16`](https://github.com/siderolabs/omni/commit/5263d16cfb936aad9ba461e0cc7b150ff9b806d5) feat: introduce node stats page
+* [`8feb35e`](https://github.com/siderolabs/omni/commit/8feb35e95a6d588e1d9c605231308976be452a2e) feat: make root sidebar sections collapsible
+* [`36ad656`](https://github.com/siderolabs/omni/commit/36ad656a3bbdc1e2915a87c0d09c31738ae3f3c4) feat: detect cluster capabilities
+* [`a25d90d`](https://github.com/siderolabs/omni/commit/a25d90d58a85b3b73432858f134fa09cd1338d5c) feat: support switching context in the UI
+* [`67903e2`](https://github.com/siderolabs/omni/commit/67903e23f49623ae9a9a6b297282c62aa8579aa8) refactor: separate Watch from StackedList
+* [`76b9e1d`](https://github.com/siderolabs/omni/commit/76b9e1dc88cccf74cebb28470eae5e9249809d40) release(v0.1.0-alpha.0): prepare release
+* [`7bde4c8`](https://github.com/siderolabs/omni/commit/7bde4c8c6e16c197578cbb4e037a05d50194958f) fix: cobra command was initialized but not actually used
+* [`04624c9`](https://github.com/siderolabs/omni/commit/04624c95cec587ae0b0d8888d95d484ef8d98cfa) feat: support getting Talos and Kubernetes client configs for a cluster
+* [`219b9c8`](https://github.com/siderolabs/omni/commit/219b9c8663fe03af65796b0b6299cff5e66b3efc) feat: implement notifications component
+* [`f8b19a0`](https://github.com/siderolabs/omni/commit/f8b19a0585e6e19c0e7da4e4afad5bbd264e0029) feat: decouple watch list from the view
+* [`2f8c96e`](https://github.com/siderolabs/omni/commit/2f8c96e44012e7bd0db9869eeb90ab48ff41e162) feat: implement appearance settings modal window
+* [`de745d6`](https://github.com/siderolabs/omni/commit/de745d6b7170a9c509cc835a8b675a1c788e80f4) feat: implement Talos runtime backend
+* [`af69a0d`](https://github.com/siderolabs/omni/commit/af69a0d58906a86974bc7dbec2c09ca9f78b152f) feat: support getting Kubernetes resource through gRPC gateway
+* [`2c50010`](https://github.com/siderolabs/omni/commit/2c50010b0d9f7b168354fedd698600d94123c354) feat: implement breadcrumbs component, add support for table header
+* [`3fc1e80`](https://github.com/siderolabs/omni/commit/3fc1e808875f6f502cd2657c4548dd886fbf465d) feat: implement nodes view
+* [`961e93a`](https://github.com/siderolabs/omni/commit/961e93a4af430eaa9efcd1e2922af8072fe4cf85) feat: implement clusters view
+* [`e8248ff`](https://github.com/siderolabs/omni/commit/e8248ffab89633cae8834631e39cf4dce5e4147a) feat: use plain zap instead of SugaredLogger everywhere
+* [`81ba93d`](https://github.com/siderolabs/omni/commit/81ba93dffdc37efdde06557a1c63511a7d61b2f2) chore: generate websocket protocol messages using protobuf
+* [`37a878d`](https://github.com/siderolabs/omni/commit/37a878dd396b650df8afaf6730f9afe52d35569c) feat: make JS websocket reconnect on connection loss
+* [`23b3281`](https://github.com/siderolabs/omni/commit/23b3281f8880800a9084e1c8a74617fcf966c846) feat: use dynamic watcher to allow listing any kinds of resources
+* [`16475f5`](https://github.com/siderolabs/omni/commit/16475f51cc9651736213b36c57381b24dcabdc62) feat: implement real time update server on top of web sockets
+* [`76b39ae`](https://github.com/siderolabs/omni/commit/76b39ae563d9f09ecac3451389e3d260abdad48d) feat: create hello world Vue app using Kres
+* [`baab493`](https://github.com/siderolabs/omni/commit/baab493f155cbd78c2e8af6ce45268c40ef6aeed) Initial commit
+
+
+
+### Changes since v0.1.0-alpha.0
+81 commits
+
+
+* [`8b284f3`](https://github.com/siderolabs/omni/commit/8b284f3aa26cf8a34452f33807dcc04045e7a098) feat: implement Kubernetes API OIDC proxy and OIDC server
+* [`adad8d0`](https://github.com/siderolabs/omni/commit/adad8d0fe2f3356e97de613104196233a3b98ff5) refactor: rework LoadBalancerConfig/LoadBalancerStatus resources
+* [`08e2cb4`](https://github.com/siderolabs/omni/commit/08e2cb4fd40ec918bf458edd6a5d8e6c86fe5c97) feat: support editing config patches on cluster and machine set levels
+* [`e2197c8`](https://github.com/siderolabs/omni/commit/e2197c83e994afb435671f5af5cdefa843bbddb5) test: e2e testing improvements
+* [`ec9051f`](https://github.com/siderolabs/omni/commit/ec9051f6dfdf1f5acaf3fa6766dc1195b6f6dcdd) fix: config patching
+* [`e2a1d6c`](https://github.com/siderolabs/omni/commit/e2a1d6c78809eaa4168ca5ede433824797a6aa4e) fix: send logs in JSON format by default
+* [`954dd70`](https://github.com/siderolabs/omni/commit/954dd70b935b7c373ba5830fd7ad6e965f6b0da8) chore: replace talos-systems depedencies with siderolabs
+* [`acf94db`](https://github.com/siderolabs/omni/commit/acf94db8ac80fb6f15cc87ff276b7edca0cb8661) chore: add payload logger
+* [`838c716`](https://github.com/siderolabs/omni/commit/838c7168c64f2296a9e01d3ef6ab4feb9f16aeb9) fix: allow time skew on validating the public keys
+* [`dd481d6`](https://github.com/siderolabs/omni/commit/dd481d6cb3620790f6e7a9c8e305defb507cbe5f) fix: refactor runGRPCProxy in router tests to catch listener errors
+* [`e68d010`](https://github.com/siderolabs/omni/commit/e68d010685d4f0a5d25fee671744119cecf6c27b) chore: small fixes
+* [`ad86875`](https://github.com/siderolabs/omni/commit/ad86875ec146e05d7d7f461bf7c8094a8c143df5) feat: minor adjustments on the cluster create page
+* [`e61f194`](https://github.com/siderolabs/omni/commit/e61f1943e965287c79fbaef05760bb0b0deee988) chore: implement debug handlers with controller dependency graphs
+* [`cbbf901`](https://github.com/siderolabs/omni/commit/cbbf901e601d31c777ad2ada0f0036c57020ba96) refactor: use generic TransformController more
+* [`33f9f2c`](https://github.com/siderolabs/omni/commit/33f9f2ce3ec0999198f311ae4bae9b58e57153c9) chore: remove reflect from runtime package
+* [`6586963`](https://github.com/siderolabs/omni/commit/65869636aa33013b5feafb06e727b9d2a4cf1c19) feat: add scopes to users, rework authz & add integration tests
+* [`bb355f5`](https://github.com/siderolabs/omni/commit/bb355f5c659d8c66b825de409d9446767005a2bb) fix: reload the page to init the UI Authenticator on signature fails
+* [`c90cd48`](https://github.com/siderolabs/omni/commit/c90cd48eefa7f29328a456aa5ca474eece17c6fe) chore: log auth context
+* [`d278780`](https://github.com/siderolabs/omni/commit/d2787801a4904fe895996e5319f301a1d7ca76df) fix: update Clusters page UI
+* [`5e77607`](https://github.com/siderolabs/omni/commit/5e776072285e535e93c0458774dcad810b9b857a) tests: abort on first failure
+* [`4c55980`](https://github.com/siderolabs/omni/commit/4c5598083ff6d8763c8763d8e46a3d7b659784ff) chore: get full method name from the service
+* [`2194f43`](https://github.com/siderolabs/omni/commit/2194f4391607e6e73bce1917d2744e78fdd2cebc) feat: redesign cluster list view
+* [`40b3f23`](https://github.com/siderolabs/omni/commit/40b3f23071096987e8a7c6f30a2622c317c190cb) chore: enable gRPC request duration histogram
+* [`0235bb9`](https://github.com/siderolabs/omni/commit/0235bb91a71510cf4d349eedd3625b119c7e4e11) refactor: make sure Talos/Kubernetes versions are defined once
+* [`dd6154a`](https://github.com/siderolabs/omni/commit/dd6154a45d5dcd14870e0aa3f97aa1d4e53bdcfb) chore: add public key pruning
+* [`68908ba`](https://github.com/siderolabs/omni/commit/68908ba330ecd1e285681e24db4b9037eb2e8202) fix: bring back UpgradeInfo API
+* [`f1bc692`](https://github.com/siderolabs/omni/commit/f1bc692c9125f7683fe5f234b03eb3521ba7e773) refactor: drop dependency on Talos Go module
+* [`0e3ef43`](https://github.com/siderolabs/omni/commit/0e3ef43cfed68e53879e6c22b46e7d0568ddc05f) feat: implement talosctl access via Omni
+* [`2b0014f`](https://github.com/siderolabs/omni/commit/2b0014fea15da359217f89ef723965dcc9faa739) fix: provide a way to switch the user on the authenticate page
+* [`e295d7e`](https://github.com/siderolabs/omni/commit/e295d7e2854ac0226e7efda32864f6a687a88470) chore: refactor all controller tests to use assertResource function
+* [`8251dfb`](https://github.com/siderolabs/omni/commit/8251dfb9e44341e9df9471f387cc76c91359cf84) refactor: extract PGP client key handling
+* [`02da9ee`](https://github.com/siderolabs/omni/commit/02da9ee66f15462e6f4d7da18515651a5fde11aa) refactor: use extracted go-api-signature library
+* [`4bc3db4`](https://github.com/siderolabs/omni/commit/4bc3db4dcbc14e0e51c7a3b5257686b671cc2823) fix: drop not working upgrade k8s functional
+* [`17ca75e`](https://github.com/siderolabs/omni/commit/17ca75ef864b7a59f9c6f829de19cc9630a670c0) feat: add 404 page
+* [`8dcde2a`](https://github.com/siderolabs/omni/commit/8dcde2af3ca49d9be16cc705c0b403826f2eee5d) feat: implement logout flow in the frontend
+* [`ba766b9`](https://github.com/siderolabs/omni/commit/ba766b9922302b9d1f279b74caf94e6ca727f86f) fix: make `omnictl` correctly re-auth on invalid key
+* [`fd16f87`](https://github.com/siderolabs/omni/commit/fd16f8743d3843e8ec6735a7c2e96532694b876e) fix: don't set timeout on watch gRPC requests
+* [`8dc3cc6`](https://github.com/siderolabs/omni/commit/8dc3cc682e5419c3824c6e740a32085c386b8817) fix: don't use `omni` in external names
+* [`2513661`](https://github.com/siderolabs/omni/commit/2513661578574255ca3f736d3dfa1f307f5d43b6) fix: reset `Error` field of the `MachineSetStatus`
+* [`b611e99`](https://github.com/siderolabs/omni/commit/b611e99e14a7e2ebc64c55ed5c95a47e17d6ac32) fix: properly handle `Forbidden` errors on the authentication page
+* [`8525502`](https://github.com/siderolabs/omni/commit/8525502265b10dc3cc056d301785f6f60e4f7e22) fix: stop runners properly and clean up StatusMachineSnapshot
+* [`ab0190d`](https://github.com/siderolabs/omni/commit/ab0190d9a41b830daf60173b998acdbcbbdd3754) feat: implement scopes and enforce authorization
+* [`9198d96`](https://github.com/siderolabs/omni/commit/9198d96ea9d57bb5949c59350aec42b2ce13ebac) feat: sign gRPC requests on the frontend to enable Authentication flow
+* [`bdd8f21`](https://github.com/siderolabs/omni/commit/bdd8f216a9eca7ec657fa0dc554e663743f058d1) chore: remove reset button and fix padding
+* [`362db57`](https://github.com/siderolabs/omni/commit/362db570349b4a2659f746ce18a436d684481ecb) fix: gRPC verifier should verify against original JSON payload
+* [`30186b8`](https://github.com/siderolabs/omni/commit/30186b8cfe2eea6eaade8bacf31114886d3da3ea) fix: omnictl ignoring omniconfig argument
+* [`e8ab0ba`](https://github.com/siderolabs/omni/commit/e8ab0ba45648b8f521500b46fe032797da6a111f) fix: do not attempt to execute failed integration test again
+* [`9fda25e`](https://github.com/siderolabs/omni/commit/9fda25ef45f0060cc6c3ec812f5fa1c7b1015801) chore: add more info on errors to different controllers
+* [`ccda526`](https://github.com/siderolabs/omni/commit/ccda5260c4645b5929724574a9f856eeaa4c232f) chore: bump grpc version
+* [`b1ac125`](https://github.com/siderolabs/omni/commit/b1ac1255da5ca4b5d9c409e27c51e4298275e73c) chore: emit log when we got machine status event.
+* [`005d257`](https://github.com/siderolabs/omni/commit/005d257c25c745b61e5a25c39167d511710562c7) chore: set admin role specifically for Reboot request.
+* [`27f0e30`](https://github.com/siderolabs/omni/commit/27f0e309cec76a454e5bb24c2df1e62d9e4718e0) chore: update deps
+* [`77f0219`](https://github.com/siderolabs/omni/commit/77f02198c1e7fb215548f3a0e2be30a0e19aaf6d) test: more unit-tests for auth components
+* [`0bf6ddf`](https://github.com/siderolabs/omni/commit/0bf6ddfa46e0ea6ad255ede00a600c390344e221) fix: pass through HTTP request if auth is disabled
+* [`4f3a67b`](https://github.com/siderolabs/omni/commit/4f3a67b08e03a1bad65c2acb8d65f0281fdd2f9e) fix: unit-tests for auth package and fixes
+* [`e3390cb`](https://github.com/siderolabs/omni/commit/e3390cbbac1d0e78b72512c6ebb64a8f53dcde17) chore: rename arges-theila to omni
+* [`14d2614`](https://github.com/siderolabs/omni/commit/14d2614538ec696d468a0850bd4ee7bc6884c3b1) chore: allow slashes in secretPath
+* [`e423edc`](https://github.com/siderolabs/omni/commit/e423edc072714e7f693249b60079f5f700cc0a65) fix: add unit-tests for auth message and fix issues
+* [`b5cfa1a`](https://github.com/siderolabs/omni/commit/b5cfa1a84e93b6bbf5533c599917f293fc5cdf66) feat: add vault client
+* [`b47791c`](https://github.com/siderolabs/omni/commit/b47791ce303cbb9a8aab279685d17f92a480c7f4) feat: sign grpc requests on cli with pgp key & verify it on server
+* [`d6ef4d9`](https://github.com/siderolabs/omni/commit/d6ef4d9c36758cb0091e2c528b848952f312941a) feat: split account ID and name
+* [`e412e1a`](https://github.com/siderolabs/omni/commit/e412e1a69edad0d19d7e46fa3aa076dcb8e6d4b6) chore: workaround the bind problem
+* [`e23cc59`](https://github.com/siderolabs/omni/commit/e23cc59bb8cb8f9df81738d4c58aed08d80fa9c4) chore: bump minimum Talos version to v1.2.4
+* [`0638a29`](https://github.com/siderolabs/omni/commit/0638a29d78c092641573aa2b8d2e594a7ff6aab4) feat: stop using websockets
+* [`8f3c19d`](https://github.com/siderolabs/omni/commit/8f3c19d0f0ecfbe5beabc7dc508dcafa720e83e2) feat: update install media to be identifiable
+* [`70d1e35`](https://github.com/siderolabs/omni/commit/70d1e354466618bb07c13445a16ca639be12009e) feat: implement resource encryption
+* [`7653638`](https://github.com/siderolabs/omni/commit/76536386499889994b65f66a8a40f18b5535c5ba) fix: fix NPE in integration tests
+* [`e39849f`](https://github.com/siderolabs/omni/commit/e39849f4047f028251123781bd8be350ebbfd65d) chore: update Makefile and Dockerfile with kres
+* [`4709473`](https://github.com/siderolabs/omni/commit/4709473ec20fbf92a3240fb3376a322f1321103a) fix: return an error if external etcd client fails to be built
+* [`5366661`](https://github.com/siderolabs/omni/commit/536666140556ba9b997a2b5d4441ea4b5f42d1c5) refactor: use generic transform controller
+* [`a2a5f16`](https://github.com/siderolabs/omni/commit/a2a5f167f21df6375767d018981651d60bb2f768) feat: limit access to Talos API via Omni to `os:reader`
+* [`e254201`](https://github.com/siderolabs/omni/commit/e2542013938991faa8f1c521fc524b8fcf31ea34) feat: merge internal/external states into one
+* [`3258ca4`](https://github.com/siderolabs/omni/commit/3258ca487c818a34924f138640f44a2e51d307fb) feat: add `ControlPlaneStatus` controller
+* [`1c0f286`](https://github.com/siderolabs/omni/commit/1c0f286a28f5134333130708d031dbfa11051a42) refactor: use `MachineStatus` Talos resource
+* [`0a6b19f`](https://github.com/siderolabs/omni/commit/0a6b19fb916ea301a8f5f6ccd9bbdaa7cb4c39e0) chore: drop support for Talos resource API
+* [`ee5f6d5`](https://github.com/siderolabs/omni/commit/ee5f6d58a2b22a87930d3c8bb9963f71c92f3908) feat: add auth resource types & implement CLI auth
+* [`36736e1`](https://github.com/siderolabs/omni/commit/36736e14e5c837d38568a473834d14073b88a153) fix: use correct protobuf URL for cosi resource spec
+* [`b98c56d`](https://github.com/siderolabs/omni/commit/b98c56dafe33beef7792bd861ac4e637fe13c494) feat: bump minimum version for Talos to v1.2.3
+* [`b93bc9c`](https://github.com/siderolabs/omni/commit/b93bc9cd913b017c66502d96d99c52e4d971e231) chore: move containers and optional package to the separate module
+* [`e1af4d8`](https://github.com/siderolabs/omni/commit/e1af4d8a0bee31721d8946ef452afe04da6b494d) chore: update COSI to v0.2.0-alpha.1
+* [`788dd37`](https://github.com/siderolabs/omni/commit/788dd37c0be32745547ee8268aa0f004041dc96f) feat: implement and enable by default etcd backend
+
+
+
+### Dependency Changes
+
+This release has no dependency changes
+
+## [Omni 0.1.0-alpha.0](https://github.com/siderolabs/arges-theila/releases/tag/v0.1.0-alpha.0) (2022-09-19)
+
+Welcome to the v0.1.0-alpha.0 release of Omni!
+*This is a pre-release of Omni*
+
+
+
+Please try out the release binaries and report any issues at
+https://github.com/siderolabs/arges-theila/issues.
+
+### Contributors
+
+* Artem Chernyshev
+* Artem Chernyshev
+* Andrey Smirnov
+* Philipp Sauter
+* evgeniybryzh
+* Dmitriy Matrenichev
+* Utku Ozdemir
+* Noel Georgi
+* Andrew Rynhard
+* Andrew Rynhard
+* Gerard de Leeuw
+* Steve Francis
+* Tim Jones
+* Volodymyr Mazurets
+
+### Changes
+267 commits
+
+
+* [`8a9c4f1`](https://github.com/siderolabs/arges-theila/commit/8a9c4f17ed6ee0d8e4a51b466d60a8278cd50f9c) feat: implement CLI configuration file (omniconfig)
+* [`b0c92d5`](https://github.com/siderolabs/arges-theila/commit/b0c92d56da00529c106f042399c1163375046785) feat: implement etcd audit controller
+* [`0e993a0`](https://github.com/siderolabs/arges-theila/commit/0e993a0977c711fb8767e3de2ad828fd5b9e688f) feat: properly support scaling down the cluster
+* [`264cdc9`](https://github.com/siderolabs/arges-theila/commit/264cdc9e015fd87724c7a07128d1136153732540) refactor: prepare for etcd backend integration
+* [`b519d17`](https://github.com/siderolabs/arges-theila/commit/b519d17971bb1c919286813b4c2465c2f5803a03) feat: show version in the UI
+* [`a2fb539`](https://github.com/siderolabs/arges-theila/commit/a2fb5397f9efb22a1354c5675180ca49537bee55) feat: keep track of loadbalancer health in the controller
+* [`4789c62`](https://github.com/siderolabs/arges-theila/commit/4789c62af0d1694d8d0a492cd6fb7d436e213fe5) feat: implement a new controller that can gather cluster machine data
+* [`bd3712e`](https://github.com/siderolabs/arges-theila/commit/bd3712e13491ede4610ab1452ae85bde6d92b2db) fix: populate machine label field in the patches created by the UI
+* [`ba70b4a`](https://github.com/siderolabs/arges-theila/commit/ba70b4a48623939d31775935bd0338c0d60ab65b) fix: rename to Omni, fix workers scale up, hide join token
+* [`47b45c1`](https://github.com/siderolabs/arges-theila/commit/47b45c129160821576d808d9a46a9ec5d14c6469) fix: correct filenames for Digital Ocean images
+* [`9d217cf`](https://github.com/siderolabs/arges-theila/commit/9d217cf16d432c5194110ae16a566b44b02a567e) feat: introduce new resources, deprecate `ClusterMachineTemplate`
+* [`aee153b`](https://github.com/siderolabs/arges-theila/commit/aee153bedb2f7856913a54b282603b07bf20059b) fix: address style issue in the Pods paginator
+* [`752dd44`](https://github.com/siderolabs/arges-theila/commit/752dd44ac42c95c644cad5640f6b2c5536a29676) chore: update Talos machinery to 1.2.0 and use client config struct
+* [`88d7079`](https://github.com/siderolabs/arges-theila/commit/88d7079a6656605a1a8dfed56d392414583a283e) fix: regenerate sources from proto files that were rolled back.
+* [`84062c5`](https://github.com/siderolabs/arges-theila/commit/84062c53417197417ff636a667289342089f390c) chore: update Talos to the latest master
+* [`5a139e4`](https://github.com/siderolabs/arges-theila/commit/5a139e473abcdf7fd25ad7c61dad8cbdc964a453) fix: properly route theila internal requests in the gRPC proxy
+* [`4be4fb6`](https://github.com/siderolabs/arges-theila/commit/4be4fb6a4e0bca29b32e1b732c227c9e7a0b1f43) feat: add support for 'talosconfig' generation
+* [`9235b8b`](https://github.com/siderolabs/arges-theila/commit/9235b8b522d4bc0712012425b68ff89e455886b9) fix: properly layer gRPC proxies
+* [`9a516cc`](https://github.com/siderolabs/arges-theila/commit/9a516ccb5c892ed8fe41f7cf69aaa5bb1d3fa471) fix: wait for selector of 'View All' to render in e2e tests.
+* [`3cf3aa7`](https://github.com/siderolabs/arges-theila/commit/3cf3aa730e7833c0c1abe42a6afb87a85f14b58c) fix: some unhandled errors in the e2e tests.
+* [`c32c7d5`](https://github.com/siderolabs/arges-theila/commit/c32c7d55c92007aa1aa10feab3c7a7de2b2afc42) fix: ignore updating cluster machines statuses without machine statuses
+* [`4cfa307`](https://github.com/siderolabs/arges-theila/commit/4cfa307b85b410b44e482b259d14670b55e4a237) chore: run rekres, fix lint errors and bump Go to 1.19
+* [`eb2d449`](https://github.com/siderolabs/arges-theila/commit/eb2d4499f1a3da7bc1552a6b099c28bed6fd0e4d) fix: skip the machines in `tearingDown` phase in the controller
+* [`9ebc769`](https://github.com/siderolabs/arges-theila/commit/9ebc769b89a2bab37fd081e555f84e3e4c99187e) fix: allow all services to be proxied by gRPC router
+* [`ea2b01d`](https://github.com/siderolabs/arges-theila/commit/ea2b01d0a0e054b259d710317fe368882534cf4c) fix: properly handle non empty resource id in the K8s resource watch
+* [`3bb7da3`](https://github.com/siderolabs/arges-theila/commit/3bb7da3a0fa6b746f6a7b9aa668e055bdf825e6a) feat: show a Cluster column in the Machine section
+* [`8beb70b`](https://github.com/siderolabs/arges-theila/commit/8beb70b7f045a218f9cb753e1402a07542b0bf1c) fix: ignore tearing down clusters in the `Cluster` migrations
+* [`319d4e7`](https://github.com/siderolabs/arges-theila/commit/319d4e7947cb78135f5a14c02afe5814c56a312c) fix: properly handle `null` memory modules list
+* [`6c2120b`](https://github.com/siderolabs/arges-theila/commit/6c2120b5ae2bd947f473d002dfe165646032e811) chore: introduce migrations manager for COSI DB state
+* [`ec52139`](https://github.com/siderolabs/arges-theila/commit/ec521397946cc15929472feb7c45435fb48df848) fix: filter out invalid memory modules info coming from Talos nodes
+* [`8e87031`](https://github.com/siderolabs/arges-theila/commit/8e870313a3a31d052eecf81acb522433ff98ae79) fix: bump loadbalancer timeout settings
+* [`bc0ed26`](https://github.com/siderolabs/arges-theila/commit/bc0ed2672064a6bf148cd9799b35a2790f5aa7f6) feat: introduce websocket, HTTP requests monitoring
+* [`857401f`](https://github.com/siderolabs/arges-theila/commit/857401f54e3922a9ab85d7dc703a5afb70c6ee45) feat: add HTTP logging (static, gateway), and websocket logging
+* [`eb612a3`](https://github.com/siderolabs/arges-theila/commit/eb612a38e9c71913ebecc9f345e17844d60800b8) fix: do hard stop of events sink gRPC server after 5 seconds
+* [`3162513`](https://github.com/siderolabs/arges-theila/commit/31625135e2b971d6b9f92eb4096c010113030a80) fix: populate nodes filter dropdown properly and rewrite filter function
+* [`5713a51`](https://github.com/siderolabs/arges-theila/commit/5713a516391a5190fac9b7044a9f71952ce15479) fix: make `TSelectList` search filter the items in the dropdown
+* [`f2519ff`](https://github.com/siderolabs/arges-theila/commit/f2519ff51b88766a907f1d7717ef74031157fd56) feat: don't allow using nodes with not enough mem for the cluster
+* [`9e474d6`](https://github.com/siderolabs/arges-theila/commit/9e474d69c76a898fc5b6fcd9fdc8e87f25b7dc53) feat: show disconnected warning in the machines list
+* [`fa52b48`](https://github.com/siderolabs/arges-theila/commit/fa52b48f54362c7305681ca79a7d98237531f2b4) feat: redesign Installation Media selection menu
+* [`01e301a`](https://github.com/siderolabs/arges-theila/commit/01e301a875699cf6fcc887cb31cd7939338f58e9) fix: query node list using `talosctl get members` instead of K8s nodes
+* [`e694df5`](https://github.com/siderolabs/arges-theila/commit/e694df59c50fbee356a48c94ade95e924ea46bb2) fix: display all available Talos versions on cluster create page
+* [`7a87525`](https://github.com/siderolabs/arges-theila/commit/7a87525ed1b928a8f8e3e6a39feb4c19009ec264) fix: use `v-model` instead of callbacks in the inputs
+* [`d681f5f`](https://github.com/siderolabs/arges-theila/commit/d681f5f58788612f144fa1f8d90ec6c996badb0e) feat: support scaling up the clusters
+* [`e992b95`](https://github.com/siderolabs/arges-theila/commit/e992b9574d7b8f76497f46e25764618ec274af1a) feat: show notification on image download progress
+* [`8ea6d9f`](https://github.com/siderolabs/arges-theila/commit/8ea6d9f1724b271919e538ed55ff6582858470f9) fix: probably fix 'context canceled' on image download
+* [`692612b`](https://github.com/siderolabs/arges-theila/commit/692612b7e628588fa7608cff683c5af406f24ca7) fix: improve the Talos image generation process
+* [`a69c140`](https://github.com/siderolabs/arges-theila/commit/a69c140e26f4298fcaafb1f96c389269992fc069) feat: introduce Prometheus metrics
+* [`e90ca78`](https://github.com/siderolabs/arges-theila/commit/e90ca7875c501391f860f5df9f2a4e4f8e2f2d7a) fix: make grpc api listen only on siderolink interface
+* [`99fc28c`](https://github.com/siderolabs/arges-theila/commit/99fc28c36c62a8d8c654c05f9b9c64ff37cedba8) fix: display correct cluster/machine status on ui
+* [`eaf7655`](https://github.com/siderolabs/arges-theila/commit/eaf7655395401cd88e6bd47f4f8aa958abee30f1) fix: add a pause before integration tests
+* [`19ff1c9`](https://github.com/siderolabs/arges-theila/commit/19ff1c909bedf63fe6cf2f5cc0e44f34046ca568) chore: rename download button
+* [`e1c4e1b`](https://github.com/siderolabs/arges-theila/commit/e1c4e1b171eab08585a3315ca5838c88a4d2eb24) feat: add download options for all talos images
+* [`24e7863`](https://github.com/siderolabs/arges-theila/commit/24e786369bfc0bb4966712296395db91751e657b) fix: delete cached clients from gRPC proxy when the cluster is destroyed
+* [`58c89ef`](https://github.com/siderolabs/arges-theila/commit/58c89ef3fe621ef6909c5d38a0d47cc861667f45) feat: implement `argesctl delete` command
+* [`3c99b49`](https://github.com/siderolabs/arges-theila/commit/3c99b49a9b680b091d92455a0d3bc325f8f68ca6) test: add a test which removes allocated machine
+* [`75dd28f`](https://github.com/siderolabs/arges-theila/commit/75dd28f56d7ce9a92b96822a867fbfe2655cd0fa) chore: fill in resource definitions for table headers
+* [`028f168`](https://github.com/siderolabs/arges-theila/commit/028f16886c41b7aa7eafb65308cc4adf4d624037) feat: End-to-end tests with playwright
+* [`6be6b36`](https://github.com/siderolabs/arges-theila/commit/6be6b3605583ce8e8068746624ca86ed6adc37af) chore: bump goimports from 0.1.10 to 0.1.11 and node from 18.5.0 to 18.6.0
+* [`af4da08`](https://github.com/siderolabs/arges-theila/commit/af4da086d4b709f504eda7909a36a8f0cf84e480) test: implement kernel log streaming test
+* [`1eacfee`](https://github.com/siderolabs/arges-theila/commit/1eacfee2c1084040ae2201eba957409218a92c66) feat: implement argesctl machine-logs output in 'zap-like' and 'dmesg' form.
+* [`96ab7ab`](https://github.com/siderolabs/arges-theila/commit/96ab7ab8317898dd45d129d5cecd2aaf1d379fba) chore: ignore memory modules with zero size
+* [`fd0575f`](https://github.com/siderolabs/arges-theila/commit/fd0575ff4050702c9d07e34c7d9d5596b4ad7311) chore: retrieve k8s versions from github registry
+* [`8651527`](https://github.com/siderolabs/arges-theila/commit/86515275a77741bacc790d2006f3671a5cfb27c6) feat: redo errgroup to return error on first nil error
+* [`944222d`](https://github.com/siderolabs/arges-theila/commit/944222d06607079b5d982afe4b19fc1dda7f1ec2) fix: show ClusterMachineStatus.Stage in 'Clusters' view
+* [`f3f6b6e`](https://github.com/siderolabs/arges-theila/commit/f3f6b6eecd3ffc13b69845dff50d2e8ab31bc0d2) chore: refactor run method and no longer ignore log receiver listener errors
+* [`b316377`](https://github.com/siderolabs/arges-theila/commit/b316377b277f87a184b969b3bbf20ebe6047a0a8) chore: rename 'Dmesg' to 'Console'
+* [`19ee857`](https://github.com/siderolabs/arges-theila/commit/19ee8578a6f1c1bf742699d1b5720dc4c2674c82) test: add a way to recover deleted machines
+* [`e5b5bdc`](https://github.com/siderolabs/arges-theila/commit/e5b5bdc39fa6f3812b15771366f942ddcbe7f328) fix: update SideroLink library for EEXIST fixes
+* [`363de69`](https://github.com/siderolabs/arges-theila/commit/363de69a50b5c1e9d07fa42152cca935844d118b) fix: spec collector equality
+* [`841f3b2`](https://github.com/siderolabs/arges-theila/commit/841f3b22aacc6d2875062ef324d900c5f2091f9d) feat: add ability to supply machine config patches on the machines
+* [`907ca93`](https://github.com/siderolabs/arges-theila/commit/907ca93247267d80125866c2b60225ceca3ada27) test: fix link destroy test
+* [`4c9f99d`](https://github.com/siderolabs/arges-theila/commit/4c9f99d32874cdaff1eb651bf6d74ef39167c273) fix: remove machine status if the machine is in tearing down phase
+* [`d9747e5`](https://github.com/siderolabs/arges-theila/commit/d9747e552e52156a9baeae962a9478231e26c566) fix: make cluster machine status test more reliable
+* [`3bfff3b`](https://github.com/siderolabs/arges-theila/commit/3bfff3bb0eea9d18956dee21aff7f3de900c6b82) fix: do not set up full theila runtime during clients tests
+* [`4bf33bc`](https://github.com/siderolabs/arges-theila/commit/4bf33bc9d37404a733c5039784c80e92800fb3dc) fix: immediately fail the request if the cluster is down
+* [`124a5c2`](https://github.com/siderolabs/arges-theila/commit/124a5c2947978e6bc86d1b19c9eacbcf7f870b53) fix: ensure the created date on resources is set
+* [`14161bf`](https://github.com/siderolabs/arges-theila/commit/14161bf3dad4484868359d186d99d9198b6eed95) feat: add scale up integration test and minor log fixes
+* [`7af06fd`](https://github.com/siderolabs/arges-theila/commit/7af06fd75959eb9e807680ac8a6ba4f0a7f59255) feat: make integration tests a subtests of one global test
+* [`f7c1464`](https://github.com/siderolabs/arges-theila/commit/f7c1464a1002f63daab29b36d19ea16de0cd5794) feat: implement log receiver for logs from Talos
+* [`5b800ea`](https://github.com/siderolabs/arges-theila/commit/5b800ea970215fb4e100ed7b3b73d7e218fd6d86) fix: accumulate bytes received/send in the link resource
+* [`b3b1e9b`](https://github.com/siderolabs/arges-theila/commit/b3b1e9bbfbf62632dc0d8c2239a72793883101ce) feat: machine removal
+* [`fb01bc4`](https://github.com/siderolabs/arges-theila/commit/fb01bc4b26c5b37f15bac923450e1f58fb7a3d89) fix: use Talos 1.2.0
+* [`3a50efe`](https://github.com/siderolabs/arges-theila/commit/3a50efe363c4724f369a02f672848ad7c284847c) feat: filter machines that can be added to cluster
+* [`ba62db5`](https://github.com/siderolabs/arges-theila/commit/ba62db521b47049e92557bf8cfc5f737e496bf57) fix: properly parse `siderolink-api-advertised-url` if there's no port
+* [`96f835a`](https://github.com/siderolabs/arges-theila/commit/96f835a91136f62d9dbdf5c1d1c46c729d57e51e) fix: properly display node selectors in FireFox
+* [`12c20a4`](https://github.com/siderolabs/arges-theila/commit/12c20a42c9dfdea5f88e0e7942fbdb42ea543b95) fix: populate disks when machines are connected during cluster create
+* [`0dc97f8`](https://github.com/siderolabs/arges-theila/commit/0dc97f8696a7c571d5318daf794700342e06f639) fix: adjust overview page to look closer to the mockups
+* [`2b77af8`](https://github.com/siderolabs/arges-theila/commit/2b77af8d39e555970487c3265dfbd63412e90d2f) feat: add the chart showing the count of clusters
+* [`a1dff65`](https://github.com/siderolabs/arges-theila/commit/a1dff6589d64207e6e7331d0407e7857f9c4079d) feat: implement ISO download with embedded kernel args
+* [`37c03d8`](https://github.com/siderolabs/arges-theila/commit/37c03d8cb04b02e79f42e70eeea1e4368445604d) test: pull kubeconfig and interact with Kubernetes API
+* [`75bfb08`](https://github.com/siderolabs/arges-theila/commit/75bfb08f0738fc9f67259caf12902db67860370f) fix: ignore the error on splitting host/port
+* [`3be5a32`](https://github.com/siderolabs/arges-theila/commit/3be5a3254168cddec8f1629789c2ae50d9eaa08e) feat: make the whole cluster list item clickable, add dropdown menu item
+* [`2c9dc99`](https://github.com/siderolabs/arges-theila/commit/2c9dc99000266b3d4c139f27dea4f6283709251e) fix: adjust the look of the Overview page a bit
+* [`aa4a926`](https://github.com/siderolabs/arges-theila/commit/aa4a926cbb85bf63312493b937440a174aed5070) feat: add the button for downloading cluster Kubeconfig on overview page
+* [`4532de6`](https://github.com/siderolabs/arges-theila/commit/4532de6f3d514a534c38a63731c43075698f5c01) feat: support basic auth in `argesctl` command
+* [`b66bb3c`](https://github.com/siderolabs/arges-theila/commit/b66bb3cbcc85d7be4348ecd9a6d5d62f72a90e11) feat: add summary information Overview page
+* [`3bdbce4`](https://github.com/siderolabs/arges-theila/commit/3bdbce41a3ed89a42556d837bc0c5cfe417e22e6) test: more cluster creation tests, two clusters, cleanup
+* [`3b00bd5`](https://github.com/siderolabs/arges-theila/commit/3b00bd5bf417c5c9cb42471d27811c1849a40c78) fix: improve cluster deletion and node reset flow
+* [`2d83d16`](https://github.com/siderolabs/arges-theila/commit/2d83d1694ec73da818004f91ede76a0bca30fe79) test: create a cluster and verify cluster machine statuses
+* [`f471cfd`](https://github.com/siderolabs/arges-theila/commit/f471cfdcf7c9e70f37436e173c3a58c1965e8bb2) fix: copy all labels from the `ClusterMachine` to `ClusterMachineStatus`
+* [`ec32f86`](https://github.com/siderolabs/arges-theila/commit/ec32f8632db104efd6fedc5421179175274d6339) test: add integration tests up to the cluster creation
+* [`a8d3ee5`](https://github.com/siderolabs/arges-theila/commit/a8d3ee5b14a57ad1d9d88512a95032bbda61e734) feat: add kubeconfig command to argesctl and fix kubeconfig
+* [`10b9a3b`](https://github.com/siderolabs/arges-theila/commit/10b9a3ba676a636e488805ed04a0c908c3d2cf53) test: implement API integration test
+* [`3e6b891`](https://github.com/siderolabs/arges-theila/commit/3e6b8913f916dc5e8ac3ef49e14648defa6e1bf6) feat: aggregate cluster machine statuses in cluster status controller
+* [`f6cbc58`](https://github.com/siderolabs/arges-theila/commit/f6cbc58a91124833f0cbae4ecd0c0416acbe8bfa) chore: ignore empty processor info
+* [`c5fc71b`](https://github.com/siderolabs/arges-theila/commit/c5fc71b86a5492d548ae9098c5c74de240ebd800) fix: clean up Kubernetes client and configs when a cluster is destroyed
+* [`e8478fe`](https://github.com/siderolabs/arges-theila/commit/e8478fe5280d5e8a32bb423ec96edacadabc7e43) fix: properly use tracker to cleanup `ClusterMachineConfig` resources
+* [`044fcad`](https://github.com/siderolabs/arges-theila/commit/044fcadb66de61742ab871d10f3fcf0f453f6e27) fix: make `MachineStatusController` connect to configured nodes
+* [`2867099`](https://github.com/siderolabs/arges-theila/commit/2867099a52d651c3b0f9d3abbae266f2792cafe7) feat: add api endpoint to fetch kubeconfig
+* [`5f32667`](https://github.com/siderolabs/arges-theila/commit/5f3266747012b590dd7a7d0ebc23ee0e80abb2ab) test: support registry mirrors for development purposes
+* [`5114695`](https://github.com/siderolabs/arges-theila/commit/5114695cfeb0b6c792002ff5f0f31c1944c269ab) refactor: consistent flag naming
+* [`9ffb19e`](https://github.com/siderolabs/arges-theila/commit/9ffb19e77968c6e411903a2c59fd9a18063b46d4) chore: use latest node
+* [`5512321`](https://github.com/siderolabs/arges-theila/commit/5512321f05b6b657a28abc25470664f6eb6e3d0a) refactor: set better defaults for cli args
+* [`ff88242`](https://github.com/siderolabs/arges-theila/commit/ff882427f56e42039b79900380b61b86d3290269) chore: mark 'siderolink-wireguard-endpoint' flags as required
+* [`4a9d9ad`](https://github.com/siderolabs/arges-theila/commit/4a9d9adef1e521d3c0293b6dc414f572bd8a93d4) feat: add the ClusterMachineStatus resource
+* [`e4e8b62`](https://github.com/siderolabs/arges-theila/commit/e4e8b6264cb48edd014f97129f52aefaa129fd63) refactor: unify all Arges API under a single HTTP server
+* [`5af9049`](https://github.com/siderolabs/arges-theila/commit/5af9049bdc2e09bf410e1b0646e4e08a4366f33b) chore: rename sidebar item
+* [`a4fc47f`](https://github.com/siderolabs/arges-theila/commit/a4fc47f97d79259532b91a8d391e84b59554ed8e) chore: fix build warning
+* [`547b83c`](https://github.com/siderolabs/arges-theila/commit/547b83c4a2a543d5b6ce4dca6cf6f5de87c33dcb) chore: bump siderolink version
+* [`11c31f3`](https://github.com/siderolabs/arges-theila/commit/11c31f39d834e3352b086c1aec665065fd74e944) refactor: drop one of the layered gRPC servers
+* [`0adbbb7`](https://github.com/siderolabs/arges-theila/commit/0adbbb7edfeacedd98a7e84c2f45ac458750a281) feat: introduce a way to copy kernel arguments from the UI
+* [`ce5422a`](https://github.com/siderolabs/arges-theila/commit/ce5422a27771a94cc25be70ec756711d140b2758) fix: import new COSI library to fix YAML marshaling
+* [`d6cec09`](https://github.com/siderolabs/arges-theila/commit/d6cec099cb6f4c3118e4263b9517176858bb9cfb) feat: implement Arges API client, and minimal `argesctl`
+* [`65c8d68`](https://github.com/siderolabs/arges-theila/commit/65c8d683187d82dc730752294c1bc03657f5df78) feat: implement cluster creation view
+* [`8365b00`](https://github.com/siderolabs/arges-theila/commit/8365b00df90ac55f99e0f82e1fa6d4367ebd6a3f) feat: re-enable old Theila UI
+* [`63e703c`](https://github.com/siderolabs/arges-theila/commit/63e703c4e1dfb4bf645fbc9cd28ba2a722e04dc2) fix: update Talos to the latest master
+* [`d33e27b`](https://github.com/siderolabs/arges-theila/commit/d33e27b49113729c5538fce688832152ff96a7ea) feat: implement clusters list view
+* [`cb9e23c`](https://github.com/siderolabs/arges-theila/commit/cb9e23ca6f420ac7b71acf6b19e9012265f3c69b) feat: protect Theila state from external API access
+* [`952c235`](https://github.com/siderolabs/arges-theila/commit/952c2359b32fdd077d85e312707f8b9c9e01ea0c) fix: properly allocated ports in the loadbalancer
+* [`a58c479`](https://github.com/siderolabs/arges-theila/commit/a58c479e9e31f70e806a1f3482b9b984c5c0ca68) chore: report siderolink events kernel arg
+* [`8a56fe3`](https://github.com/siderolabs/arges-theila/commit/8a56fe34ce1966fe28f9e432c696fdd779dfb638) refactor: move Theila resources to public `pkg/`
+* [`1251699`](https://github.com/siderolabs/arges-theila/commit/12516996eda859db6677403ad1f72a3994ea180b) fix: reset the `MachineEventsSnapshot` after the node is reset
+* [`9a2e6af`](https://github.com/siderolabs/arges-theila/commit/9a2e6af3113b795f57c4e3a86c1348b120fa3bbd) feat: implement bootstrap controller
+* [`7107e27`](https://github.com/siderolabs/arges-theila/commit/7107e27ee6b9ba644fc803e4463cbfcf26cf97de) feat: implement apply and reset config controller
+* [`1579eb0`](https://github.com/siderolabs/arges-theila/commit/1579eb09eb58f2cb679205e9e204369f3a362e07) feat: implement machine events handler and `ClusterStatus`
+* [`7214f4a`](https://github.com/siderolabs/arges-theila/commit/7214f4a514a921d6b9df7515116613996416f383) feat: implement cluster load balancer controller
+* [`9c4fafa`](https://github.com/siderolabs/arges-theila/commit/9c4fafaf6b8dc9b7ff08fe28704ca6a2e7efc097) feat: add a controller that manages load balancers for talos clusters
+* [`7e3d80c`](https://github.com/siderolabs/arges-theila/commit/7e3d80ce956d621ed79e4db094808831e18db85b) feat: add a resources that specify configurations for load balancers
+* [`dc0d356`](https://github.com/siderolabs/arges-theila/commit/dc0d356a181b4c37670d2ed4e8d7af370dccef60) feat: support Theila runtime watch with label selectors
+* [`6a568a7`](https://github.com/siderolabs/arges-theila/commit/6a568a72922e34e91f5448d3c1caa2f0b3a02e96) feat: implement `ClusterMachineConfig` resource and it's controller
+* [`3db0f1c`](https://github.com/siderolabs/arges-theila/commit/3db0f1c9d4e2d6f962b6f3216a4f9c7e2575dd21) feat: implement `TalosConfig` controller
+* [`b7ae8e1`](https://github.com/siderolabs/arges-theila/commit/b7ae8e113dc68acd87c4cfe5e3c8349d32bc392d) feat: introduce `Cluster` controller that adds finalizers on Clusters
+* [`8d7ea02`](https://github.com/siderolabs/arges-theila/commit/8d7ea0293e8f57388fd483dc82e79e6b4c76a53f) chore: use label selectors in `TalosConfig`, set labels on the resources
+* [`cff9cb1`](https://github.com/siderolabs/arges-theila/commit/cff9cb19ba8718fdad509b5e91cb8221c6c1ff00) fix: separate advertised endpoint from the actual wireguard endpoint
+* [`5be6cc3`](https://github.com/siderolabs/arges-theila/commit/5be6cc391adf8bcb58b8d47f09dad5aa75d1ad98) feat: implement cluster creation UI
+* [`a1633eb`](https://github.com/siderolabs/arges-theila/commit/a1633eb18772b9e99d687dfddd12fc09fd1ea5c4) chore: add typed wrappers around State, Reader and Writer
+* [`5515f3d`](https://github.com/siderolabs/arges-theila/commit/5515f3d004f54455a1eb1f4977bbb9d663fd1bca) feat: add `ClusterSecrets` resource and controller and tests
+* [`7226f6c`](https://github.com/siderolabs/arges-theila/commit/7226f6cdc60eeb4d6040d1aa0711fed378c50b33) feat: add `Cluster`, `ClusterMachine` and `TalosConfig` resources
+* [`ec44930`](https://github.com/siderolabs/arges-theila/commit/ec44930672ca8954c6ba68975c1799a087ec0c43) feat: enable vtprotobuf optimized marshaling
+* [`15be219`](https://github.com/siderolabs/arges-theila/commit/15be2198872fb637f7ba2e1ff550e4466179f2b1) feat: generate TS constants from go `//tsgen:` comments
+* [`caa4c4d`](https://github.com/siderolabs/arges-theila/commit/caa4c4d285dcd1176a70d87f28ee303cd0483ca8) fix: resource equality for proto specs
+* [`beeca88`](https://github.com/siderolabs/arges-theila/commit/beeca886213332f313f7f3a477d7e7c508e6d058) refactor: clarify code that creates or gets links for nodes
+* [`340c63a`](https://github.com/siderolabs/arges-theila/commit/340c63ad4ba918d4b11ab1f57fdbd3b5e5d8b3dc) feat: implement `Machines` page
+* [`f7bc0c6`](https://github.com/siderolabs/arges-theila/commit/f7bc0c69c69fe515cfa729bc062c730756a53019) feat: accept nodes if they provide the correct join token
+* [`bdf789a`](https://github.com/siderolabs/arges-theila/commit/bdf789a35da5491a4fcbd2af35a1c6efd22ab1fc) feat: immediately reconnect SideroLink peers after Arges restart
+* [`6b74fa8`](https://github.com/siderolabs/arges-theila/commit/6b74fa82ca5757d6f3809853c1ac3e7754efb06d) feat: implement MachineStatusController
+* [`f5db0e0`](https://github.com/siderolabs/arges-theila/commit/f5db0e05a87d5c11b4a1029b14020b19ca67035d) feat: add more info to the siderolink connection spec
+* [`d3e4a71`](https://github.com/siderolabs/arges-theila/commit/d3e4a71af8fd79328e4edda6d9642b83902b2003) refactor: simplify the usage of gRPC resource CRUD API
+* [`2430115`](https://github.com/siderolabs/arges-theila/commit/2430115af1aaac4226b7d5821e1fe706a1088501) feat: implement MachineController and small fixes
+* [`e31d22d`](https://github.com/siderolabs/arges-theila/commit/e31d22d7639753df53c130461ae1f96b9126f3a5) feat: support running Theila without contexts
+* [`a6b3646`](https://github.com/siderolabs/arges-theila/commit/a6b364626bd808687d5ad95307766344b16dd042) refactor: small fixes
+* [`33d2b59`](https://github.com/siderolabs/arges-theila/commit/33d2b59c202f03785580209c885aa297c023fa60) refactor: clean up a bit SideroLink code, fix shutdown
+* [`98ec883`](https://github.com/siderolabs/arges-theila/commit/98ec8830308755c7073a5d4510483e97d8e1d02d) chore: rename main executable to avoid clashing with Theila project
+* [`828721d`](https://github.com/siderolabs/arges-theila/commit/828721d9aa5d912cce628256f75579309d1ad67d) feat: enable COSI persistence for resources
+* [`f1f7883`](https://github.com/siderolabs/arges-theila/commit/f1f788344254e18bcab00a25b56a86289bfb1638) feat: set up siderolink endpoints in Theila
+* [`6439335`](https://github.com/siderolabs/arges-theila/commit/64393353ca7cf430f82bfe73a004da319da28261) refactor: migrate to `typed.Resource` in Theila internal state
+* [`6195274`](https://github.com/siderolabs/arges-theila/commit/61952742a47ea89e89228f057d0d3de351766150) refactor: restructure folders in the project
+* [`1abf72b`](https://github.com/siderolabs/arges-theila/commit/1abf72b4b2e382fe0cf9302b42242152c255a3ee) chore: update Talos libs to the latest version
+* [`16dffd9`](https://github.com/siderolabs/arges-theila/commit/16dffd9058570477b3a648896a89e6445e5b0162) fix: display delta time for pod's age
+* [`8b80726`](https://github.com/siderolabs/arges-theila/commit/8b807262b23cfa830f3ff444d49f11b3a1654703) feat: update favicon to sidero logo
+* [`2da7378`](https://github.com/siderolabs/arges-theila/commit/2da737841c2ae0bf1f1f916dc6f45b1e3996d6e4) feat: show the extended hardware info
+* [`d3c6004`](https://github.com/siderolabs/arges-theila/commit/d3c6004f9767bf0cff9191dc130308c848ede077) chore: allow getting resources without version and group
+* [`eb19087`](https://github.com/siderolabs/arges-theila/commit/eb190875b30275195e52f1a95ed0bb3aae08424f) fix: remove t-header error notification
+* [`5a28202`](https://github.com/siderolabs/arges-theila/commit/5a28202c939ef9683d14fb3d873e0bacb35577db) feat: restyle t-alert component
+* [`9f2b482`](https://github.com/siderolabs/arges-theila/commit/9f2b48228bbfa39d33b07ae43e9fdb34192c3eed) fix: get rid of racy code in the kubeconfig request code
+* [`c40824e`](https://github.com/siderolabs/arges-theila/commit/c40824ecc5d10cb5289e133b8b1f51213aa12f7f) feat: add text Highlight feature
+* [`9018c81`](https://github.com/siderolabs/arges-theila/commit/9018c81bd0d7c58bb5c632c06f3c3904f6674e03) feat: use `~/.talos/config` as a primary source for clusters
+* [`e10547b`](https://github.com/siderolabs/arges-theila/commit/e10547b5761ad96ab8b5766fe5c3f06fcdf86477) refactor: remove old components and not used code parts
+* [`f704684`](https://github.com/siderolabs/arges-theila/commit/f7046846ea8e83a0e39647c4fcc49addf4c56061) fix: properly calculate servers capacity
+* [`755a077`](https://github.com/siderolabs/arges-theila/commit/755a0779014b0a4177e0fc5180db20720be5a814) fix: use proper units for memory and CPU charts on the node monitor page
+* [`d0a083d`](https://github.com/siderolabs/arges-theila/commit/d0a083d1c15c319e236dd258fabcc9a231f797a1) release(v0.2.0-alpha.0): prepare release
+* [`53878ee`](https://github.com/siderolabs/arges-theila/commit/53878eea09c18f2bc0dd55ca11a6743587748319) fix: properly update servers menu item when the context is changed
+* [`b4cb9c7`](https://github.com/siderolabs/arges-theila/commit/b4cb9c7989ec5299785b86acb3fa0ee648efd259) feat: restyle TMonitor page
+* [`f0377e2`](https://github.com/siderolabs/arges-theila/commit/f0377e2ad5da702af71f2706141f4d7c638c7a15) fix: invert chart value for cpu, storage and memory on the overview page
+* [`6ea6ecf`](https://github.com/siderolabs/arges-theila/commit/6ea6ecf12c4d8b5253b4dfc2e64f5b5d787d022a) fix: update capi-utils to fix talosconfig requests for CAPI clusters
+* [`e3796d3`](https://github.com/siderolabs/arges-theila/commit/e3796d3876d33248fd0998901273a14d29a487a3) chore: update capi-utils
+* [`39186eb`](https://github.com/siderolabs/arges-theila/commit/39186ebe50da531f35d21ac2488f8a58c1ef8e78) feat: implement overview page, cluster dropdown, ongoing tasks
+* [`59f2b27`](https://github.com/siderolabs/arges-theila/commit/59f2b27be4d7f5a591fdeae533d649494356250d) docs: update README.md
+* [`2b7831f`](https://github.com/siderolabs/arges-theila/commit/2b7831f2d22106ac8a82f890d73c2705841b0739) feat: add Kubernetes and Servers pages
+* [`4451a5b`](https://github.com/siderolabs/arges-theila/commit/4451a5bc9f5c6b058c6bcf1252b7c83a001cafbe) fix: properly set TaskStatus namespace in the initial call
+* [`4545464`](https://github.com/siderolabs/arges-theila/commit/454546425f2fd7e4418aa8a03465f3a062de804e) fix: add new fields to the TaskStatus spec, update Talos
+* [`891cf3b`](https://github.com/siderolabs/arges-theila/commit/891cf3b79c8430deeed8a168955afd6e97083baa) docs: describe client context types, usage
+* [`309b515`](https://github.com/siderolabs/arges-theila/commit/309b51545ead2ee144244591df2e5ead2849fb11) feat: update k8s upgrades tasks structure for the new UI representation
+* [`5aa8ca2`](https://github.com/siderolabs/arges-theila/commit/5aa8ca24bd3159879c46c8e8a134702b174e3362) feat: add NodesPage
+* [`db434e0`](https://github.com/siderolabs/arges-theila/commit/db434e07b9f23562bd746a0f78e3868b079006e2) feat: add TPagination component
+* [`0b51727`](https://github.com/siderolabs/arges-theila/commit/0b51727efed31f13f52fa20b360071e7e2a6d9eb) feat: add Pods, Dashboard, Upgrade views, etc
+* [`c549b8b`](https://github.com/siderolabs/arges-theila/commit/c549b8b9ee8a563f14b2e791f91a7b3cb0430aa7) feat: add Overview and Upgrade Kubernetes pages
+* [`cec2e85`](https://github.com/siderolabs/arges-theila/commit/cec2e854f4f3999109220902bccaee6c25d1f502) chore: define constants for all used resource types
+* [`962bdaf`](https://github.com/siderolabs/arges-theila/commit/962bdaf6406ab8e5febea0ad8d32da9c86fa39e7) feat: add TSideBar
+* [`fa28ccb`](https://github.com/siderolabs/arges-theila/commit/fa28ccb67f52c1dd9096b23388427d78be526275) feat: add TheHeader component
+* [`f3418a5`](https://github.com/siderolabs/arges-theila/commit/f3418a59e38e551bd0be7cc7ae66ef4645719aa7) feat: button;icons;config
+* [`db30f50`](https://github.com/siderolabs/arges-theila/commit/db30f503730bdbd8ed359d4070dea0214df67fcd) fix: add `frontend/node_modules` to gitignore
+* [`a675b86`](https://github.com/siderolabs/arges-theila/commit/a675b86f7d55cecd4ae1277cbf057a6bc264940c) fix: properly pass label selector to the metadata in ClusterListItem
+* [`7911d6a`](https://github.com/siderolabs/arges-theila/commit/7911d6a31abdb51e86586a025b705ddfeb1dd19e) chore: add ability to start local development server for the frontend
+* [`076fee1`](https://github.com/siderolabs/arges-theila/commit/076fee10c6583dc49e6530b02cab1f757da0e853) feat: use CAPI utils for CAPI requests
+* [`5ed5ba2`](https://github.com/siderolabs/arges-theila/commit/5ed5ba2a122585a97cf65c3ff081126752cd26fa) fix: more websocket client bugfixes
+* [`6fe22ad`](https://github.com/siderolabs/arges-theila/commit/6fe22ad370026380ba75b38e261870addc341e6f) fix: reset reconnect timeouts after the client is reconnected
+* [`c4b144a`](https://github.com/siderolabs/arges-theila/commit/c4b144af272a46dbdc8d1bb35784e09ba1b79987) fix: talosconfig/kubeconfig when using the default context
+* [`b439a37`](https://github.com/siderolabs/arges-theila/commit/b439a371c13a8d46d986a1dae3d6f4b7cba4a298) fix: properly handle Same-Origin header in websockets
+* [`ffffed1`](https://github.com/siderolabs/arges-theila/commit/ffffed100cec18209bae723b9919eb8613950649) fix: read node name from nodename resource instead of hostname
+* [`2d6f984`](https://github.com/siderolabs/arges-theila/commit/2d6f9844440a6d18b3093dea6228ac6a237dc86b) fix: use secure websockets if the page itself is using https
+* [`799f2d2`](https://github.com/siderolabs/arges-theila/commit/799f2d2d00762d5270dd4a3f4b4b312b32dbb7dd) feat: rework the node overview page
+* [`0d0eaf4`](https://github.com/siderolabs/arges-theila/commit/0d0eaf4b2721dfa1b04bce24e4a1e476579e3a74) fix: make charts height resize depending on the screen height
+* [`7de0101`](https://github.com/siderolabs/arges-theila/commit/7de0101bf0e613653caadd5733db0e29a6bb5bfb) fix: use polyfill to fix streaming APIs on Firefox
+* [`0cff2b0`](https://github.com/siderolabs/arges-theila/commit/0cff2b02b5d8b2c2c644067cf6bd3ed573cb784d) feat: small UI adjustments
+* [`d70bd41`](https://github.com/siderolabs/arges-theila/commit/d70bd41992e13fb3dacc1740532083a8f6ce9afa) feat: implement accept Sidero server functional
+* [`f3a6e16`](https://github.com/siderolabs/arges-theila/commit/f3a6e16a79e1bca9ea6c87eb0d3e0f2a6c65ff2e) feat: add top processes list to the Overview page
+* [`3cf97e4`](https://github.com/siderolabs/arges-theila/commit/3cf97e4b9e07f8383da8a6fb7a993b70c8f82503) refactor: use the same object for gRPC metadata context and messages
+* [`243206f`](https://github.com/siderolabs/arges-theila/commit/243206f95aa6ba944bd4361db6274e7072bae1fc) release(v0.1.0-alpha.2): prepare release
+* [`e5b6f29`](https://github.com/siderolabs/arges-theila/commit/e5b6f29fd298904e06284a67681cc0ce5135145f) feat: implement node Reset
+* [`bcb7d23`](https://github.com/siderolabs/arges-theila/commit/bcb7d237c31f42a35f5c3b53e7615ddae1ce0a8b) fix: node IP not being truncated
+* [`e576d33`](https://github.com/siderolabs/arges-theila/commit/e576d33ba40f629eed14668f2d9bf77d7fef62c2) feat: add upgrade UI for CAPI clusters
+* [`10cdce7`](https://github.com/siderolabs/arges-theila/commit/10cdce7fcc219af969a85a41d18fb904936faa0a) fix: server labels key/value order and chevron orientation
+* [`4007177`](https://github.com/siderolabs/arges-theila/commit/40071775d6de1eea697f67e55441c384c86e75d9) feat: implement Kubernetes upgrade UI components
+* [`f4917ee`](https://github.com/siderolabs/arges-theila/commit/f4917eecfb3173acf7518883c738118c8537d657) fix: accumulate chart updates into a single update
+* [`414d76c`](https://github.com/siderolabs/arges-theila/commit/414d76c1c926695e5d66787b34decae92e151b45) feat: implement upgrade controller
+* [`36742ea`](https://github.com/siderolabs/arges-theila/commit/36742ea5ab1e8a983b73f73443c1cf122a90d054) feat: introduce create, delete and update gRPC APIs
+* [`2b3d314`](https://github.com/siderolabs/arges-theila/commit/2b3d314a460b385d8c13bdd025fadb37b5508bdc) feat: install internal COSI runtime alongside with K8s and Talos
+* [`ae7f784`](https://github.com/siderolabs/arges-theila/commit/ae7f784d08621d18075b1763f026a7513d9d9dcb) refactor: move all generated TypeScript files under `frontend/src/api`
+* [`61bad64`](https://github.com/siderolabs/arges-theila/commit/61bad64540c28fb0520a39a6c64d64c3e9353361) release(v0.1.0-alpha.1): prepare release
+* [`8e5e722`](https://github.com/siderolabs/arges-theila/commit/8e5e7229470713d2fbd5ad0df027bd825f5481e3) feat: implement node reboot controls
+* [`9765a88`](https://github.com/siderolabs/arges-theila/commit/9765a88069f05c49f5a7d854675ee37e1c7a8273) feat: dmesg logs page
+* [`ecbbd67`](https://github.com/siderolabs/arges-theila/commit/ecbbd67936b1fb570d706fe3b93b81f6089b5124) feat: use updated timestamp to display event time on the graph
+* [`7c56773`](https://github.com/siderolabs/arges-theila/commit/7c56773448a496fe1ceeec3c47978975ce336b3a) refactor: use Metadata to pass context in all gRPC calls
+* [`abb4733`](https://github.com/siderolabs/arges-theila/commit/abb47330222217d7d8b5c36ff28902415bc755d8) feat: implement service logs viewer
+* [`8e8e032`](https://github.com/siderolabs/arges-theila/commit/8e8e032b20d082bfd71a26c2af2bbc821d9c2a7b) feat: add ability to pick sort order on the servers page
+* [`1a1c728`](https://github.com/siderolabs/arges-theila/commit/1a1c728ac929bb02db7f1bd0b991a747e63fe81a) fix: resolve the issue with idFn value generating undefined ids
+* [`2e83fe2`](https://github.com/siderolabs/arges-theila/commit/2e83fe23a7feb51b73bc7b53997636b641ae42b9) feat: allow filtering servers by picking from predefined categories
+* [`48f776e`](https://github.com/siderolabs/arges-theila/commit/48f776e10f6c79772481393d7397557419520046) fix: navigate home when changing the context
+* [`a1ce0ca`](https://github.com/siderolabs/arges-theila/commit/a1ce0ca8c8fabb2267c3dc6f6b1509f131e18ba8) fix: resolve services search issues
+* [`5b768f8`](https://github.com/siderolabs/arges-theila/commit/5b768f85277ee31131994ae0b253700a5d26978d) feat: make stacked lists searchable
+* [`ec1bc5b`](https://github.com/siderolabs/arges-theila/commit/ec1bc5b48943e473c756ebc7a8c943a34cdeaeac) feat: implement stats component and add stats to the servers page
+* [`1a85999`](https://github.com/siderolabs/arges-theila/commit/1a8599981f93fc5ce68e23b1b4cd7aabbb43c90c) feat: align Sidero servers list outlook with the wireframes
+* [`524264c`](https://github.com/siderolabs/arges-theila/commit/524264c515a9efdce9f06a3c2ebd59c2979f9b2a) fix: display error message and use proper layout for the spinner
+* [`5263d16`](https://github.com/siderolabs/arges-theila/commit/5263d16cfb936aad9ba461e0cc7b150ff9b806d5) feat: introduce node stats page
+* [`8feb35e`](https://github.com/siderolabs/arges-theila/commit/8feb35e95a6d588e1d9c605231308976be452a2e) feat: make root sidebar sections collapsible
+* [`36ad656`](https://github.com/siderolabs/arges-theila/commit/36ad656a3bbdc1e2915a87c0d09c31738ae3f3c4) feat: detect cluster capabilities
+* [`a25d90d`](https://github.com/siderolabs/arges-theila/commit/a25d90d58a85b3b73432858f134fa09cd1338d5c) feat: support switching context in the UI
+* [`67903e2`](https://github.com/siderolabs/arges-theila/commit/67903e23f49623ae9a9a6b297282c62aa8579aa8) refactor: separate Watch from StackedList
+* [`76b9e1d`](https://github.com/siderolabs/arges-theila/commit/76b9e1dc88cccf74cebb28470eae5e9249809d40) release(v0.1.0-alpha.0): prepare release
+* [`7bde4c8`](https://github.com/siderolabs/arges-theila/commit/7bde4c8c6e16c197578cbb4e037a05d50194958f) fix: cobra command was initialized but not actually used
+* [`04624c9`](https://github.com/siderolabs/arges-theila/commit/04624c95cec587ae0b0d8888d95d484ef8d98cfa) feat: support getting Talos and Kubernetes client configs for a cluster
+* [`219b9c8`](https://github.com/siderolabs/arges-theila/commit/219b9c8663fe03af65796b0b6299cff5e66b3efc) feat: implement notifications component
+* [`f8b19a0`](https://github.com/siderolabs/arges-theila/commit/f8b19a0585e6e19c0e7da4e4afad5bbd264e0029) feat: decouple watch list from the view
+* [`2f8c96e`](https://github.com/siderolabs/arges-theila/commit/2f8c96e44012e7bd0db9869eeb90ab48ff41e162) feat: implement appearance settings modal window
+* [`de745d6`](https://github.com/siderolabs/arges-theila/commit/de745d6b7170a9c509cc835a8b675a1c788e80f4) feat: implement Talos runtime backend
+* [`af69a0d`](https://github.com/siderolabs/arges-theila/commit/af69a0d58906a86974bc7dbec2c09ca9f78b152f) feat: support getting Kubernetes resource through gRPC gateway
+* [`2c50010`](https://github.com/siderolabs/arges-theila/commit/2c50010b0d9f7b168354fedd698600d94123c354) feat: implement breadcrumbs component, add support for table header
+* [`3fc1e80`](https://github.com/siderolabs/arges-theila/commit/3fc1e808875f6f502cd2657c4548dd886fbf465d) feat: implement nodes view
+* [`961e93a`](https://github.com/siderolabs/arges-theila/commit/961e93a4af430eaa9efcd1e2922af8072fe4cf85) feat: implement clusters view
+* [`e8248ff`](https://github.com/siderolabs/arges-theila/commit/e8248ffab89633cae8834631e39cf4dce5e4147a) feat: use plain zap instead of SugaredLogger everywhere
+* [`81ba93d`](https://github.com/siderolabs/arges-theila/commit/81ba93dffdc37efdde06557a1c63511a7d61b2f2) chore: generate websocket protocol messages using protobuf
+* [`37a878d`](https://github.com/siderolabs/arges-theila/commit/37a878dd396b650df8afaf6730f9afe52d35569c) feat: make JS websocket reconnect on connection loss
+* [`23b3281`](https://github.com/siderolabs/arges-theila/commit/23b3281f8880800a9084e1c8a74617fcf966c846) feat: use dynamic watcher to allow listing any kinds of resources
+* [`16475f5`](https://github.com/siderolabs/arges-theila/commit/16475f51cc9651736213b36c57381b24dcabdc62) feat: implement real time update server on top of web sockets
+* [`76b39ae`](https://github.com/siderolabs/arges-theila/commit/76b39ae563d9f09ecac3451389e3d260abdad48d) feat: create hello world Vue app using Kres
+* [`baab493`](https://github.com/siderolabs/arges-theila/commit/baab493f155cbd78c2e8af6ce45268c40ef6aeed) Initial commit
+
+
+
+### Dependency Changes
+
+This release has no dependency changes
+
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 000000000..e55a13648
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,11 @@
+# Contributing
+
+## Developer Certificate of Origin
+
+All commits require a [DCO](https://developercertificate.org/) sign-off.
+This is done by committing with the `--signoff` flag.
+
+## Development
+
+The build process for this project is designed to run entirely in containers.
+To get started, run `make help` and follow the instructions.
diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md
new file mode 100644
index 000000000..0a7a0af84
--- /dev/null
+++ b/DEVELOPMENT.md
@@ -0,0 +1,232 @@
+# Developing Omni
+
+Decide on the CIDR for the local set of QEMU Talos machines.
+In this document, we are going to use the `172.20.0.0/24` CIDR, but you can use any CIDR you want.
+
+With the CIDR `172.20.0.0/24`, the bridge IP is going to be `172.20.0.1`, so we are going to use the bridge IP
+as the Omni endpoint QEMU VMs can reach.
+
+## Build Omni and omnictl
+
+```shell
+make omni-linux-amd64
+```
+
+```shell
+make omnictl-linux-amd64
+```
+
+## Dev Environment
+
+### mkcert
+
+First, install and run [mkcert](https://github.com/FiloSottile/mkcert) to generate the TLS root certificates,
+and add them to your system's trust store.
+After installing dependencies, you can run the following command (requires `sudo`) to generate the root certificates:
+
+```shell
+make mkcert-install
+```
+
+or
+
+```shell
+go run ./hack/generate-certs install
+```
+
+Then you will need to create `generate-certs.yml` which you customize using `generate-certs.example.yml` as an example.
+The example file also contains a commented-out registry mirror configuration which speeds up local testing.
+After that, you can run the following command to generate the certificates and `hack/compose/docker-compose.override.yml` file:
+
+```shell
+make mkcert-generate
+```
+
+or
+
+```shell
+go run ./hack/generate-certs -config ./hack/generate-certs.yml generate
+```
+
+This should result in the following (git-ignored) files:
+
+- `hack/generate-certs/ca-root/rootCA.pem`
+- `hack/generate-certs/ca-root/rootCA-key.pem`
+- `hack/generate-certs/certs/localhost.pem`
+- `hack/generate-certs/certs/localhost-key.pem`
+- `hack/compose/docker-compose.override.yml`
+
+After that, you can run the following command to start the docker-compose environment:
+
+```shell
+make docker-compose-up WITH_DEBUG=1
+```
+
+When you're done, you can run the following command to stop the docker-compose environment:
+
+```shell
+make docker-compose-down
+```
+
+If you need to clean up `etcd` state, run:
+
+```shell
+docker volume rm compose_etcd
+```
+
+If you want to remove all volumes created by docker compose (e.g. `etcd`, `logs`, `secondary-storage`), run:
+
+```shell
+make docker-compose-down REMOVE_VOLUMES=true
+```
+
+### mkcert uninstall
+
+You can always remove the root certificates from your system's trust store using the following command:
+
+```shell
+make mkcert-uninstall
+```
+
+or
+
+```shell
+go run ./hack/generate-certs uninstall
+```
+
+## Start Talos VMs
+
+```shell
+sudo -E _out/talosctl-linux-amd64 cluster create \
+ --provisioner=qemu --cidr=172.20.0.0/24 --install-image=ghcr.io/siderolabs/installer:v1.3.2 --memory 2048 --memory-workers 2048 --disk 6144 --cpus 2 --controlplanes 1 --workers 5 \
+ --extra-boot-kernel-args 'siderolink.api=grpc://:8090?jointoken=w7uVuW3zbVKIYQuzEcyetAHeYMeo5q2L9RvkAVfCfSCD talos.events.sink=[fdae:41e4:649b:9303::1]:8090 talos.logging.kernel=tcp://[fdae:41e4:649b:9303::1]:8092'
+ --skip-injecting-config --wait=false --with-init-node
+```
+
+> Note: `` is the IP address of the host machine, which is used by the Talos VMs to connect to Omni.
+> Omni also prints these args in the startup logs.
+
+## Open Omni UI
+
+By default, Omni serves the frontend and API on `*:443`, so you can open the Omni UI in your browser with e.g. `https://my.host/`.
+
+You should see your Talos VMs registered in the `Machines` tab, and a cluster can be created in the `Clusters` tab.
+
+Node.js development server can be used to get immediate feedback on frontend changes: `https://my.host:8120/`.
+When making frontend changes, `https://my.host/` will only update after stopping docker-compose environment with `^C` and running `make docker-compose-up WITH_DEBUG=1` again.
+At the same time `https://my.host:8120/` will update immediately.
+
+## Use `omnictl`
+
+Download `omniconfig` from the Omni UI.
+
+Fetch some resources with `omnictl`:
+
+```shell
+$ _out/omnictl-linux-amd64 --omniconfig=omniconfig get machines
+NAMESPACE TYPE ID VERSION
+default Machine 17e1d2c1-60f0-452e-87a9-bc949953643b 1
+default Machine 20141377-15f2-43e2-a0a9-ff68ca21d90e 1
+```
+
+If the browser can't be launched from your machine (e.g., in a headless environment), you can use environment variable `BROWSER=echo` to see the URL instead.
+
+## Running Integration Tests
+
+Make sure the Omni database is clean, and it has some machines connected to it.
+
+Then run the integration tests:
+
+```shell
+$ sudo -E make run-integration-test WITH_DEBUG=true
+=== RUN TestSideroLinkDiscovery
+ siderolink.go:54: links discovered: 1
+ siderolink.go:54: links discovered: 2
+ siderolink.go:54: links discovered: 3
+ siderolink.go:54: links discovered: 4
+--- PASS: TestSideroLinkDiscovery (0.00s)
+PASS
+```
+
+Another way to run integration tests directly:
+
+```shell
+$ make _out/omni-integration-test-linux-amd64
+$ sudo -E _out/omni-integration-test-linux-amd64 \
+ --endpoint=https://my.host \
+ --expected-machines=6
+```
+
+Tests need a hint on number of available Talos VMs with `--expected-machines` flag: make it equal to the sum of `--controlplanes` and `--workers` in the `talosctl cluster create` above.
+
+Specific tests can be run by appending a flag `--test.run=TestSideroLinkDiscovery` to the command above.
+
+## Local Network Use
+
+When using Omni to provision Talos clusters in your LAN, it makes sense to launch it with default args, this way Omni advertises the first host IP address by default.
+
+## Etcd Backups
+
+You can set up Omni to periodically back up its etcd database to a local directory or s3 storage.
+By default, Omni uses s3 storage.
+
+To enable etcd backups into the local directory, set the following command line flag:
+
+```shell
+--etcd-backup-local-path /path/to/backup/dir
+```
+
+For s3 you should also create `EtcdBackupS3Configs.omni.sidero.dev` resource in the default namespace, since this is
+the place where Omni gets s3 credentials and options from.
+For example, for minio s3 with bucket `mybucket` and operating locally on port `9000` that would be:
+
+```yaml
+metadata:
+ namespace: default
+ type: EtcdBackupS3Configs.omni.sidero.dev
+ id: etcd-backup-s3-conf
+ version: undefined
+ owner:
+ phase: running
+ created: 2023-12-12T17:43:12+00:00
+ updated: 2023-12-12T17:43:12+00:00
+spec:
+ bucket: mybucket
+ region: us-east-1
+ endpoint: http://127.0.0.1:9000
+ accesskeyid: access
+ secretaccesskey: secret123
+ sessiontoken: ""
+```
+
+Keep in mind that `etcd-backup-local-path` and `etcd-backup-s3` are mutually exclusive.
+
+### Manual Etcd Backups
+
+You can create manual etcd backup if s3 or local backup is enabled.
+To do that, create a resource:
+
+```yaml
+metadata:
+ namespace: ephemeral
+ type: EtcdManualBackups.omni.sidero.dev
+ id:
+ version: undefined
+ owner:
+ phase: running
+spec:
+ backupat:
+ seconds:
+ nanos: 0
+```
+
+`unix-timestamp` should be no more than one minute in the future or in the past.
+
+## Controller Dependency Graphs
+
+If Omni is built `WITH_DEBUG=1`, it provides an additional handler under `/debug` prefix:
+
+```shell
+curl https://my.host/debug/controller-graph | dot -Tsvg -o controller.svg
+curl https://my.host/debug/controller-resource-graph | dot -Tsvg -o controller-resource.svg
+```
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000..a2af04e83
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,513 @@
+# syntax = docker/dockerfile-upstream:1.6.0-labs
+
+# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT.
+#
+# Generated on 2024-02-26T21:35:48Z by kres latest.
+
+ARG JS_TOOLCHAIN
+ARG TOOLCHAIN
+
+FROM ghcr.io/siderolabs/ca-certificates:v1.6.0 AS image-ca-certificates
+
+FROM ghcr.io/siderolabs/fhs:v1.6.0 AS image-fhs
+
+# base toolchain image
+FROM ${JS_TOOLCHAIN} AS js-toolchain
+COPY --from=golang:1.22-alpine /usr/local/go /usr/local/go
+RUN apk --update --no-cache add bash curl protoc protobuf-dev
+COPY ./go.mod .
+COPY ./go.sum .
+ENV GOPATH /go
+ENV PATH ${PATH}:/usr/local/go/bin
+
+# runs markdownlint
+FROM docker.io/node:21.6.2-alpine3.19 AS lint-markdown
+WORKDIR /src
+RUN npm i -g markdownlint-cli@0.39.0
+RUN npm i sentences-per-line@0.2.1
+COPY .markdownlint.json .
+COPY ./docs ./docs
+COPY ./CHANGELOG.md ./CHANGELOG.md
+COPY ./CONTRIBUTING.md ./CONTRIBUTING.md
+COPY ./DEVELOPMENT.md ./DEVELOPMENT.md
+COPY ./README.md ./README.md
+RUN markdownlint --ignore "CHANGELOG.md" --ignore "**/node_modules/**" --ignore '**/hack/chglog/**' --rules node_modules/sentences-per-line/index.js .
+
+# collects proto specs
+FROM scratch AS proto-specs
+ADD client/api/common/omni.proto /client/api/common/
+ADD client/api/omni/resources/resources.proto /client/api/omni/resources/
+ADD client/api/omni/management/management.proto /client/api/omni/management/
+ADD client/api/omni/oidc/oidc.proto /client/api/omni/oidc/
+ADD client/api/omni/specs/auth.proto /client/api/omni/specs/
+ADD client/api/omni/specs/virtual.proto /client/api/omni/specs/
+ADD client/api/omni/specs/ephemeral.proto /client/api/omni/specs/
+ADD client/api/omni/specs/oidc.proto /client/api/omni/specs/
+ADD client/api/omni/specs/omni.proto /client/api/omni/specs/
+ADD client/api/omni/specs/siderolink.proto /client/api/omni/specs/
+ADD client/api/omni/specs/system.proto /client/api/omni/specs/
+ADD https://raw.githubusercontent.com/googleapis/googleapis/master/google/rpc/status.proto /client/api/google/rpc/
+ADD https://raw.githubusercontent.com/siderolabs/talos/03a20da9da5916c63015d355f4b56823778e994f/api/common/common.proto /client/api/common/
+ADD https://raw.githubusercontent.com/siderolabs/talos/03a20da9da5916c63015d355f4b56823778e994f/api/machine/machine.proto /client/api/talos/machine/
+ADD https://raw.githubusercontent.com/cosi-project/specification/c644a4b0fd408ec41bd29193bcdbd1a5b7feead2/proto/v1alpha1/resource.proto /client/api/v1alpha1/
+
+# collects proto specs
+FROM scratch AS proto-specs-frontend
+ADD client/api/common/omni.proto /frontend/src/api/common/
+ADD client/api/omni/resources/resources.proto /frontend/src/api/omni/resources/
+ADD client/api/omni/management/management.proto /frontend/src/api/omni/management/
+ADD client/api/omni/oidc/oidc.proto /frontend/src/api/omni/oidc/
+ADD https://raw.githubusercontent.com/siderolabs/go-api-signature/a034e9ff315ba4a56115acc7ad0fb99d0dc77800/api/auth/auth.proto /frontend/src/api/omni/auth/
+ADD client/api/omni/specs/omni.proto /frontend/src/api/omni/specs/
+ADD client/api/omni/specs/siderolink.proto /frontend/src/api/omni/specs/
+ADD client/api/omni/specs/system.proto /frontend/src/api/omni/specs/
+ADD client/api/omni/specs/auth.proto /frontend/src/api/omni/specs/
+ADD client/api/omni/specs/virtual.proto /frontend/src/api/omni/specs/
+ADD client/api/omni/specs/ephemeral.proto /frontend/src/api/omni/specs/
+ADD https://raw.githubusercontent.com/googleapis/googleapis/master/google/rpc/status.proto /frontend/src/api/google/rpc/
+ADD https://raw.githubusercontent.com/siderolabs/talos/03a20da9da5916c63015d355f4b56823778e994f/api/machine/machine.proto /frontend/src/api/talos/machine/
+ADD https://raw.githubusercontent.com/protocolbuffers/protobuf/master/src/google/protobuf/any.proto /frontend/src/api/google/protobuf/
+ADD https://raw.githubusercontent.com/protocolbuffers/protobuf/master/src/google/protobuf/duration.proto /frontend/src/api/google/protobuf/
+ADD https://raw.githubusercontent.com/protocolbuffers/protobuf/master/src/google/protobuf/empty.proto /frontend/src/api/google/protobuf/
+ADD https://raw.githubusercontent.com/protocolbuffers/protobuf/master/src/google/protobuf/timestamp.proto /frontend/src/api/google/protobuf/
+ADD https://raw.githubusercontent.com/googleapis/googleapis/master/google/rpc/code.proto /frontend/src/api/google/rpc/
+ADD https://raw.githubusercontent.com/siderolabs/talos/03a20da9da5916c63015d355f4b56823778e994f/api/common/common.proto /frontend/src/api/common/
+ADD https://raw.githubusercontent.com/cosi-project/specification/5c734257bfa6a3acb01417809797dbfbe0e73c71/proto/v1alpha1/resource.proto /frontend/src/api/v1alpha1/
+
+# base toolchain image
+FROM ${TOOLCHAIN} AS toolchain
+RUN apk --update --no-cache add bash curl build-base protoc protobuf-dev
+
+# build tools
+FROM --platform=${BUILDPLATFORM} toolchain AS tools
+ENV GO111MODULE on
+ARG CGO_ENABLED
+ENV CGO_ENABLED ${CGO_ENABLED}
+ARG GOTOOLCHAIN
+ENV GOTOOLCHAIN ${GOTOOLCHAIN}
+ARG GOEXPERIMENT
+ENV GOEXPERIMENT ${GOEXPERIMENT}
+ENV GOPATH /go
+ARG PROTOBUF_GO_VERSION
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install google.golang.org/protobuf/cmd/protoc-gen-go@v${PROTOBUF_GO_VERSION}
+RUN mv /go/bin/protoc-gen-go /bin
+ARG GRPC_GO_VERSION
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v${GRPC_GO_VERSION}
+RUN mv /go/bin/protoc-gen-go-grpc /bin
+ARG GRPC_GATEWAY_VERSION
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v${GRPC_GATEWAY_VERSION}
+RUN mv /go/bin/protoc-gen-grpc-gateway /bin
+ARG VTPROTOBUF_VERSION
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install github.com/planetscale/vtprotobuf/cmd/protoc-gen-go-vtproto@v${VTPROTOBUF_VERSION}
+RUN mv /go/bin/protoc-gen-go-vtproto /bin
+ARG DEEPCOPY_VERSION
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install github.com/siderolabs/deep-copy@${DEEPCOPY_VERSION} \
+ && mv /go/bin/deep-copy /bin/deep-copy
+ARG GOLANGCILINT_VERSION
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install github.com/golangci/golangci-lint/cmd/golangci-lint@${GOLANGCILINT_VERSION} \
+ && mv /go/bin/golangci-lint /bin/golangci-lint
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install golang.org/x/vuln/cmd/govulncheck@latest \
+ && mv /go/bin/govulncheck /bin/govulncheck
+ARG GOIMPORTS_VERSION
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install golang.org/x/tools/cmd/goimports@${GOIMPORTS_VERSION} \
+ && mv /go/bin/goimports /bin/goimports
+ARG GOFUMPT_VERSION
+RUN go install mvdan.cc/gofumpt@${GOFUMPT_VERSION} \
+ && mv /go/bin/gofumpt /bin/gofumpt
+
+# tools and sources
+FROM js-toolchain AS js
+WORKDIR /src
+ARG PROTOBUF_GRPC_GATEWAY_TS_VERSION
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install github.com/siderolabs/protoc-gen-grpc-gateway-ts@v${PROTOBUF_GRPC_GATEWAY_TS_VERSION}
+RUN mv /go/bin/protoc-gen-grpc-gateway-ts /bin
+COPY frontend/package.json ./
+COPY frontend/package-lock.json ./
+RUN --mount=type=cache,target=/src/node_modules npm version ${VERSION}
+RUN --mount=type=cache,target=/src/node_modules npm ci
+COPY frontend/.eslintrc.yaml ./
+COPY frontend/babel.config.js ./
+COPY frontend/jest.config.js ./
+COPY frontend/tsconfig.json ./
+COPY ./frontend/src ./src
+COPY ./frontend/tests ./tests
+COPY ./frontend/public ./public
+COPY ./frontend/babel.config.js ./babel.config.js
+COPY ./frontend/jest.config.js ./jest.config.js
+COPY ./frontend/postcss.config.js ./postcss.config.js
+COPY ./frontend/tailwind.config.js ./tailwind.config.js
+COPY ./frontend/vue.config.js ./vue.config.js
+
+FROM tools AS embed-generate
+ARG SHA
+ARG TAG
+WORKDIR /src
+RUN mkdir -p internal/version/data && \
+ echo -n ${SHA} > internal/version/data/sha && \
+ echo -n ${TAG} > internal/version/data/tag
+
+# runs protobuf compiler
+FROM tools AS proto-compile
+COPY --from=proto-specs / /
+RUN protoc -I/client/api --go_out=paths=source_relative:/client/api --go-grpc_out=paths=source_relative:/client/api --go-vtproto_out=paths=source_relative:/client/api --go-vtproto_opt=features=marshal+unmarshal+size+equal+clone /client/api/common/omni.proto
+RUN protoc -I/client/api --grpc-gateway_out=paths=source_relative:/client/api --grpc-gateway_opt=generate_unbound_methods=true --go_out=paths=source_relative:/client/api --go-grpc_out=paths=source_relative:/client/api --go-vtproto_out=paths=source_relative:/client/api --go-vtproto_opt=features=marshal+unmarshal+size+equal+clone /client/api/omni/resources/resources.proto /client/api/omni/management/management.proto /client/api/omni/oidc/oidc.proto /client/api/omni/specs/auth.proto /client/api/omni/specs/virtual.proto /client/api/omni/specs/ephemeral.proto /client/api/omni/specs/oidc.proto /client/api/omni/specs/omni.proto /client/api/omni/specs/siderolink.proto /client/api/omni/specs/system.proto
+RUN protoc -I/client/api --grpc-gateway_out=paths=source_relative:/client/api --grpc-gateway_opt=generate_unbound_methods=true --grpc-gateway_opt=standalone=true /client/api/google/rpc/status.proto /client/api/common/common.proto /client/api/talos/machine/machine.proto /client/api/v1alpha1/resource.proto
+RUN rm /client/api/common/omni.proto
+RUN rm /client/api/omni/resources/resources.proto
+RUN rm /client/api/omni/management/management.proto
+RUN rm /client/api/omni/oidc/oidc.proto
+RUN rm /client/api/omni/specs/auth.proto
+RUN rm /client/api/omni/specs/virtual.proto
+RUN rm /client/api/omni/specs/ephemeral.proto
+RUN rm /client/api/omni/specs/oidc.proto
+RUN rm /client/api/omni/specs/omni.proto
+RUN rm /client/api/omni/specs/siderolink.proto
+RUN rm /client/api/omni/specs/system.proto
+RUN goimports -w -local github.com/siderolabs/omni/client,github.com/siderolabs/omni /client/api
+RUN gofumpt -w /client/api
+
+# builds frontend
+FROM js AS frontend
+ARG NODE_BUILD_ARGS
+RUN --mount=type=cache,target=/src/node_modules npm run build ${NODE_BUILD_ARGS}
+RUN mkdir -p /internal/frontend/dist
+RUN cp -rf ./dist/* /internal/frontend/dist
+
+# runs eslint
+FROM js AS lint-eslint
+RUN --mount=type=cache,target=/src/node_modules npm run lint
+
+# runs protobuf compiler
+FROM js AS proto-compile-frontend
+COPY --from=proto-specs-frontend / /
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/common/omni.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/omni/resources/resources.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/omni/management/management.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/omni/oidc/oidc.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/omni/auth/auth.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/omni/specs/omni.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/omni/specs/siderolink.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/omni/specs/system.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/omni/specs/auth.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/omni/specs/virtual.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/omni/specs/ephemeral.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/google/rpc/status.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/talos/machine/machine.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/google/protobuf/any.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/google/protobuf/duration.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/google/protobuf/empty.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/google/protobuf/timestamp.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/google/rpc/code.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/common/common.proto
+RUN protoc -I/frontend/src/api --grpc-gateway-ts_out=source_relative:/frontend/src/api --grpc-gateway-ts_opt=use_proto_names=true /frontend/src/api/v1alpha1/resource.proto
+RUN rm /frontend/src/api/common/omni.proto
+RUN rm /frontend/src/api/omni/resources/resources.proto
+RUN rm /frontend/src/api/omni/management/management.proto
+RUN rm /frontend/src/api/omni/oidc/oidc.proto
+RUN rm /frontend/src/api/omni/specs/omni.proto
+RUN rm /frontend/src/api/omni/specs/siderolink.proto
+RUN rm /frontend/src/api/omni/specs/system.proto
+RUN rm /frontend/src/api/omni/specs/auth.proto
+RUN rm /frontend/src/api/omni/specs/virtual.proto
+RUN rm /frontend/src/api/omni/specs/ephemeral.proto
+
+# runs js unit-tests
+FROM js AS unit-tests-frontend
+RUN --mount=type=cache,target=/src/node_modules CI=true npm run test
+
+FROM embed-generate AS embed-abbrev-generate
+WORKDIR /src
+ARG ABBREV_TAG
+RUN echo -n 'undefined' > internal/version/data/sha && \
+ echo -n ${ABBREV_TAG} > internal/version/data/tag
+
+# tools and sources
+FROM tools AS base
+WORKDIR /src
+COPY client/go.mod client/go.mod
+COPY client/go.sum client/go.sum
+COPY go.mod go.mod
+COPY go.sum go.sum
+RUN cd client
+RUN --mount=type=cache,target=/go/pkg go mod download
+RUN --mount=type=cache,target=/go/pkg go mod verify
+RUN cd .
+RUN --mount=type=cache,target=/go/pkg go mod download
+RUN --mount=type=cache,target=/go/pkg go mod verify
+COPY ./client/api ./client/api
+COPY ./client/pkg ./client/pkg
+COPY ./cmd ./cmd
+COPY ./internal ./internal
+COPY --from=frontend /internal/frontend/dist ./internal/frontend/dist
+RUN --mount=type=cache,target=/go/pkg go list -mod=readonly all >/dev/null
+
+# cleaned up specs and compiled versions
+FROM scratch AS generate-frontend
+ADD https://www.talos.dev/v1.6/schemas/config.schema.json frontend/src/schemas/config.schema.json
+COPY --from=proto-compile-frontend frontend/ frontend/
+
+# run go generate
+FROM base AS go-generate-0
+WORKDIR /src
+COPY .license-header.go.txt hack/.license-header.go.txt
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go generate ./internal/...
+RUN goimports -w -local github.com/siderolabs/omni/client,github.com/siderolabs/omni ./internal
+
+# runs gofumpt
+FROM base AS lint-gofumpt
+RUN FILES="$(gofumpt -l .)" && test -z "${FILES}" || (echo -e "Source code is not formatted with 'gofumpt -w .':\n${FILES}"; exit 1)
+
+# runs gofumpt
+FROM base AS lint-gofumpt-client
+RUN FILES="$(gofumpt -l client)" && test -z "${FILES}" || (echo -e "Source code is not formatted with 'gofumpt -w client':\n${FILES}"; exit 1)
+
+# runs goimports
+FROM base AS lint-goimports
+RUN FILES="$(goimports -l -local github.com/siderolabs/omni/ .)" && test -z "${FILES}" || (echo -e "Source code is not formatted with 'goimports -w -local github.com/siderolabs/omni/ .':\n${FILES}"; exit 1)
+
+# runs goimports
+FROM base AS lint-goimports-client
+RUN FILES="$(goimports -l -local github.com/siderolabs/omni/client/ client)" && test -z "${FILES}" || (echo -e "Source code is not formatted with 'goimports -w -local github.com/siderolabs/omni/client/ client':\n${FILES}"; exit 1)
+
+# runs golangci-lint
+FROM base AS lint-golangci-lint
+WORKDIR /src
+COPY .golangci.yml .
+ENV GOGC 50
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/root/.cache/golangci-lint --mount=type=cache,target=/go/pkg golangci-lint run --config .golangci.yml
+
+# runs golangci-lint
+FROM base AS lint-golangci-lint-client
+WORKDIR /src/client
+COPY client/.golangci.yml .
+ENV GOGC 50
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/root/.cache/golangci-lint --mount=type=cache,target=/go/pkg golangci-lint run --config .golangci.yml
+
+# runs govulncheck
+FROM base AS lint-govulncheck
+WORKDIR /src
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg govulncheck ./...
+
+# runs govulncheck
+FROM base AS lint-govulncheck-client
+WORKDIR /src/client
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg govulncheck ./...
+
+# runs unit-tests with race detector
+FROM base AS unit-tests-client-race
+WORKDIR /src/client
+ARG TESTPKGS
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg --mount=type=cache,target=/tmp CGO_ENABLED=1 go test -v -race -count 1 ${TESTPKGS}
+
+# runs unit-tests
+FROM base AS unit-tests-client-run
+WORKDIR /src/client
+ARG TESTPKGS
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg --mount=type=cache,target=/tmp go test -v -covermode=atomic -coverprofile=coverage.txt -coverpkg=${TESTPKGS} -count 1 ${TESTPKGS}
+
+# runs unit-tests with race detector
+FROM base AS unit-tests-race
+WORKDIR /src
+ARG TESTPKGS
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg --mount=type=cache,target=/tmp CGO_ENABLED=1 go test -v -race -count 1 ${TESTPKGS}
+
+# runs unit-tests
+FROM base AS unit-tests-run
+WORKDIR /src
+ARG TESTPKGS
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg --mount=type=cache,target=/tmp go test -v -covermode=atomic -coverprofile=coverage.txt -coverpkg=${TESTPKGS} -count 1 ${TESTPKGS}
+
+# cleaned up specs and compiled versions
+FROM scratch AS generate
+COPY --from=proto-compile /client/api/ /client/api/
+COPY --from=go-generate-0 /src/frontend frontend
+COPY --from=embed-abbrev-generate /src/internal/version internal/version
+
+FROM scratch AS unit-tests-client
+COPY --from=unit-tests-client-run /src/client/coverage.txt /coverage-unit-tests-client.txt
+
+FROM scratch AS unit-tests
+COPY --from=unit-tests-run /src/coverage.txt /coverage-unit-tests.txt
+
+# builds omni-darwin-amd64
+FROM base AS omni-darwin-amd64-build
+COPY --from=generate / /
+COPY --from=embed-generate / /
+WORKDIR /src/cmd/omni
+ARG GO_BUILDFLAGS
+ARG GO_LDFLAGS
+ARG VERSION_PKG="internal/version"
+ARG SHA
+ARG TAG
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOARCH=amd64 GOOS=darwin go build ${GO_BUILDFLAGS} -ldflags "${GO_LDFLAGS} -X ${VERSION_PKG}.Name=omni -X ${VERSION_PKG}.SHA=${SHA} -X ${VERSION_PKG}.Tag=${TAG}" -o /omni-darwin-amd64
+
+# builds omni-darwin-arm64
+FROM base AS omni-darwin-arm64-build
+COPY --from=generate / /
+COPY --from=embed-generate / /
+WORKDIR /src/cmd/omni
+ARG GO_BUILDFLAGS
+ARG GO_LDFLAGS
+ARG VERSION_PKG="internal/version"
+ARG SHA
+ARG TAG
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOARCH=arm64 GOOS=darwin go build ${GO_BUILDFLAGS} -ldflags "${GO_LDFLAGS} -X ${VERSION_PKG}.Name=omni -X ${VERSION_PKG}.SHA=${SHA} -X ${VERSION_PKG}.Tag=${TAG}" -o /omni-darwin-arm64
+
+# builds omni-integration-test-linux-amd64
+FROM base AS omni-integration-test-linux-amd64-build
+COPY --from=generate / /
+COPY --from=embed-generate / /
+WORKDIR /src/cmd/omni-integration-test
+ARG GO_BUILDFLAGS
+ARG GO_LDFLAGS
+ARG VERSION_PKG="internal/version"
+ARG SHA
+ARG TAG
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOARCH=amd64 GOOS=linux go build ${GO_BUILDFLAGS} -ldflags "${GO_LDFLAGS} -X ${VERSION_PKG}.Name=omni-integration-test -X ${VERSION_PKG}.SHA=${SHA} -X ${VERSION_PKG}.Tag=${TAG}" -o /omni-integration-test-linux-amd64
+
+# builds omni-linux-amd64
+FROM base AS omni-linux-amd64-build
+COPY --from=generate / /
+COPY --from=embed-generate / /
+WORKDIR /src/cmd/omni
+ARG GO_BUILDFLAGS
+ARG GO_LDFLAGS
+ARG VERSION_PKG="internal/version"
+ARG SHA
+ARG TAG
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOARCH=amd64 GOOS=linux go build ${GO_BUILDFLAGS} -ldflags "${GO_LDFLAGS} -X ${VERSION_PKG}.Name=omni -X ${VERSION_PKG}.SHA=${SHA} -X ${VERSION_PKG}.Tag=${TAG}" -o /omni-linux-amd64
+
+# builds omni-linux-arm64
+FROM base AS omni-linux-arm64-build
+COPY --from=generate / /
+COPY --from=embed-generate / /
+WORKDIR /src/cmd/omni
+ARG GO_BUILDFLAGS
+ARG GO_LDFLAGS
+ARG VERSION_PKG="internal/version"
+ARG SHA
+ARG TAG
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOARCH=arm64 GOOS=linux go build ${GO_BUILDFLAGS} -ldflags "${GO_LDFLAGS} -X ${VERSION_PKG}.Name=omni -X ${VERSION_PKG}.SHA=${SHA} -X ${VERSION_PKG}.Tag=${TAG}" -o /omni-linux-arm64
+
+# builds omnictl-darwin-amd64
+FROM base AS omnictl-darwin-amd64-build
+COPY --from=generate / /
+COPY --from=embed-generate / /
+WORKDIR /src/cmd/omnictl
+ARG GO_BUILDFLAGS
+ARG GO_LDFLAGS
+ARG VERSION_PKG="internal/version"
+ARG SHA
+ARG TAG
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOARCH=amd64 GOOS=darwin go build ${GO_BUILDFLAGS} -ldflags "${GO_LDFLAGS} -X ${VERSION_PKG}.Name=omnictl -X ${VERSION_PKG}.SHA=${SHA} -X ${VERSION_PKG}.Tag=${TAG}" -o /omnictl-darwin-amd64
+
+# builds omnictl-darwin-arm64
+FROM base AS omnictl-darwin-arm64-build
+COPY --from=generate / /
+COPY --from=embed-generate / /
+WORKDIR /src/cmd/omnictl
+ARG GO_BUILDFLAGS
+ARG GO_LDFLAGS
+ARG VERSION_PKG="internal/version"
+ARG SHA
+ARG TAG
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOARCH=arm64 GOOS=darwin go build ${GO_BUILDFLAGS} -ldflags "${GO_LDFLAGS} -X ${VERSION_PKG}.Name=omnictl -X ${VERSION_PKG}.SHA=${SHA} -X ${VERSION_PKG}.Tag=${TAG}" -o /omnictl-darwin-arm64
+
+# builds omnictl-linux-amd64
+FROM base AS omnictl-linux-amd64-build
+COPY --from=generate / /
+COPY --from=embed-generate / /
+WORKDIR /src/cmd/omnictl
+ARG GO_BUILDFLAGS
+ARG GO_LDFLAGS
+ARG VERSION_PKG="internal/version"
+ARG SHA
+ARG TAG
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOARCH=amd64 GOOS=linux go build ${GO_BUILDFLAGS} -ldflags "${GO_LDFLAGS} -X ${VERSION_PKG}.Name=omnictl -X ${VERSION_PKG}.SHA=${SHA} -X ${VERSION_PKG}.Tag=${TAG}" -o /omnictl-linux-amd64
+
+# builds omnictl-linux-arm64
+FROM base AS omnictl-linux-arm64-build
+COPY --from=generate / /
+COPY --from=embed-generate / /
+WORKDIR /src/cmd/omnictl
+ARG GO_BUILDFLAGS
+ARG GO_LDFLAGS
+ARG VERSION_PKG="internal/version"
+ARG SHA
+ARG TAG
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOARCH=arm64 GOOS=linux go build ${GO_BUILDFLAGS} -ldflags "${GO_LDFLAGS} -X ${VERSION_PKG}.Name=omnictl -X ${VERSION_PKG}.SHA=${SHA} -X ${VERSION_PKG}.Tag=${TAG}" -o /omnictl-linux-arm64
+
+# builds omnictl-windows-amd64.exe
+FROM base AS omnictl-windows-amd64.exe-build
+COPY --from=generate / /
+COPY --from=embed-generate / /
+WORKDIR /src/cmd/omnictl
+ARG GO_BUILDFLAGS
+ARG GO_LDFLAGS
+ARG VERSION_PKG="internal/version"
+ARG SHA
+ARG TAG
+RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOARCH=amd64 GOOS=windows go build ${GO_BUILDFLAGS} -ldflags "${GO_LDFLAGS} -X ${VERSION_PKG}.Name=omnictl -X ${VERSION_PKG}.SHA=${SHA} -X ${VERSION_PKG}.Tag=${TAG}" -o /omnictl-windows-amd64.exe
+
+FROM scratch AS omni-darwin-amd64
+COPY --from=omni-darwin-amd64-build /omni-darwin-amd64 /omni-darwin-amd64
+
+FROM scratch AS omni-darwin-arm64
+COPY --from=omni-darwin-arm64-build /omni-darwin-arm64 /omni-darwin-arm64
+
+FROM scratch AS omni-integration-test-linux-amd64
+COPY --from=omni-integration-test-linux-amd64-build /omni-integration-test-linux-amd64 /omni-integration-test-linux-amd64
+
+FROM scratch AS omni-linux-amd64
+COPY --from=omni-linux-amd64-build /omni-linux-amd64 /omni-linux-amd64
+
+FROM scratch AS omni-linux-arm64
+COPY --from=omni-linux-arm64-build /omni-linux-arm64 /omni-linux-arm64
+
+FROM scratch AS omnictl-darwin-amd64
+COPY --from=omnictl-darwin-amd64-build /omnictl-darwin-amd64 /omnictl-darwin-amd64
+
+FROM scratch AS omnictl-darwin-arm64
+COPY --from=omnictl-darwin-arm64-build /omnictl-darwin-arm64 /omnictl-darwin-arm64
+
+FROM scratch AS omnictl-linux-amd64
+COPY --from=omnictl-linux-amd64-build /omnictl-linux-amd64 /omnictl-linux-amd64
+
+FROM scratch AS omnictl-linux-arm64
+COPY --from=omnictl-linux-arm64-build /omnictl-linux-arm64 /omnictl-linux-arm64
+
+FROM scratch AS omnictl-windows-amd64.exe
+COPY --from=omnictl-windows-amd64.exe-build /omnictl-windows-amd64.exe /omnictl-windows-amd64.exe
+
+FROM omni-integration-test-linux-${TARGETARCH} AS omni-integration-test
+
+FROM scratch AS omni-integration-test-all
+COPY --from=omni-integration-test-linux-amd64 / /
+
+FROM omni-linux-${TARGETARCH} AS omni
+
+FROM scratch AS omni-all
+COPY --from=omni-darwin-amd64 / /
+COPY --from=omni-darwin-arm64 / /
+COPY --from=omni-linux-amd64 / /
+COPY --from=omni-linux-arm64 / /
+
+FROM omnictl-linux-${TARGETARCH} AS omnictl
+
+FROM scratch AS omnictl-all
+COPY --from=omnictl-darwin-amd64 / /
+COPY --from=omnictl-darwin-arm64 / /
+COPY --from=omnictl-linux-amd64 / /
+COPY --from=omnictl-linux-arm64 / /
+COPY --from=omnictl-windows-amd64.exe / /
+
+FROM scratch AS image-omni
+ARG TARGETARCH
+COPY --from=omni omni-linux-${TARGETARCH} /omni
+COPY --from=omni omni-linux-${TARGETARCH} /omni
+COPY --from=image-fhs / /
+COPY --from=image-ca-certificates / /
+COPY --from=omnictl-all / /omnictl/
+LABEL org.opencontainers.image.source https://github.com/siderolabs/omni
+ENTRYPOINT ["/omni"]
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 000000000..1b42f0fd5
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,95 @@
+Business Source License 1.1
+
+Parameters
+
+Licensor: Sidero Labs, Inc.
+Licensed Work: Omni
+ The Licensed Work is (c) 2024 Sidero Labs, Inc.
+Additional Use Grant: None
+
+Change Date: 2028-02-22
+
+Change License: Mozilla Public License, version 2.0
+
+For information about alternative licensing arrangements for the Software,
+please visit: https://www.siderolabs.com/contact/
+
+Notice
+
+The Business Source License (this document, or the "License") is not an Open
+Source license. However, the Licensed Work will eventually be made available
+under an Open Source License, as stated in this License.
+
+License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
+"Business Source License" is a trademark of MariaDB Corporation Ab.
+
+-----------------------------------------------------------------------------
+
+Business Source License 1.1
+
+Terms
+
+The Licensor hereby grants you the right to copy, modify, create derivative
+works, redistribute, and make non-production use of the Licensed Work. The
+Licensor may make an Additional Use Grant, above, permitting limited
+production use.
+
+Effective on the Change Date, or the fourth anniversary of the first publicly
+available distribution of a specific version of the Licensed Work under this
+License, whichever comes first, the Licensor hereby grants you rights under
+the terms of the Change License, and the rights granted in the paragraph
+above terminate.
+
+If your use of the Licensed Work does not comply with the requirements
+currently in effect as described in this License, you must purchase a
+commercial license from the Licensor, its affiliated entities, or authorized
+resellers, or you must refrain from using the Licensed Work.
+
+All copies of the original and modified Licensed Work, and derivative works
+of the Licensed Work, are subject to this License. This License applies
+separately for each version of the Licensed Work and the Change Date may vary
+for each version of the Licensed Work released by Licensor.
+
+You must conspicuously display this License on each original or modified copy
+of the Licensed Work. If you receive the Licensed Work in original or
+modified form from a third party, the terms and conditions set forth in this
+License apply to your use of that work.
+
+Any use of the Licensed Work in violation of this License will automatically
+terminate your rights under this License for the current and all other
+versions of the Licensed Work.
+
+This License does not grant you any right in any trademark or logo of
+Licensor or its affiliates (provided that you may use a trademark or logo of
+Licensor as expressly required by this License).
+
+TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
+AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
+EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
+TITLE.
+
+MariaDB hereby grants you permission to use this License’s text to license
+your works, and to refer to it using the trademark "Business Source License",
+as long as you comply with the Covenants of Licensor below.
+
+Covenants of Licensor
+
+In consideration of the right to use this License’s text and the "Business
+Source License" name and trademark, Licensor covenants to MariaDB, and to all
+other recipients of the licensed work to be provided by Licensor:
+
+1. To specify as the Change License the GPL Version 2.0 or any later version,
+ or a license that is compatible with GPL Version 2.0 or a later version,
+ where "compatible" means that software provided under the Change License can
+ be included in a program with software provided under GPL Version 2.0 or a
+ later version. Licensor may specify additional Change Licenses without
+ limitation.
+
+2. To either: (a) specify an additional grant of rights to use that does not
+ impose any additional restriction on the right granted in this License, as
+ the Additional Use Grant; or (b) insert the text "None".
+
+3. To specify a Change Date.
+
+4. Not to modify this License in any other way.
diff --git a/Makefile b/Makefile
new file mode 100644
index 000000000..bc546a6b2
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,365 @@
+# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT.
+#
+# Generated on 2024-02-26T21:35:48Z by kres latest.
+
+# common variables
+
+SHA := $(shell git describe --match=none --always --abbrev=8 --dirty)
+TAG := $(shell git describe --tag --always --dirty)
+ABBREV_TAG := $(shell git describe --tags >/dev/null 2>/dev/null && git describe --tag --always --match v[0-9]\* --abbrev=0 || echo 'undefined')
+BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
+ARTIFACTS := _out
+WITH_DEBUG ?= false
+WITH_RACE ?= false
+REGISTRY ?= ghcr.io
+USERNAME ?= siderolabs
+REGISTRY_AND_USERNAME ?= $(REGISTRY)/$(USERNAME)
+PROTOBUF_GRPC_GATEWAY_TS_VERSION ?= 1.2.1
+TESTPKGS ?= ./...
+NODE_BUILD_ARGS ?=
+PROTOBUF_GO_VERSION ?= 1.32.0
+GRPC_GO_VERSION ?= 1.3.0
+GRPC_GATEWAY_VERSION ?= 2.19.1
+VTPROTOBUF_VERSION ?= 0.6.0
+DEEPCOPY_VERSION ?= v0.5.6
+GOLANGCILINT_VERSION ?= v1.56.2
+GOFUMPT_VERSION ?= v0.6.0
+GO_VERSION ?= 1.22.0
+GOIMPORTS_VERSION ?= v0.18.0
+GO_BUILDFLAGS ?=
+GO_LDFLAGS ?=
+CGO_ENABLED ?= 0
+GOTOOLCHAIN ?= local
+KRES_IMAGE ?= ghcr.io/siderolabs/kres:latest
+CONFORMANCE_IMAGE ?= ghcr.io/siderolabs/conform:latest
+
+# docker build settings
+
+BUILD := docker buildx build
+PLATFORM ?= linux/amd64
+PROGRESS ?= auto
+PUSH ?= false
+CI_ARGS ?=
+COMMON_ARGS = --file=Dockerfile
+COMMON_ARGS += --provenance=false
+COMMON_ARGS += --progress=$(PROGRESS)
+COMMON_ARGS += --platform=$(PLATFORM)
+COMMON_ARGS += --push=$(PUSH)
+COMMON_ARGS += --build-arg=ARTIFACTS="$(ARTIFACTS)"
+COMMON_ARGS += --build-arg=SHA="$(SHA)"
+COMMON_ARGS += --build-arg=TAG="$(TAG)"
+COMMON_ARGS += --build-arg=ABBREV_TAG="$(ABBREV_TAG)"
+COMMON_ARGS += --build-arg=USERNAME="$(USERNAME)"
+COMMON_ARGS += --build-arg=REGISTRY="$(REGISTRY)"
+COMMON_ARGS += --build-arg=JS_TOOLCHAIN="$(JS_TOOLCHAIN)"
+COMMON_ARGS += --build-arg=PROTOBUF_GRPC_GATEWAY_TS_VERSION="$(PROTOBUF_GRPC_GATEWAY_TS_VERSION)"
+COMMON_ARGS += --build-arg=NODE_BUILD_ARGS="$(NODE_BUILD_ARGS)"
+COMMON_ARGS += --build-arg=TOOLCHAIN="$(TOOLCHAIN)"
+COMMON_ARGS += --build-arg=CGO_ENABLED="$(CGO_ENABLED)"
+COMMON_ARGS += --build-arg=GO_BUILDFLAGS="$(GO_BUILDFLAGS)"
+COMMON_ARGS += --build-arg=GO_LDFLAGS="$(GO_LDFLAGS)"
+COMMON_ARGS += --build-arg=GOTOOLCHAIN="$(GOTOOLCHAIN)"
+COMMON_ARGS += --build-arg=GOEXPERIMENT="$(GOEXPERIMENT)"
+COMMON_ARGS += --build-arg=PROTOBUF_GO_VERSION="$(PROTOBUF_GO_VERSION)"
+COMMON_ARGS += --build-arg=GRPC_GO_VERSION="$(GRPC_GO_VERSION)"
+COMMON_ARGS += --build-arg=GRPC_GATEWAY_VERSION="$(GRPC_GATEWAY_VERSION)"
+COMMON_ARGS += --build-arg=VTPROTOBUF_VERSION="$(VTPROTOBUF_VERSION)"
+COMMON_ARGS += --build-arg=DEEPCOPY_VERSION="$(DEEPCOPY_VERSION)"
+COMMON_ARGS += --build-arg=GOLANGCILINT_VERSION="$(GOLANGCILINT_VERSION)"
+COMMON_ARGS += --build-arg=GOIMPORTS_VERSION="$(GOIMPORTS_VERSION)"
+COMMON_ARGS += --build-arg=GOFUMPT_VERSION="$(GOFUMPT_VERSION)"
+COMMON_ARGS += --build-arg=TESTPKGS="$(TESTPKGS)"
+JS_TOOLCHAIN ?= docker.io/node:21.6.2-alpine3.19
+TOOLCHAIN ?= docker.io/golang:1.22-alpine
+
+# extra variables
+
+REMOVE_VOLUMES ?= false
+
+# help menu
+
+export define HELP_MENU_HEADER
+# Getting Started
+
+To build this project, you must have the following installed:
+
+- git
+- make
+- docker (19.03 or higher)
+
+## Creating a Builder Instance
+
+The build process makes use of experimental Docker features (buildx).
+To enable experimental features, add 'experimental: "true"' to '/etc/docker/daemon.json' on
+Linux or enable experimental features in Docker GUI for Windows or Mac.
+
+To create a builder instance, run:
+
+ docker buildx create --name local --use
+
+If running builds that needs to be cached aggresively create a builder instance with the following:
+
+ docker buildx create --name local --use --config=config.toml
+
+config.toml contents:
+
+[worker.oci]
+ gc = true
+ gckeepstorage = 50000
+
+ [[worker.oci.gcpolicy]]
+ keepBytes = 10737418240
+ keepDuration = 604800
+ filters = [ "type==source.local", "type==exec.cachemount", "type==source.git.checkout"]
+ [[worker.oci.gcpolicy]]
+ all = true
+ keepBytes = 53687091200
+
+If you already have a compatible builder instance, you may use that instead.
+
+## Artifacts
+
+All artifacts will be output to ./$(ARTIFACTS). Images will be tagged with the
+registry "$(REGISTRY)", username "$(USERNAME)", and a dynamic tag (e.g. $(IMAGE):$(TAG)).
+The registry and username can be overridden by exporting REGISTRY, and USERNAME
+respectively.
+
+endef
+
+ifneq (, $(filter $(WITH_RACE), t true TRUE y yes 1))
+GO_BUILDFLAGS += -race
+CGO_ENABLED := 1
+GO_LDFLAGS += -linkmode=external -extldflags '-static'
+endif
+
+ifneq (, $(filter $(WITH_DEBUG), t true TRUE y yes 1))
+GO_BUILDFLAGS += -tags sidero.debug
+else
+GO_LDFLAGS += -s
+endif
+
+all: unit-tests-frontend lint-eslint frontend unit-tests-client unit-tests omni image-omni omni-integration-test omnictl dev-server docker-compose-up docker-compose-down mkcert-install mkcert-generate mkcert-uninstall run-integration-test lint
+
+.PHONY: clean
+clean: ## Cleans up all artifacts.
+ @rm -rf $(ARTIFACTS)
+
+target-%: ## Builds the specified target defined in the Dockerfile. The build result will only remain in the build cache.
+ @$(BUILD) --target=$* $(COMMON_ARGS) $(TARGET_ARGS) $(CI_ARGS) .
+
+local-%: ## Builds the specified target defined in the Dockerfile using the local output type. The build result will be output to the specified local destination.
+ @$(MAKE) target-$* TARGET_ARGS="--output=type=local,dest=$(DEST) $(TARGET_ARGS)"
+
+generate-frontend: ## Generate .proto definitions.
+ @$(MAKE) local-$@ DEST=./
+
+.PHONY: js
+js: ## Prepare js base toolchain.
+ @$(MAKE) target-$@
+
+.PHONY: unit-tests-frontend
+unit-tests-frontend: ## Performs unit tests
+ @$(MAKE) target-$@
+
+lint-eslint: ## Runs eslint linter.
+ @$(MAKE) target-$@
+
+.PHONY: $(ARTIFACTS)/frontend-js
+$(ARTIFACTS)/frontend-js:
+ @$(MAKE) target-frontend
+
+.PHONY: frontend
+frontend: $(ARTIFACTS)/frontend-js ## Builds js release for frontend.
+
+generate: ## Generate .proto definitions.
+ @$(MAKE) local-$@ DEST=./
+
+lint-golangci-lint-client: ## Runs golangci-lint linter.
+ @$(MAKE) target-$@
+
+lint-gofumpt-client: ## Runs gofumpt linter.
+ @$(MAKE) target-$@
+
+.PHONY: fmt
+fmt: ## Formats the source code
+ @docker run --rm -it -v $(PWD):/src -w /src golang:$(GO_VERSION) \
+ bash -c "export GOTOOLCHAIN=local; \
+ export GO111MODULE=on; export GOPROXY=https://proxy.golang.org; \
+ go install mvdan.cc/gofumpt@$(GOFUMPT_VERSION) && \
+ gofumpt -w ."
+
+lint-govulncheck-client: ## Runs govulncheck linter.
+ @$(MAKE) target-$@
+
+lint-goimports-client: ## Runs goimports linter.
+ @$(MAKE) target-$@
+
+lint-golangci-lint: ## Runs golangci-lint linter.
+ @$(MAKE) target-$@
+
+lint-gofumpt: ## Runs gofumpt linter.
+ @$(MAKE) target-$@
+
+lint-govulncheck: ## Runs govulncheck linter.
+ @$(MAKE) target-$@
+
+lint-goimports: ## Runs goimports linter.
+ @$(MAKE) target-$@
+
+.PHONY: base
+base: frontend ## Prepare base toolchain
+ @$(MAKE) target-$@
+
+.PHONY: unit-tests-client
+unit-tests-client: ## Performs unit tests
+ @$(MAKE) local-$@ DEST=$(ARTIFACTS)
+
+.PHONY: unit-tests-client-race
+unit-tests-client-race: ## Performs unit tests with race detection enabled.
+ @$(MAKE) target-$@
+
+.PHONY: unit-tests
+unit-tests: ## Performs unit tests
+ @$(MAKE) local-$@ DEST=$(ARTIFACTS)
+
+.PHONY: unit-tests-race
+unit-tests-race: ## Performs unit tests with race detection enabled.
+ @$(MAKE) target-$@
+
+.PHONY: $(ARTIFACTS)/omni-darwin-amd64
+$(ARTIFACTS)/omni-darwin-amd64:
+ @$(MAKE) local-omni-darwin-amd64 DEST=$(ARTIFACTS)
+
+.PHONY: omni-darwin-amd64
+omni-darwin-amd64: $(ARTIFACTS)/omni-darwin-amd64 ## Builds executable for omni-darwin-amd64.
+
+.PHONY: $(ARTIFACTS)/omni-darwin-arm64
+$(ARTIFACTS)/omni-darwin-arm64:
+ @$(MAKE) local-omni-darwin-arm64 DEST=$(ARTIFACTS)
+
+.PHONY: omni-darwin-arm64
+omni-darwin-arm64: $(ARTIFACTS)/omni-darwin-arm64 ## Builds executable for omni-darwin-arm64.
+
+.PHONY: $(ARTIFACTS)/omni-linux-amd64
+$(ARTIFACTS)/omni-linux-amd64:
+ @$(MAKE) local-omni-linux-amd64 DEST=$(ARTIFACTS)
+
+.PHONY: omni-linux-amd64
+omni-linux-amd64: $(ARTIFACTS)/omni-linux-amd64 ## Builds executable for omni-linux-amd64.
+
+.PHONY: $(ARTIFACTS)/omni-linux-arm64
+$(ARTIFACTS)/omni-linux-arm64:
+ @$(MAKE) local-omni-linux-arm64 DEST=$(ARTIFACTS)
+
+.PHONY: omni-linux-arm64
+omni-linux-arm64: $(ARTIFACTS)/omni-linux-arm64 ## Builds executable for omni-linux-arm64.
+
+.PHONY: omni
+omni: omni-darwin-amd64 omni-darwin-arm64 omni-linux-amd64 omni-linux-arm64 ## Builds executables for omni.
+
+.PHONY: lint-markdown
+lint-markdown: ## Runs markdownlint.
+ @$(MAKE) target-$@
+
+.PHONY: lint
+lint: lint-golangci-lint-client lint-gofumpt-client lint-govulncheck-client lint-goimports-client lint-golangci-lint lint-gofumpt lint-govulncheck lint-goimports lint-markdown ## Run all linters for the project.
+
+.PHONY: image-omni
+image-omni: ## Builds image for omni.
+ @$(MAKE) target-$@ TARGET_ARGS="--tag=$(REGISTRY)/$(USERNAME)/omni:$(TAG)"
+
+.PHONY: $(ARTIFACTS)/omni-integration-test-linux-amd64
+$(ARTIFACTS)/omni-integration-test-linux-amd64:
+ @$(MAKE) local-omni-integration-test-linux-amd64 DEST=$(ARTIFACTS)
+
+.PHONY: omni-integration-test-linux-amd64
+omni-integration-test-linux-amd64: $(ARTIFACTS)/omni-integration-test-linux-amd64 ## Builds executable for omni-integration-test-linux-amd64.
+
+.PHONY: omni-integration-test
+omni-integration-test: omni-integration-test-linux-amd64 ## Builds executables for omni-integration-test.
+
+.PHONY: $(ARTIFACTS)/omnictl-darwin-amd64
+$(ARTIFACTS)/omnictl-darwin-amd64:
+ @$(MAKE) local-omnictl-darwin-amd64 DEST=$(ARTIFACTS)
+
+.PHONY: omnictl-darwin-amd64
+omnictl-darwin-amd64: $(ARTIFACTS)/omnictl-darwin-amd64 ## Builds executable for omnictl-darwin-amd64.
+
+.PHONY: $(ARTIFACTS)/omnictl-darwin-arm64
+$(ARTIFACTS)/omnictl-darwin-arm64:
+ @$(MAKE) local-omnictl-darwin-arm64 DEST=$(ARTIFACTS)
+
+.PHONY: omnictl-darwin-arm64
+omnictl-darwin-arm64: $(ARTIFACTS)/omnictl-darwin-arm64 ## Builds executable for omnictl-darwin-arm64.
+
+.PHONY: $(ARTIFACTS)/omnictl-linux-amd64
+$(ARTIFACTS)/omnictl-linux-amd64:
+ @$(MAKE) local-omnictl-linux-amd64 DEST=$(ARTIFACTS)
+
+.PHONY: omnictl-linux-amd64
+omnictl-linux-amd64: $(ARTIFACTS)/omnictl-linux-amd64 ## Builds executable for omnictl-linux-amd64.
+
+.PHONY: $(ARTIFACTS)/omnictl-linux-arm64
+$(ARTIFACTS)/omnictl-linux-arm64:
+ @$(MAKE) local-omnictl-linux-arm64 DEST=$(ARTIFACTS)
+
+.PHONY: omnictl-linux-arm64
+omnictl-linux-arm64: $(ARTIFACTS)/omnictl-linux-arm64 ## Builds executable for omnictl-linux-arm64.
+
+.PHONY: $(ARTIFACTS)/omnictl-windows-amd64.exe
+$(ARTIFACTS)/omnictl-windows-amd64.exe:
+ @$(MAKE) local-omnictl-windows-amd64.exe DEST=$(ARTIFACTS)
+
+.PHONY: omnictl-windows-amd64.exe
+omnictl-windows-amd64.exe: $(ARTIFACTS)/omnictl-windows-amd64.exe ## Builds executable for omnictl-windows-amd64.exe.
+
+.PHONY: omnictl
+omnictl: omnictl-darwin-amd64 omnictl-darwin-arm64 omnictl-linux-amd64 omnictl-linux-arm64 omnictl-windows-amd64.exe ## Builds executables for omnictl.
+
+.PHONY: dev-server
+dev-server:
+ hack/dev-server.sh
+
+.PHONY: docker-compose-up
+docker-compose-up:
+ ARTIFACTS="$(ARTIFACTS)" SHA="$(SHA)" TAG="$(TAG)" USERNAME="$(USERNAME)" REGISTRY="$(REGISTRY)" JS_TOOLCHAIN="$(JS_TOOLCHAIN)" PROTOBUF_TS_VERSION="$(PROTOBUF_TS_VERSION)" PROTOBUF_GRPC_GATEWAY_TS_VERSION="$(PROTOBUF_GRPC_GATEWAY_TS_VERSION)" NODE_BUILD_ARGS="$(NODE_BUILD_ARGS)" TOOLCHAIN="$(TOOLCHAIN)" CGO_ENABLED="$(CGO_ENABLED)" GO_BUILDFLAGS="$(GO_BUILDFLAGS)" GOLANGCILINT_VERSION="$(GOLANGCILINT_VERSION)" GOFUMPT_VERSION="$(GOFUMPT_VERSION)" GOIMPORTS_VERSION="$(GOIMPORTS_VERSION)" PROTOBUF_GO_VERSION="$(PROTOBUF_GO_VERSION)" GRPC_GO_VERSION="$(GRPC_GO_VERSION)" GRPC_GATEWAY_VERSION="$(GRPC_GATEWAY_VERSION)" VTPROTOBUF_VERSION="$(VTPROTOBUF_VERSION)" DEEPCOPY_VERSION="$(DEEPCOPY_VERSION)" TESTPKGS="$(TESTPKGS)" COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 GO_LDFLAGS="$(GO_LDFLAGS)" docker compose --file ./hack/compose/docker-compose.yml --file ./hack/compose/docker-compose.override.yml up --build
+
+.PHONY: docker-compose-down
+docker-compose-down:
+ ARTIFACTS="$(ARTIFACTS)" SHA="$(SHA)" TAG="$(TAG)" USERNAME="$(USERNAME)" REGISTRY="$(REGISTRY)" JS_TOOLCHAIN="$(JS_TOOLCHAIN)" PROTOBUF_TS_VERSION="$(PROTOBUF_TS_VERSION)" PROTOBUF_GRPC_GATEWAY_TS_VERSION="$(PROTOBUF_GRPC_GATEWAY_TS_VERSION)" NODE_BUILD_ARGS="$(NODE_BUILD_ARGS)" TOOLCHAIN="$(TOOLCHAIN)" CGO_ENABLED="$(CGO_ENABLED)" GO_BUILDFLAGS="$(GO_BUILDFLAGS)" GOLANGCILINT_VERSION="$(GOLANGCILINT_VERSION)" GOFUMPT_VERSION="$(GOFUMPT_VERSION)" GOIMPORTS_VERSION="$(GOIMPORTS_VERSION)" PROTOBUF_GO_VERSION="$(PROTOBUF_GO_VERSION)" GRPC_GO_VERSION="$(GRPC_GO_VERSION)" GRPC_GATEWAY_VERSION="$(GRPC_GATEWAY_VERSION)" VTPROTOBUF_VERSION="$(VTPROTOBUF_VERSION)" DEEPCOPY_VERSION="$(DEEPCOPY_VERSION)" TESTPKGS="$(TESTPKGS)" COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 GO_LDFLAGS="$(GO_LDFLAGS)" docker compose --file ./hack/compose/docker-compose.yml --file ./hack/compose/docker-compose.override.yml down --rmi local --remove-orphans --volumes=$(REMOVE_VOLUMES)
+
+.PHONY: mkcert-install
+mkcert-install:
+ go run ./hack/generate-certs install
+
+.PHONY: mkcert-generate
+mkcert-generate:
+ go run ./hack/generate-certs -config ./hack/generate-certs.yml generate
+
+.PHONY: mkcert-uninstall
+mkcert-uninstall:
+ go run ./hack/generate-certs uninstall
+
+run-integration-test: omni-integration-test-linux-amd64 omnictl-linux-amd64 omni-linux-amd64
+ @hack/test/integration.sh
+
+.PHONY: rekres
+rekres:
+ @docker pull $(KRES_IMAGE)
+ @docker run --rm --net=host --user $(shell id -u):$(shell id -g) -v $(PWD):/src -w /src -e GITHUB_TOKEN $(KRES_IMAGE)
+
+.PHONY: help
+help: ## This help menu.
+ @echo "$$HELP_MENU_HEADER"
+ @grep -E '^[a-zA-Z%_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
+
+.PHONY: release-notes
+release-notes:
+ mkdir -p $(ARTIFACTS)
+ @ARTIFACTS=$(ARTIFACTS) ./hack/release.sh $@ $(ARTIFACTS)/RELEASE_NOTES.md $(TAG)
+
+.PHONY: conformance
+conformance:
+ @docker pull $(CONFORMANCE_IMAGE)
+ @docker run --rm -it -v $(PWD):/src -w /src $(CONFORMANCE_IMAGE) enforce
+
diff --git a/README.md b/README.md
new file mode 100644
index 000000000..aaa3eff6a
--- /dev/null
+++ b/README.md
@@ -0,0 +1,70 @@
+
+
+
+
Omni
+
SaaS-simple deployment of Kubernetes - on your own hardware.
+
+
+---
+
+Kubernetes is wonderful, but requires scarce time and expertise to set up and manage.
+Other solutions demand you have already set up Linux correctly, have all your servers in the same network, and meet their other criteria.
+And hybrid clusters that span cloud and data center?
+Good luck with that!
+
+Omni allows you to start with bare metal, virtual machines or a cloud provider, and create clusters spanning all of your locations, with a few clicks.
+
+You provide the machines – edge compute, bare metal, VMs, or in your cloud account. Boot from an Omni image. Click to allocate to a cluster. That’s it!
+
+- Vanilla Kubernetes, on your machines, under your control.
+- Elegant UI for management and operations
+- Security taken care of – ties into your Enterprise ID provider
+- Highly Available Kubernetes API endpoint built in
+- Firewall friendly. Manage Edge nodes securely
+- From single-node clusters to the largest scale
+- Support for GPUs and most CSIs.
+
+## Development
+
+For instructions on developing Omni, see [DEVELOPMENT.md](DEVELOPMENT.md).
+
+## Community
+
+- Support: Questions, bugs, feature requests [GitHub Issues](https://github.com/siderolabs/omni/issues)
+- Slack: Join our [slack channel](https://slack.dev.talos-systems.io)
+- Twitter: [@SideroLabs](https://twitter.com/SideroLabs)
+- Email: [info@SideroLabs.com](mailto:info@SideroLabs.com)
+
+If you're interested in this project and would like to help in engineering efforts or have general usage questions, we are happy to have you!
+We hold a weekly meeting that all audiences are welcome to attend.
+
+### Office Hours
+
+- When: Mondays at 16:30 UTC.
+- Where: [Google Meet](https://meet.google.com/day-pxhv-zky).
+
+You can subscribe to this meeting by joining the community forum above.
+
+> Note: You can convert the meeting hours to your [local time](https://everytimezone.com/s/599e61d6).
+
+## Contributing
+
+Contributions are welcomed and appreciated!
+See [Contributing](CONTRIBUTING.md) for our guidelines.
+
+## Licenses
+
+The Omni code is released under a combination of two licenses:
+
+- The main Omni Server code is licensed under [Business Source License 1.1 (BSL-1.1)](LICENSE).
+- The [Omni client library](client) is licensed under [Mozilla Public License 2.0 (MPL-2.0)](client/LICENSE).
+
+When contributing to an Omni feature, you can find the relevant license in the comments at the top of each file.
diff --git a/client/.golangci.yml b/client/.golangci.yml
new file mode 100644
index 000000000..894c4c4dd
--- /dev/null
+++ b/client/.golangci.yml
@@ -0,0 +1,178 @@
+# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT.
+#
+# Generated on 2024-02-09T09:47:03Z by kres decf506.
+
+# options for analysis running
+run:
+ timeout: 10m
+ issues-exit-code: 1
+ tests: true
+ build-tags: []
+ skip-dirs: []
+ skip-dirs-use-default: true
+ skip-files: []
+ modules-download-mode: readonly
+
+# output configuration options
+output:
+ format: colored-line-number
+ print-issued-lines: true
+ print-linter-name: true
+ uniq-by-line: true
+ path-prefix: ""
+
+# all available settings of specific linters
+linters-settings:
+ dogsled:
+ max-blank-identifiers: 2
+ dupl:
+ threshold: 150
+ errcheck:
+ check-type-assertions: true
+ check-blank: true
+ exhaustive:
+ default-signifies-exhaustive: false
+ funlen:
+ lines: 60
+ statements: 40
+ gci:
+ local-prefixes: github.com/siderolabs/omni/client/
+ gocognit:
+ min-complexity: 30
+ ireturn:
+ allow:
+ - anon
+ - error
+ - empty
+ - stdlib
+ - github.com\/talos-systems\/kres\/internal\/dag.Node
+ nestif:
+ min-complexity: 5
+ goconst:
+ min-len: 3
+ min-occurrences: 3
+ gocritic:
+ disabled-checks: []
+ gocyclo:
+ min-complexity: 20
+ godot:
+ check-all: false
+ godox:
+ keywords: # default keywords are TODO, BUG, and FIXME, these can be overwritten by this setting
+ - NOTE
+ - OPTIMIZE # marks code that should be optimized before merging
+ - HACK # marks hack-arounds that should be removed before merging
+ gofmt:
+ simplify: true
+ goimports:
+ local-prefixes: github.com/siderolabs/omni/client/
+ golint:
+ min-confidence: 0.8
+ gomnd:
+ settings: {}
+ gomodguard: {}
+ govet:
+ check-shadowing: true
+ enable-all: true
+ lll:
+ line-length: 200
+ tab-width: 4
+ misspell:
+ locale: US
+ ignore-words: []
+ nakedret:
+ max-func-lines: 30
+ prealloc:
+ simple: true
+ range-loops: true # Report preallocation suggestions on range loops, true by default
+ for-loops: false # Report preallocation suggestions on for loops, false by default
+ nolintlint:
+ allow-unused: false
+ allow-leading-space: false
+ allow-no-explanation: []
+ require-explanation: false
+ require-specific: true
+ rowserrcheck: {}
+ testpackage: {}
+ unparam:
+ check-exported: false
+ unused:
+ check-exported: false
+ whitespace:
+ multi-if: false # Enforces newlines (or comments) after every multi-line if statement
+ multi-func: false # Enforces newlines (or comments) after every multi-line function signature
+ wsl:
+ strict-append: true
+ allow-assign-and-call: true
+ allow-multiline-assign: true
+ allow-cuddle-declarations: false
+ allow-trailing-comment: false
+ force-case-trailing-whitespace: 0
+ force-err-cuddling: false
+ allow-separated-leading-comment: false
+ gofumpt:
+ extra-rules: false
+ cyclop:
+ # the maximal code complexity to report
+ max-complexity: 20
+ # depguard:
+ # Main:
+ # deny:
+ # - github.com/OpenPeeDeeP/depguard # this is just an example
+
+linters:
+ enable-all: true
+ disable-all: false
+ fast: false
+ disable:
+ - exhaustruct
+ - exhaustivestruct
+ - forbidigo
+ - funlen
+ - gas
+ - gochecknoglobals
+ - gochecknoinits
+ - godox
+ - goerr113
+ - gomnd
+ - gomoddirectives
+ - ireturn
+ - nestif
+ - nonamedreturns
+ - nosnakecase
+ - paralleltest
+ - tagliatelle
+ - thelper
+ - typecheck
+ - varnamelen
+ - wrapcheck
+ - depguard # Disabled because starting with golangci-lint 1.53.0 it doesn't allow denylist alone anymore
+ - tagalign
+ - inamedparam
+ - testifylint # complains about our assert recorder and has a number of false positives for assert.Greater(t, thing, 1)
+ - protogetter # complains about us using Value field on typed spec, instead of GetValue which has a different signature
+ - perfsprint # complains about us using fmt.Sprintf in non-performance critical code, updating just kres took too long
+ # abandoned linters for which golangci shows the warning that the repo is archived by the owner
+ - interfacer
+ - maligned
+ - golint
+ - scopelint
+ - varcheck
+ - deadcode
+ - structcheck
+ - ifshort
+ # disabled as it seems to be broken - goes into imported libraries and reports issues there
+ - musttag
+
+issues:
+ exclude: []
+ exclude-rules: []
+ exclude-use-default: false
+ exclude-case-sensitive: false
+ max-issues-per-linter: 10
+ max-same-issues: 3
+ new: false
+
+severity:
+ default-severity: error
+ case-sensitive: false
diff --git a/client/.license-header.go.txt b/client/.license-header.go.txt
new file mode 100644
index 000000000..66e081996
--- /dev/null
+++ b/client/.license-header.go.txt
@@ -0,0 +1,3 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
diff --git a/client/CONTRIBUTING.md b/client/CONTRIBUTING.md
new file mode 100644
index 000000000..cbfa41b6f
--- /dev/null
+++ b/client/CONTRIBUTING.md
@@ -0,0 +1,6 @@
+# Contributing
+
+## Developer Certificate of Origin
+
+All commits require a [DCO](https://developercertificate.org/) sign-off.
+This is done by committing with the `--signoff` flag.
\ No newline at end of file
diff --git a/client/LICENSE b/client/LICENSE
new file mode 100644
index 000000000..a612ad981
--- /dev/null
+++ b/client/LICENSE
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/client/README.md b/client/README.md
new file mode 100644
index 000000000..cca71f6f8
--- /dev/null
+++ b/client/README.md
@@ -0,0 +1,41 @@
+
+
+
+
Omni API
+
Omni client code and gRPC API libraries.
+
+
+---
+
+[**Omni**](https://www.siderolabs.com/platform/saas-for-kubernetes/) SaaS deployment of Kubernetes.
+Omni is supported by the people at [Sidero Labs](https://www.SideroLabs.com/).
+This respository contains client code and gRPC API definitions used to access Omni SaaS.
+
+## Documentation
+
+For instructions on using Omni, see the [Documentation](https://omni.siderolabs.com/docs/).
+
+## Community
+
+- Slack: Join our [slack channel](https://slack.dev.talos-systems.io)
+- Support: Questions, bugs, feature requests [GitHub Discussions](https://github.com/talos-systems/talos/discussions)
+- Forum: [community](https://groups.google.com/a/SideroLabs.com/forum/#!forum/community)
+- Twitter: [@SideroLabs](https://twitter.com/SideroLabs)
+- Email: [info@SideroLabs.com](mailto:info@SideroLabs.com)
+
+## Contributing
+
+Contributions are welcomed and appreciated!
+See [Contributing](CONTRIBUTING.md) for our guidelines.
+
+## License
+
+
+
+
+
+Some software we distribute is under the General Public License family
+of licenses or other licenses that require we provide you with the
+source code.
+If you would like a copy of the source code for this
+software, please contact us via email: info at SideroLabs.com.
diff --git a/client/api/common/common.proto b/client/api/common/common.proto
new file mode 100644
index 000000000..97bb7fbb7
--- /dev/null
+++ b/client/api/common/common.proto
@@ -0,0 +1,116 @@
+syntax = "proto3";
+
+package common;
+
+option go_package = "github.com/siderolabs/talos/pkg/machinery/api/common";
+
+import "google/protobuf/any.proto";
+import "google/protobuf/descriptor.proto";
+import "google/rpc/status.proto";
+
+// An alternative to using options could be extracting versions from comments.
+// Unfortunately, they are not available: https://github.com/golang/protobuf/issues/1134
+// Also, while option numbers can be the same,
+// names should be different: https://github.com/protocolbuffers/protobuf/issues/4861
+
+extend google.protobuf.MessageOptions {
+ // Indicates the Talos version when this deprecated message will be removed from API.
+ string remove_deprecated_message = 93117;
+}
+
+extend google.protobuf.FieldOptions {
+ // Indicates the Talos version when this deprecated filed will be removed from API.
+ string remove_deprecated_field = 93117;
+}
+
+extend google.protobuf.EnumOptions {
+ // Indicates the Talos version when this deprecated enum will be removed from API.
+ string remove_deprecated_enum = 93117;
+}
+
+extend google.protobuf.EnumValueOptions {
+ // Indicates the Talos version when this deprecated enum value will be removed from API.
+ string remove_deprecated_enum_value = 93117;
+}
+
+extend google.protobuf.MethodOptions {
+ // Indicates the Talos version when this deprecated method will be removed from API.
+ string remove_deprecated_method = 93117;
+}
+
+extend google.protobuf.ServiceOptions {
+ // Indicates the Talos version when this deprecated service will be removed from API.
+ string remove_deprecated_service = 93117;
+}
+
+enum Code {
+ FATAL = 0;
+ LOCKED = 1;
+ CANCELED = 2;
+}
+
+message Error {
+ Code code = 1;
+ string message = 2;
+ repeated google.protobuf.Any details = 3;
+}
+
+// Common metadata message nested in all reply message types
+message Metadata {
+ // hostname of the server response comes from (injected by proxy)
+ string hostname = 1;
+ // error is set if request failed to the upstream (rest of response is
+ // undefined)
+ string error = 2;
+ // error as gRPC Status
+ google.rpc.Status status = 3;
+}
+
+message Data {
+ Metadata metadata = 1;
+ bytes bytes = 2;
+}
+
+message DataResponse {
+ repeated Data messages = 1;
+}
+
+message Empty {
+ Metadata metadata = 1;
+}
+
+message EmptyResponse {
+ repeated Empty messages = 1;
+}
+
+enum ContainerDriver {
+ CONTAINERD = 0;
+ CRI = 1;
+}
+
+message URL {
+ string full_path = 1;
+}
+
+message PEMEncodedCertificateAndKey {
+ bytes crt = 1;
+ bytes key = 2;
+}
+
+message PEMEncodedKey {
+ bytes key = 1;
+}
+
+message NetIP {
+ bytes ip = 1;
+}
+
+message NetIPPort {
+ bytes ip = 1;
+ int32 port = 2;
+}
+
+message NetIPPrefix {
+ bytes ip = 1;
+ int32 prefix_length = 2;
+}
diff --git a/client/api/common/omni.pb.go b/client/api/common/omni.pb.go
new file mode 100644
index 000000000..1c770c9c1
--- /dev/null
+++ b/client/api/common/omni.pb.go
@@ -0,0 +1,206 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.32.0
+// protoc v4.24.4
+// source: common/omni.proto
+
+package common
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// Data source.
+type Runtime int32
+
+const (
+ // Kubernetes control plane.
+ Runtime_Kubernetes Runtime = 0
+ // Talos apid.
+ Runtime_Talos Runtime = 1
+ // Omni internal runtime.
+ Runtime_Omni Runtime = 2
+)
+
+// Enum value maps for Runtime.
+var (
+ Runtime_name = map[int32]string{
+ 0: "Kubernetes",
+ 1: "Talos",
+ 2: "Omni",
+ }
+ Runtime_value = map[string]int32{
+ "Kubernetes": 0,
+ "Talos": 1,
+ "Omni": 2,
+ }
+)
+
+func (x Runtime) Enum() *Runtime {
+ p := new(Runtime)
+ *p = x
+ return p
+}
+
+func (x Runtime) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Runtime) Descriptor() protoreflect.EnumDescriptor {
+ return file_common_omni_proto_enumTypes[0].Descriptor()
+}
+
+func (Runtime) Type() protoreflect.EnumType {
+ return &file_common_omni_proto_enumTypes[0]
+}
+
+func (x Runtime) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Runtime.Descriptor instead.
+func (Runtime) EnumDescriptor() ([]byte, []int) {
+ return file_common_omni_proto_rawDescGZIP(), []int{0}
+}
+
+// Context represents Kubernetes or Talos config source.
+type Context struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Name fetches the config from the top level Kubeconfig or Talosconfig.
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+}
+
+func (x *Context) Reset() {
+ *x = Context{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_common_omni_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Context) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Context) ProtoMessage() {}
+
+func (x *Context) ProtoReflect() protoreflect.Message {
+ mi := &file_common_omni_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Context.ProtoReflect.Descriptor instead.
+func (*Context) Descriptor() ([]byte, []int) {
+ return file_common_omni_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Context) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+var File_common_omni_proto protoreflect.FileDescriptor
+
+var file_common_omni_proto_rawDesc = []byte{
+ 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x29, 0x0a, 0x07, 0x43,
+ 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03,
+ 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x2a, 0x2e, 0x0a, 0x07, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d,
+ 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x10,
+ 0x00, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x61, 0x6c, 0x6f, 0x73, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04,
+ 0x4f, 0x6d, 0x6e, 0x69, 0x10, 0x02, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
+ 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x61, 0x62, 0x73, 0x2f,
+ 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_common_omni_proto_rawDescOnce sync.Once
+ file_common_omni_proto_rawDescData = file_common_omni_proto_rawDesc
+)
+
+func file_common_omni_proto_rawDescGZIP() []byte {
+ file_common_omni_proto_rawDescOnce.Do(func() {
+ file_common_omni_proto_rawDescData = protoimpl.X.CompressGZIP(file_common_omni_proto_rawDescData)
+ })
+ return file_common_omni_proto_rawDescData
+}
+
+var file_common_omni_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_common_omni_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_common_omni_proto_goTypes = []interface{}{
+ (Runtime)(0), // 0: common.Runtime
+ (*Context)(nil), // 1: common.Context
+}
+var file_common_omni_proto_depIdxs = []int32{
+ 0, // [0:0] is the sub-list for method output_type
+ 0, // [0:0] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_common_omni_proto_init() }
+func file_common_omni_proto_init() {
+ if File_common_omni_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_common_omni_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Context); 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{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_common_omni_proto_rawDesc,
+ NumEnums: 1,
+ NumMessages: 1,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_common_omni_proto_goTypes,
+ DependencyIndexes: file_common_omni_proto_depIdxs,
+ EnumInfos: file_common_omni_proto_enumTypes,
+ MessageInfos: file_common_omni_proto_msgTypes,
+ }.Build()
+ File_common_omni_proto = out.File
+ file_common_omni_proto_rawDesc = nil
+ file_common_omni_proto_goTypes = nil
+ file_common_omni_proto_depIdxs = nil
+}
diff --git a/client/api/common/omni.proto b/client/api/common/omni.proto
new file mode 100644
index 000000000..f70a74e8d
--- /dev/null
+++ b/client/api/common/omni.proto
@@ -0,0 +1,22 @@
+syntax = "proto3";
+
+package common;
+
+option go_package = "github.com/siderolabs/omni/client/api/common";
+
+// Data source.
+enum Runtime {
+ // Kubernetes control plane.
+ Kubernetes = 0;
+ // Talos apid.
+ Talos = 1;
+ // Omni internal runtime.
+ Omni = 2;
+}
+// Context represents Kubernetes or Talos config source.
+message Context {
+ reserved 2, 3;
+
+ // Name fetches the config from the top level Kubeconfig or Talosconfig.
+ string name = 1;
+}
diff --git a/client/api/common/omni_vtproto.pb.go b/client/api/common/omni_vtproto.pb.go
new file mode 100644
index 000000000..7ee6648fb
--- /dev/null
+++ b/client/api/common/omni_vtproto.pb.go
@@ -0,0 +1,195 @@
+// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.
+// protoc-gen-go-vtproto version: v0.6.0
+// source: common/omni.proto
+
+package common
+
+import (
+ fmt "fmt"
+ io "io"
+
+ protohelpers "github.com/planetscale/vtprotobuf/protohelpers"
+ proto "google.golang.org/protobuf/proto"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+func (m *Context) CloneVT() *Context {
+ if m == nil {
+ return (*Context)(nil)
+ }
+ r := new(Context)
+ r.Name = m.Name
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *Context) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (this *Context) EqualVT(that *Context) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Name != that.Name {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *Context) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*Context)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (m *Context) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Context) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *Context) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Context) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *Context) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Context: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Context: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
diff --git a/client/api/google/rpc/status.proto b/client/api/google/rpc/status.proto
new file mode 100644
index 000000000..923e16938
--- /dev/null
+++ b/client/api/google/rpc/status.proto
@@ -0,0 +1,49 @@
+// Copyright 2022 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.rpc;
+
+import "google/protobuf/any.proto";
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/rpc/status;status";
+option java_multiple_files = true;
+option java_outer_classname = "StatusProto";
+option java_package = "com.google.rpc";
+option objc_class_prefix = "RPC";
+
+// The `Status` type defines a logical error model that is suitable for
+// different programming environments, including REST APIs and RPC APIs. It is
+// used by [gRPC](https://github.com/grpc). Each `Status` message contains
+// three pieces of data: error code, error message, and error details.
+//
+// You can find out more about this error model and how to work with it in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
+message Status {
+ // The status code, which should be an enum value of
+ // [google.rpc.Code][google.rpc.Code].
+ int32 code = 1;
+
+ // A developer-facing error message, which should be in English. Any
+ // user-facing error message should be localized and sent in the
+ // [google.rpc.Status.details][google.rpc.Status.details] field, or localized
+ // by the client.
+ string message = 2;
+
+ // A list of messages that carry the error details. There is a common set of
+ // message types for APIs to use.
+ repeated google.protobuf.Any details = 3;
+}
diff --git a/client/api/omni/management/management.pb.go b/client/api/omni/management/management.pb.go
new file mode 100644
index 000000000..ea708bfff
--- /dev/null
+++ b/client/api/omni/management/management.pb.go
@@ -0,0 +1,1825 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.32.0
+// protoc v4.24.4
+// source: omni/management/management.proto
+
+package management
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ common "github.com/siderolabs/talos/pkg/machinery/api/common"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ durationpb "google.golang.org/protobuf/types/known/durationpb"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type KubernetesSyncManifestResponse_ResponseType int32
+
+const (
+ KubernetesSyncManifestResponse_UNKNOWN KubernetesSyncManifestResponse_ResponseType = 0
+ KubernetesSyncManifestResponse_MANIFEST KubernetesSyncManifestResponse_ResponseType = 1
+ KubernetesSyncManifestResponse_ROLLOUT KubernetesSyncManifestResponse_ResponseType = 2
+)
+
+// Enum value maps for KubernetesSyncManifestResponse_ResponseType.
+var (
+ KubernetesSyncManifestResponse_ResponseType_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "MANIFEST",
+ 2: "ROLLOUT",
+ }
+ KubernetesSyncManifestResponse_ResponseType_value = map[string]int32{
+ "UNKNOWN": 0,
+ "MANIFEST": 1,
+ "ROLLOUT": 2,
+ }
+)
+
+func (x KubernetesSyncManifestResponse_ResponseType) Enum() *KubernetesSyncManifestResponse_ResponseType {
+ p := new(KubernetesSyncManifestResponse_ResponseType)
+ *p = x
+ return p
+}
+
+func (x KubernetesSyncManifestResponse_ResponseType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (KubernetesSyncManifestResponse_ResponseType) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_management_management_proto_enumTypes[0].Descriptor()
+}
+
+func (KubernetesSyncManifestResponse_ResponseType) Type() protoreflect.EnumType {
+ return &file_omni_management_management_proto_enumTypes[0]
+}
+
+func (x KubernetesSyncManifestResponse_ResponseType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use KubernetesSyncManifestResponse_ResponseType.Descriptor instead.
+func (KubernetesSyncManifestResponse_ResponseType) EnumDescriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{16, 0}
+}
+
+type KubeconfigResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Kubeconfig is the kubeconfig for the cluster.
+ Kubeconfig []byte `protobuf:"bytes,1,opt,name=kubeconfig,proto3" json:"kubeconfig,omitempty"`
+}
+
+func (x *KubeconfigResponse) Reset() {
+ *x = KubeconfigResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubeconfigResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubeconfigResponse) ProtoMessage() {}
+
+func (x *KubeconfigResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubeconfigResponse.ProtoReflect.Descriptor instead.
+func (*KubeconfigResponse) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *KubeconfigResponse) GetKubeconfig() []byte {
+ if x != nil {
+ return x.Kubeconfig
+ }
+ return nil
+}
+
+type TalosconfigResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // talosconfig is the talos client configuration to access the cluster via the proxy.
+ Talosconfig []byte `protobuf:"bytes,1,opt,name=talosconfig,proto3" json:"talosconfig,omitempty"`
+}
+
+func (x *TalosconfigResponse) Reset() {
+ *x = TalosconfigResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TalosconfigResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TalosconfigResponse) ProtoMessage() {}
+
+func (x *TalosconfigResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TalosconfigResponse.ProtoReflect.Descriptor instead.
+func (*TalosconfigResponse) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *TalosconfigResponse) GetTalosconfig() []byte {
+ if x != nil {
+ return x.Talosconfig
+ }
+ return nil
+}
+
+type OmniconfigResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // omniconfig is the omnictl client configuration to access the omni instance.
+ Omniconfig []byte `protobuf:"bytes,1,opt,name=omniconfig,proto3" json:"omniconfig,omitempty"`
+}
+
+func (x *OmniconfigResponse) Reset() {
+ *x = OmniconfigResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *OmniconfigResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OmniconfigResponse) ProtoMessage() {}
+
+func (x *OmniconfigResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use OmniconfigResponse.ProtoReflect.Descriptor instead.
+func (*OmniconfigResponse) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *OmniconfigResponse) GetOmniconfig() []byte {
+ if x != nil {
+ return x.Omniconfig
+ }
+ return nil
+}
+
+type MachineLogsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // MachineId is the ID of the machine.
+ MachineId string `protobuf:"bytes,1,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"`
+ // Follow is whether to follow the logs.
+ Follow bool `protobuf:"varint,2,opt,name=follow,proto3" json:"follow,omitempty"`
+ // TailLines is the number of lines to tail.
+ TailLines int32 `protobuf:"varint,3,opt,name=tail_lines,json=tailLines,proto3" json:"tail_lines,omitempty"`
+}
+
+func (x *MachineLogsRequest) Reset() {
+ *x = MachineLogsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineLogsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineLogsRequest) ProtoMessage() {}
+
+func (x *MachineLogsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineLogsRequest.ProtoReflect.Descriptor instead.
+func (*MachineLogsRequest) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *MachineLogsRequest) GetMachineId() string {
+ if x != nil {
+ return x.MachineId
+ }
+ return ""
+}
+
+func (x *MachineLogsRequest) GetFollow() bool {
+ if x != nil {
+ return x.Follow
+ }
+ return false
+}
+
+func (x *MachineLogsRequest) GetTailLines() int32 {
+ if x != nil {
+ return x.TailLines
+ }
+ return 0
+}
+
+type ValidateConfigRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Config represents raw configuration string to validate.
+ Config string `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
+}
+
+func (x *ValidateConfigRequest) Reset() {
+ *x = ValidateConfigRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ValidateConfigRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ValidateConfigRequest) ProtoMessage() {}
+
+func (x *ValidateConfigRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ValidateConfigRequest.ProtoReflect.Descriptor instead.
+func (*ValidateConfigRequest) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *ValidateConfigRequest) GetConfig() string {
+ if x != nil {
+ return x.Config
+ }
+ return ""
+}
+
+type TalosconfigRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Admin indicates whether to generate an admin talosconfig or a regular one.
+ Admin bool `protobuf:"varint,1,opt,name=admin,proto3" json:"admin,omitempty"`
+}
+
+func (x *TalosconfigRequest) Reset() {
+ *x = TalosconfigRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TalosconfigRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TalosconfigRequest) ProtoMessage() {}
+
+func (x *TalosconfigRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TalosconfigRequest.ProtoReflect.Descriptor instead.
+func (*TalosconfigRequest) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *TalosconfigRequest) GetAdmin() bool {
+ if x != nil {
+ return x.Admin
+ }
+ return false
+}
+
+type CreateServiceAccountRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ArmoredPgpPublicKey string `protobuf:"bytes,1,opt,name=armored_pgp_public_key,json=armoredPgpPublicKey,proto3" json:"armored_pgp_public_key,omitempty"`
+ // UseUserRole indicates whether to use the role of the creating user.
+ // When true, role will be ignored and the service account will be created with the role of the creating user.
+ UseUserRole bool `protobuf:"varint,3,opt,name=use_user_role,json=useUserRole,proto3" json:"use_user_role,omitempty"`
+ Role string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
+}
+
+func (x *CreateServiceAccountRequest) Reset() {
+ *x = CreateServiceAccountRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateServiceAccountRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateServiceAccountRequest) ProtoMessage() {}
+
+func (x *CreateServiceAccountRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateServiceAccountRequest.ProtoReflect.Descriptor instead.
+func (*CreateServiceAccountRequest) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *CreateServiceAccountRequest) GetArmoredPgpPublicKey() string {
+ if x != nil {
+ return x.ArmoredPgpPublicKey
+ }
+ return ""
+}
+
+func (x *CreateServiceAccountRequest) GetUseUserRole() bool {
+ if x != nil {
+ return x.UseUserRole
+ }
+ return false
+}
+
+func (x *CreateServiceAccountRequest) GetRole() string {
+ if x != nil {
+ return x.Role
+ }
+ return ""
+}
+
+type CreateServiceAccountResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ PublicKeyId string `protobuf:"bytes,1,opt,name=public_key_id,json=publicKeyId,proto3" json:"public_key_id,omitempty"`
+}
+
+func (x *CreateServiceAccountResponse) Reset() {
+ *x = CreateServiceAccountResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateServiceAccountResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateServiceAccountResponse) ProtoMessage() {}
+
+func (x *CreateServiceAccountResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateServiceAccountResponse.ProtoReflect.Descriptor instead.
+func (*CreateServiceAccountResponse) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *CreateServiceAccountResponse) GetPublicKeyId() string {
+ if x != nil {
+ return x.PublicKeyId
+ }
+ return ""
+}
+
+type RenewServiceAccountRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ ArmoredPgpPublicKey string `protobuf:"bytes,2,opt,name=armored_pgp_public_key,json=armoredPgpPublicKey,proto3" json:"armored_pgp_public_key,omitempty"`
+}
+
+func (x *RenewServiceAccountRequest) Reset() {
+ *x = RenewServiceAccountRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RenewServiceAccountRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RenewServiceAccountRequest) ProtoMessage() {}
+
+func (x *RenewServiceAccountRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RenewServiceAccountRequest.ProtoReflect.Descriptor instead.
+func (*RenewServiceAccountRequest) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *RenewServiceAccountRequest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *RenewServiceAccountRequest) GetArmoredPgpPublicKey() string {
+ if x != nil {
+ return x.ArmoredPgpPublicKey
+ }
+ return ""
+}
+
+type RenewServiceAccountResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ PublicKeyId string `protobuf:"bytes,1,opt,name=public_key_id,json=publicKeyId,proto3" json:"public_key_id,omitempty"`
+}
+
+func (x *RenewServiceAccountResponse) Reset() {
+ *x = RenewServiceAccountResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RenewServiceAccountResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RenewServiceAccountResponse) ProtoMessage() {}
+
+func (x *RenewServiceAccountResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RenewServiceAccountResponse.ProtoReflect.Descriptor instead.
+func (*RenewServiceAccountResponse) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *RenewServiceAccountResponse) GetPublicKeyId() string {
+ if x != nil {
+ return x.PublicKeyId
+ }
+ return ""
+}
+
+type DestroyServiceAccountRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+}
+
+func (x *DestroyServiceAccountRequest) Reset() {
+ *x = DestroyServiceAccountRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DestroyServiceAccountRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DestroyServiceAccountRequest) ProtoMessage() {}
+
+func (x *DestroyServiceAccountRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[10]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DestroyServiceAccountRequest.ProtoReflect.Descriptor instead.
+func (*DestroyServiceAccountRequest) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *DestroyServiceAccountRequest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+type ListServiceAccountsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ServiceAccounts []*ListServiceAccountsResponse_ServiceAccount `protobuf:"bytes,1,rep,name=service_accounts,json=serviceAccounts,proto3" json:"service_accounts,omitempty"`
+}
+
+func (x *ListServiceAccountsResponse) Reset() {
+ *x = ListServiceAccountsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListServiceAccountsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListServiceAccountsResponse) ProtoMessage() {}
+
+func (x *ListServiceAccountsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[11]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListServiceAccountsResponse.ProtoReflect.Descriptor instead.
+func (*ListServiceAccountsResponse) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *ListServiceAccountsResponse) GetServiceAccounts() []*ListServiceAccountsResponse_ServiceAccount {
+ if x != nil {
+ return x.ServiceAccounts
+ }
+ return nil
+}
+
+type KubeconfigRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ServiceAccount bool `protobuf:"varint,1,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"`
+ ServiceAccountTtl *durationpb.Duration `protobuf:"bytes,2,opt,name=service_account_ttl,json=serviceAccountTtl,proto3" json:"service_account_ttl,omitempty"`
+ ServiceAccountUser string `protobuf:"bytes,3,opt,name=service_account_user,json=serviceAccountUser,proto3" json:"service_account_user,omitempty"`
+ ServiceAccountGroups []string `protobuf:"bytes,4,rep,name=service_account_groups,json=serviceAccountGroups,proto3" json:"service_account_groups,omitempty"`
+}
+
+func (x *KubeconfigRequest) Reset() {
+ *x = KubeconfigRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubeconfigRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubeconfigRequest) ProtoMessage() {}
+
+func (x *KubeconfigRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubeconfigRequest.ProtoReflect.Descriptor instead.
+func (*KubeconfigRequest) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *KubeconfigRequest) GetServiceAccount() bool {
+ if x != nil {
+ return x.ServiceAccount
+ }
+ return false
+}
+
+func (x *KubeconfigRequest) GetServiceAccountTtl() *durationpb.Duration {
+ if x != nil {
+ return x.ServiceAccountTtl
+ }
+ return nil
+}
+
+func (x *KubeconfigRequest) GetServiceAccountUser() string {
+ if x != nil {
+ return x.ServiceAccountUser
+ }
+ return ""
+}
+
+func (x *KubeconfigRequest) GetServiceAccountGroups() []string {
+ if x != nil {
+ return x.ServiceAccountGroups
+ }
+ return nil
+}
+
+type KubernetesUpgradePreChecksRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NewVersion string `protobuf:"bytes,1,opt,name=new_version,json=newVersion,proto3" json:"new_version,omitempty"`
+}
+
+func (x *KubernetesUpgradePreChecksRequest) Reset() {
+ *x = KubernetesUpgradePreChecksRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubernetesUpgradePreChecksRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubernetesUpgradePreChecksRequest) ProtoMessage() {}
+
+func (x *KubernetesUpgradePreChecksRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[13]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubernetesUpgradePreChecksRequest.ProtoReflect.Descriptor instead.
+func (*KubernetesUpgradePreChecksRequest) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *KubernetesUpgradePreChecksRequest) GetNewVersion() string {
+ if x != nil {
+ return x.NewVersion
+ }
+ return ""
+}
+
+type KubernetesUpgradePreChecksResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"`
+ Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
+}
+
+func (x *KubernetesUpgradePreChecksResponse) Reset() {
+ *x = KubernetesUpgradePreChecksResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubernetesUpgradePreChecksResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubernetesUpgradePreChecksResponse) ProtoMessage() {}
+
+func (x *KubernetesUpgradePreChecksResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[14]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubernetesUpgradePreChecksResponse.ProtoReflect.Descriptor instead.
+func (*KubernetesUpgradePreChecksResponse) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *KubernetesUpgradePreChecksResponse) GetOk() bool {
+ if x != nil {
+ return x.Ok
+ }
+ return false
+}
+
+func (x *KubernetesUpgradePreChecksResponse) GetReason() string {
+ if x != nil {
+ return x.Reason
+ }
+ return ""
+}
+
+type KubernetesSyncManifestRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ DryRun bool `protobuf:"varint,1,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"`
+}
+
+func (x *KubernetesSyncManifestRequest) Reset() {
+ *x = KubernetesSyncManifestRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[15]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubernetesSyncManifestRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubernetesSyncManifestRequest) ProtoMessage() {}
+
+func (x *KubernetesSyncManifestRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[15]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubernetesSyncManifestRequest.ProtoReflect.Descriptor instead.
+func (*KubernetesSyncManifestRequest) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *KubernetesSyncManifestRequest) GetDryRun() bool {
+ if x != nil {
+ return x.DryRun
+ }
+ return false
+}
+
+type KubernetesSyncManifestResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ResponseType KubernetesSyncManifestResponse_ResponseType `protobuf:"varint,1,opt,name=response_type,json=responseType,proto3,enum=management.KubernetesSyncManifestResponse_ResponseType" json:"response_type,omitempty"`
+ Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
+ Object []byte `protobuf:"bytes,3,opt,name=object,proto3" json:"object,omitempty"`
+ Diff string `protobuf:"bytes,4,opt,name=diff,proto3" json:"diff,omitempty"`
+ Skipped bool `protobuf:"varint,5,opt,name=skipped,proto3" json:"skipped,omitempty"`
+}
+
+func (x *KubernetesSyncManifestResponse) Reset() {
+ *x = KubernetesSyncManifestResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[16]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubernetesSyncManifestResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubernetesSyncManifestResponse) ProtoMessage() {}
+
+func (x *KubernetesSyncManifestResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[16]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubernetesSyncManifestResponse.ProtoReflect.Descriptor instead.
+func (*KubernetesSyncManifestResponse) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *KubernetesSyncManifestResponse) GetResponseType() KubernetesSyncManifestResponse_ResponseType {
+ if x != nil {
+ return x.ResponseType
+ }
+ return KubernetesSyncManifestResponse_UNKNOWN
+}
+
+func (x *KubernetesSyncManifestResponse) GetPath() string {
+ if x != nil {
+ return x.Path
+ }
+ return ""
+}
+
+func (x *KubernetesSyncManifestResponse) GetObject() []byte {
+ if x != nil {
+ return x.Object
+ }
+ return nil
+}
+
+func (x *KubernetesSyncManifestResponse) GetDiff() string {
+ if x != nil {
+ return x.Diff
+ }
+ return ""
+}
+
+func (x *KubernetesSyncManifestResponse) GetSkipped() bool {
+ if x != nil {
+ return x.Skipped
+ }
+ return false
+}
+
+type CreateSchematicRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Extensions []string `protobuf:"bytes,1,rep,name=extensions,proto3" json:"extensions,omitempty"`
+ ExtraKernelArgs []string `protobuf:"bytes,2,rep,name=extra_kernel_args,json=extraKernelArgs,proto3" json:"extra_kernel_args,omitempty"`
+ MetaValues map[uint32]string `protobuf:"bytes,3,rep,name=meta_values,json=metaValues,proto3" json:"meta_values,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *CreateSchematicRequest) Reset() {
+ *x = CreateSchematicRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[17]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateSchematicRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateSchematicRequest) ProtoMessage() {}
+
+func (x *CreateSchematicRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[17]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateSchematicRequest.ProtoReflect.Descriptor instead.
+func (*CreateSchematicRequest) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *CreateSchematicRequest) GetExtensions() []string {
+ if x != nil {
+ return x.Extensions
+ }
+ return nil
+}
+
+func (x *CreateSchematicRequest) GetExtraKernelArgs() []string {
+ if x != nil {
+ return x.ExtraKernelArgs
+ }
+ return nil
+}
+
+func (x *CreateSchematicRequest) GetMetaValues() map[uint32]string {
+ if x != nil {
+ return x.MetaValues
+ }
+ return nil
+}
+
+type CreateSchematicResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ SchematicId string `protobuf:"bytes,1,opt,name=schematic_id,json=schematicId,proto3" json:"schematic_id,omitempty"`
+ PxeUrl string `protobuf:"bytes,2,opt,name=pxe_url,json=pxeUrl,proto3" json:"pxe_url,omitempty"`
+}
+
+func (x *CreateSchematicResponse) Reset() {
+ *x = CreateSchematicResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[18]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateSchematicResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateSchematicResponse) ProtoMessage() {}
+
+func (x *CreateSchematicResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[18]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateSchematicResponse.ProtoReflect.Descriptor instead.
+func (*CreateSchematicResponse) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *CreateSchematicResponse) GetSchematicId() string {
+ if x != nil {
+ return x.SchematicId
+ }
+ return ""
+}
+
+func (x *CreateSchematicResponse) GetPxeUrl() string {
+ if x != nil {
+ return x.PxeUrl
+ }
+ return ""
+}
+
+type ListServiceAccountsResponse_ServiceAccount struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ PgpPublicKeys []*ListServiceAccountsResponse_ServiceAccount_PgpPublicKey `protobuf:"bytes,2,rep,name=pgp_public_keys,json=pgpPublicKeys,proto3" json:"pgp_public_keys,omitempty"`
+ Role string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
+}
+
+func (x *ListServiceAccountsResponse_ServiceAccount) Reset() {
+ *x = ListServiceAccountsResponse_ServiceAccount{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[19]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListServiceAccountsResponse_ServiceAccount) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListServiceAccountsResponse_ServiceAccount) ProtoMessage() {}
+
+func (x *ListServiceAccountsResponse_ServiceAccount) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[19]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListServiceAccountsResponse_ServiceAccount.ProtoReflect.Descriptor instead.
+func (*ListServiceAccountsResponse_ServiceAccount) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{11, 0}
+}
+
+func (x *ListServiceAccountsResponse_ServiceAccount) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *ListServiceAccountsResponse_ServiceAccount) GetPgpPublicKeys() []*ListServiceAccountsResponse_ServiceAccount_PgpPublicKey {
+ if x != nil {
+ return x.PgpPublicKeys
+ }
+ return nil
+}
+
+func (x *ListServiceAccountsResponse_ServiceAccount) GetRole() string {
+ if x != nil {
+ return x.Role
+ }
+ return ""
+}
+
+type ListServiceAccountsResponse_ServiceAccount_PgpPublicKey struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Armored string `protobuf:"bytes,2,opt,name=armored,proto3" json:"armored,omitempty"`
+ Expiration *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=expiration,proto3" json:"expiration,omitempty"`
+}
+
+func (x *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) Reset() {
+ *x = ListServiceAccountsResponse_ServiceAccount_PgpPublicKey{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_management_management_proto_msgTypes[20]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) ProtoMessage() {}
+
+func (x *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_management_management_proto_msgTypes[20]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListServiceAccountsResponse_ServiceAccount_PgpPublicKey.ProtoReflect.Descriptor instead.
+func (*ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) Descriptor() ([]byte, []int) {
+ return file_omni_management_management_proto_rawDescGZIP(), []int{11, 0, 0}
+}
+
+func (x *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) GetArmored() string {
+ if x != nil {
+ return x.Armored
+ }
+ return ""
+}
+
+func (x *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) GetExpiration() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Expiration
+ }
+ return nil
+}
+
+var File_omni_management_management_proto protoreflect.FileDescriptor
+
+var file_omni_management_management_proto_rawDesc = []byte{
+ 0x0a, 0x20, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x12, 0x0a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x1b,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
+ 0x65, 0x6d, 0x70, 0x74, 0x79, 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, 0x1a, 0x1e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x22, 0x34, 0x0a, 0x12, 0x4b, 0x75, 0x62, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6b, 0x75, 0x62, 0x65, 0x63,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x6b, 0x75, 0x62,
+ 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x37, 0x0a, 0x13, 0x54, 0x61, 0x6c, 0x6f, 0x73,
+ 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20,
+ 0x0a, 0x0b, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x22, 0x34, 0x0a, 0x12, 0x4f, 0x6d, 0x6e, 0x69, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x6d, 0x6e, 0x69, 0x63, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x6f, 0x6d, 0x6e, 0x69,
+ 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x6a, 0x0a, 0x12, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e,
+ 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66,
+ 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x6f, 0x6c,
+ 0x6c, 0x6f, 0x77, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x6c, 0x69, 0x6e, 0x65,
+ 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x6e,
+ 0x65, 0x73, 0x22, 0x2f, 0x0a, 0x15, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x22, 0x2a, 0x0a, 0x12, 0x54, 0x61, 0x6c, 0x6f, 0x73, 0x63, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d,
+ 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x22,
+ 0x90, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
+ 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x33, 0x0a, 0x16, 0x61, 0x72, 0x6d, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x67, 0x70, 0x5f, 0x70,
+ 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x13, 0x61, 0x72, 0x6d, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x67, 0x70, 0x50, 0x75, 0x62, 0x6c, 0x69,
+ 0x63, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72,
+ 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x73, 0x65,
+ 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x4a, 0x04, 0x08, 0x02,
+ 0x10, 0x03, 0x22, 0x42, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76,
+ 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69,
+ 0x63, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x1a, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x53,
+ 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x61, 0x72, 0x6d, 0x6f,
+ 0x72, 0x65, 0x64, 0x5f, 0x70, 0x67, 0x70, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b,
+ 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x72, 0x6d, 0x6f, 0x72, 0x65,
+ 0x64, 0x50, 0x67, 0x70, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x41, 0x0a,
+ 0x1b, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0d,
+ 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x49, 0x64,
+ 0x22, 0x32, 0x0a, 0x1c, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69,
+ 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa4, 0x03, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72,
+ 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
+ 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36,
+ 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74,
+ 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41,
+ 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41,
+ 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0xa1, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76,
+ 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x6b,
+ 0x0a, 0x0f, 0x70, 0x67, 0x70, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79,
+ 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+ 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e,
+ 0x50, 0x67, 0x70, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x70, 0x67,
+ 0x70, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72,
+ 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x1a,
+ 0x74, 0x0a, 0x0c, 0x50, 0x67, 0x70, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
+ 0x18, 0x0a, 0x07, 0x61, 0x72, 0x6d, 0x6f, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x07, 0x61, 0x72, 0x6d, 0x6f, 0x72, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70,
+ 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 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, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xef, 0x01, 0x0a, 0x11,
+ 0x4b, 0x75, 0x62, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76,
+ 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x13, 0x73, 0x65,
+ 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x74,
+ 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x54, 0x74, 0x6c, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+ 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x69,
+ 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+ 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x44, 0x0a,
+ 0x21, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61,
+ 0x64, 0x65, 0x50, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x56, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x22, 0x4c, 0x0a, 0x22, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65,
+ 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f,
+ 0x6e, 0x22, 0x38, 0x0a, 0x1d, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53,
+ 0x79, 0x6e, 0x63, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x22, 0x90, 0x02, 0x0a, 0x1e,
+ 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x61,
+ 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c,
+ 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,
+ 0x6e, 0x74, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x79, 0x6e,
+ 0x63, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c,
+ 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04,
+ 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68,
+ 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c,
+ 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x69, 0x66, 0x66,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x69, 0x66, 0x66, 0x12, 0x18, 0x0a, 0x07,
+ 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73,
+ 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x22, 0x36, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
+ 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54, 0x10,
+ 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x4f, 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x10, 0x02, 0x22, 0xf8,
+ 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x74,
+ 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74,
+ 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65,
+ 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x65, 0x78, 0x74,
+ 0x72, 0x61, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x4b, 0x65, 0x72, 0x6e, 0x65,
+ 0x6c, 0x41, 0x72, 0x67, 0x73, 0x12, 0x53, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6d, 0x61, 0x6e,
+ 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63,
+ 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d,
+ 0x65, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a,
+ 0x6d, 0x65, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x4d, 0x65,
+ 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+ 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+ 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x55, 0x0a, 0x17, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69,
+ 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x63, 0x68, 0x65,
+ 0x6d, 0x61, 0x74, 0x69, 0x63, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x78, 0x65, 0x5f, 0x75,
+ 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x78, 0x65, 0x55, 0x72, 0x6c,
+ 0x32, 0xd5, 0x08, 0x0a, 0x11, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53,
+ 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4b, 0x0a, 0x0a, 0x4b, 0x75, 0x62, 0x65, 0x63, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+ 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6f, 0x73, 0x63, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x12, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
+ 0x54, 0x61, 0x6c, 0x6f, 0x73, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
+ 0x54, 0x61, 0x6c, 0x6f, 0x73, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x4f, 0x6d, 0x6e, 0x69, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x61,
+ 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4f, 0x6d, 0x6e, 0x69, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x4d, 0x61, 0x63,
+ 0x68, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67,
+ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x30, 0x01, 0x12, 0x4b, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69,
+ 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x2e, 0x6d, 0x61, 0x6e,
+ 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x69, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53,
+ 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x2e,
+ 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,
+ 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
+ 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x66, 0x0a, 0x13, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+ 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
+ 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x27, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6e,
+ 0x65, 0x77, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74,
+ 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12,
+ 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x27, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+ 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x59, 0x0a, 0x15, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69,
+ 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x2e, 0x6d, 0x61, 0x6e, 0x61,
+ 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x53, 0x65,
+ 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x7b, 0x0a, 0x1a, 0x4b,
+ 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65,
+ 0x50, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x2d, 0x2e, 0x6d, 0x61, 0x6e, 0x61,
+ 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65,
+ 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67,
+ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73,
+ 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x17, 0x4b, 0x75, 0x62, 0x65,
+ 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
+ 0x73, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+ 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x4d,
+ 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a,
+ 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4b, 0x75, 0x62, 0x65,
+ 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
+ 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x5a, 0x0a, 0x0f,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x12,
+ 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+ 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x37, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68,
+ 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x61, 0x62,
+ 0x73, 0x2f, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x70,
+ 0x69, 0x2f, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_omni_management_management_proto_rawDescOnce sync.Once
+ file_omni_management_management_proto_rawDescData = file_omni_management_management_proto_rawDesc
+)
+
+func file_omni_management_management_proto_rawDescGZIP() []byte {
+ file_omni_management_management_proto_rawDescOnce.Do(func() {
+ file_omni_management_management_proto_rawDescData = protoimpl.X.CompressGZIP(file_omni_management_management_proto_rawDescData)
+ })
+ return file_omni_management_management_proto_rawDescData
+}
+
+var file_omni_management_management_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_omni_management_management_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
+var file_omni_management_management_proto_goTypes = []interface{}{
+ (KubernetesSyncManifestResponse_ResponseType)(0), // 0: management.KubernetesSyncManifestResponse.ResponseType
+ (*KubeconfigResponse)(nil), // 1: management.KubeconfigResponse
+ (*TalosconfigResponse)(nil), // 2: management.TalosconfigResponse
+ (*OmniconfigResponse)(nil), // 3: management.OmniconfigResponse
+ (*MachineLogsRequest)(nil), // 4: management.MachineLogsRequest
+ (*ValidateConfigRequest)(nil), // 5: management.ValidateConfigRequest
+ (*TalosconfigRequest)(nil), // 6: management.TalosconfigRequest
+ (*CreateServiceAccountRequest)(nil), // 7: management.CreateServiceAccountRequest
+ (*CreateServiceAccountResponse)(nil), // 8: management.CreateServiceAccountResponse
+ (*RenewServiceAccountRequest)(nil), // 9: management.RenewServiceAccountRequest
+ (*RenewServiceAccountResponse)(nil), // 10: management.RenewServiceAccountResponse
+ (*DestroyServiceAccountRequest)(nil), // 11: management.DestroyServiceAccountRequest
+ (*ListServiceAccountsResponse)(nil), // 12: management.ListServiceAccountsResponse
+ (*KubeconfigRequest)(nil), // 13: management.KubeconfigRequest
+ (*KubernetesUpgradePreChecksRequest)(nil), // 14: management.KubernetesUpgradePreChecksRequest
+ (*KubernetesUpgradePreChecksResponse)(nil), // 15: management.KubernetesUpgradePreChecksResponse
+ (*KubernetesSyncManifestRequest)(nil), // 16: management.KubernetesSyncManifestRequest
+ (*KubernetesSyncManifestResponse)(nil), // 17: management.KubernetesSyncManifestResponse
+ (*CreateSchematicRequest)(nil), // 18: management.CreateSchematicRequest
+ (*CreateSchematicResponse)(nil), // 19: management.CreateSchematicResponse
+ (*ListServiceAccountsResponse_ServiceAccount)(nil), // 20: management.ListServiceAccountsResponse.ServiceAccount
+ (*ListServiceAccountsResponse_ServiceAccount_PgpPublicKey)(nil), // 21: management.ListServiceAccountsResponse.ServiceAccount.PgpPublicKey
+ nil, // 22: management.CreateSchematicRequest.MetaValuesEntry
+ (*durationpb.Duration)(nil), // 23: google.protobuf.Duration
+ (*timestamppb.Timestamp)(nil), // 24: google.protobuf.Timestamp
+ (*emptypb.Empty)(nil), // 25: google.protobuf.Empty
+ (*common.Data)(nil), // 26: common.Data
+}
+var file_omni_management_management_proto_depIdxs = []int32{
+ 20, // 0: management.ListServiceAccountsResponse.service_accounts:type_name -> management.ListServiceAccountsResponse.ServiceAccount
+ 23, // 1: management.KubeconfigRequest.service_account_ttl:type_name -> google.protobuf.Duration
+ 0, // 2: management.KubernetesSyncManifestResponse.response_type:type_name -> management.KubernetesSyncManifestResponse.ResponseType
+ 22, // 3: management.CreateSchematicRequest.meta_values:type_name -> management.CreateSchematicRequest.MetaValuesEntry
+ 21, // 4: management.ListServiceAccountsResponse.ServiceAccount.pgp_public_keys:type_name -> management.ListServiceAccountsResponse.ServiceAccount.PgpPublicKey
+ 24, // 5: management.ListServiceAccountsResponse.ServiceAccount.PgpPublicKey.expiration:type_name -> google.protobuf.Timestamp
+ 13, // 6: management.ManagementService.Kubeconfig:input_type -> management.KubeconfigRequest
+ 6, // 7: management.ManagementService.Talosconfig:input_type -> management.TalosconfigRequest
+ 25, // 8: management.ManagementService.Omniconfig:input_type -> google.protobuf.Empty
+ 4, // 9: management.ManagementService.MachineLogs:input_type -> management.MachineLogsRequest
+ 5, // 10: management.ManagementService.ValidateConfig:input_type -> management.ValidateConfigRequest
+ 7, // 11: management.ManagementService.CreateServiceAccount:input_type -> management.CreateServiceAccountRequest
+ 9, // 12: management.ManagementService.RenewServiceAccount:input_type -> management.RenewServiceAccountRequest
+ 25, // 13: management.ManagementService.ListServiceAccounts:input_type -> google.protobuf.Empty
+ 11, // 14: management.ManagementService.DestroyServiceAccount:input_type -> management.DestroyServiceAccountRequest
+ 14, // 15: management.ManagementService.KubernetesUpgradePreChecks:input_type -> management.KubernetesUpgradePreChecksRequest
+ 16, // 16: management.ManagementService.KubernetesSyncManifests:input_type -> management.KubernetesSyncManifestRequest
+ 18, // 17: management.ManagementService.CreateSchematic:input_type -> management.CreateSchematicRequest
+ 1, // 18: management.ManagementService.Kubeconfig:output_type -> management.KubeconfigResponse
+ 2, // 19: management.ManagementService.Talosconfig:output_type -> management.TalosconfigResponse
+ 3, // 20: management.ManagementService.Omniconfig:output_type -> management.OmniconfigResponse
+ 26, // 21: management.ManagementService.MachineLogs:output_type -> common.Data
+ 25, // 22: management.ManagementService.ValidateConfig:output_type -> google.protobuf.Empty
+ 8, // 23: management.ManagementService.CreateServiceAccount:output_type -> management.CreateServiceAccountResponse
+ 10, // 24: management.ManagementService.RenewServiceAccount:output_type -> management.RenewServiceAccountResponse
+ 12, // 25: management.ManagementService.ListServiceAccounts:output_type -> management.ListServiceAccountsResponse
+ 25, // 26: management.ManagementService.DestroyServiceAccount:output_type -> google.protobuf.Empty
+ 15, // 27: management.ManagementService.KubernetesUpgradePreChecks:output_type -> management.KubernetesUpgradePreChecksResponse
+ 17, // 28: management.ManagementService.KubernetesSyncManifests:output_type -> management.KubernetesSyncManifestResponse
+ 19, // 29: management.ManagementService.CreateSchematic:output_type -> management.CreateSchematicResponse
+ 18, // [18:30] is the sub-list for method output_type
+ 6, // [6:18] is the sub-list for method input_type
+ 6, // [6:6] is the sub-list for extension type_name
+ 6, // [6:6] is the sub-list for extension extendee
+ 0, // [0:6] is the sub-list for field type_name
+}
+
+func init() { file_omni_management_management_proto_init() }
+func file_omni_management_management_proto_init() {
+ if File_omni_management_management_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_omni_management_management_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubeconfigResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TalosconfigResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*OmniconfigResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineLogsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ValidateConfigRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TalosconfigRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateServiceAccountRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateServiceAccountResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RenewServiceAccountRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RenewServiceAccountResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DestroyServiceAccountRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListServiceAccountsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubeconfigRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubernetesUpgradePreChecksRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubernetesUpgradePreChecksResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubernetesSyncManifestRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubernetesSyncManifestResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateSchematicRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateSchematicResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListServiceAccountsResponse_ServiceAccount); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_management_management_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListServiceAccountsResponse_ServiceAccount_PgpPublicKey); 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{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_omni_management_management_proto_rawDesc,
+ NumEnums: 1,
+ NumMessages: 22,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_omni_management_management_proto_goTypes,
+ DependencyIndexes: file_omni_management_management_proto_depIdxs,
+ EnumInfos: file_omni_management_management_proto_enumTypes,
+ MessageInfos: file_omni_management_management_proto_msgTypes,
+ }.Build()
+ File_omni_management_management_proto = out.File
+ file_omni_management_management_proto_rawDesc = nil
+ file_omni_management_management_proto_goTypes = nil
+ file_omni_management_management_proto_depIdxs = nil
+}
diff --git a/client/api/omni/management/management.pb.gw.go b/client/api/omni/management/management.pb.gw.go
new file mode 100644
index 000000000..fc24e3616
--- /dev/null
+++ b/client/api/omni/management/management.pb.gw.go
@@ -0,0 +1,965 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: omni/management/management.proto
+
+/*
+Package management is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package management
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+ "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_ManagementService_Kubeconfig_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq KubeconfigRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Kubeconfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ManagementService_Kubeconfig_0(ctx context.Context, marshaler runtime.Marshaler, server ManagementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq KubeconfigRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Kubeconfig(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ManagementService_Talosconfig_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq TalosconfigRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Talosconfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ManagementService_Talosconfig_0(ctx context.Context, marshaler runtime.Marshaler, server ManagementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq TalosconfigRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Talosconfig(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ManagementService_Omniconfig_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq emptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Omniconfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ManagementService_Omniconfig_0(ctx context.Context, marshaler runtime.Marshaler, server ManagementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq emptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Omniconfig(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ManagementService_MachineLogs_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (ManagementService_MachineLogsClient, runtime.ServerMetadata, error) {
+ var protoReq MachineLogsRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ stream, err := client.MachineLogs(ctx, &protoReq)
+ if err != nil {
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+ return stream, metadata, nil
+
+}
+
+func request_ManagementService_ValidateConfig_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ValidateConfigRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.ValidateConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ManagementService_ValidateConfig_0(ctx context.Context, marshaler runtime.Marshaler, server ManagementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ValidateConfigRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.ValidateConfig(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ManagementService_CreateServiceAccount_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateServiceAccountRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.CreateServiceAccount(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ManagementService_CreateServiceAccount_0(ctx context.Context, marshaler runtime.Marshaler, server ManagementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateServiceAccountRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.CreateServiceAccount(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ManagementService_RenewServiceAccount_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RenewServiceAccountRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.RenewServiceAccount(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ManagementService_RenewServiceAccount_0(ctx context.Context, marshaler runtime.Marshaler, server ManagementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RenewServiceAccountRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.RenewServiceAccount(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ManagementService_ListServiceAccounts_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq emptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.ListServiceAccounts(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ManagementService_ListServiceAccounts_0(ctx context.Context, marshaler runtime.Marshaler, server ManagementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq emptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.ListServiceAccounts(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ManagementService_DestroyServiceAccount_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DestroyServiceAccountRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.DestroyServiceAccount(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ManagementService_DestroyServiceAccount_0(ctx context.Context, marshaler runtime.Marshaler, server ManagementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DestroyServiceAccountRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.DestroyServiceAccount(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ManagementService_KubernetesUpgradePreChecks_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq KubernetesUpgradePreChecksRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.KubernetesUpgradePreChecks(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ManagementService_KubernetesUpgradePreChecks_0(ctx context.Context, marshaler runtime.Marshaler, server ManagementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq KubernetesUpgradePreChecksRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.KubernetesUpgradePreChecks(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ManagementService_KubernetesSyncManifests_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (ManagementService_KubernetesSyncManifestsClient, runtime.ServerMetadata, error) {
+ var protoReq KubernetesSyncManifestRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ stream, err := client.KubernetesSyncManifests(ctx, &protoReq)
+ if err != nil {
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+ return stream, metadata, nil
+
+}
+
+func request_ManagementService_CreateSchematic_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateSchematicRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.CreateSchematic(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ManagementService_CreateSchematic_0(ctx context.Context, marshaler runtime.Marshaler, server ManagementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateSchematicRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.CreateSchematic(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterManagementServiceHandlerServer registers the http handlers for service ManagementService to "mux".
+// UnaryRPC :call ManagementServiceServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterManagementServiceHandlerFromEndpoint instead.
+func RegisterManagementServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ManagementServiceServer) error {
+
+ mux.Handle("POST", pattern_ManagementService_Kubeconfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/management.ManagementService/Kubeconfig", runtime.WithHTTPPathPattern("/management.ManagementService/Kubeconfig"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ManagementService_Kubeconfig_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_Kubeconfig_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_Talosconfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/management.ManagementService/Talosconfig", runtime.WithHTTPPathPattern("/management.ManagementService/Talosconfig"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ManagementService_Talosconfig_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_Talosconfig_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_Omniconfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/management.ManagementService/Omniconfig", runtime.WithHTTPPathPattern("/management.ManagementService/Omniconfig"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ManagementService_Omniconfig_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_Omniconfig_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_MachineLogs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport")
+ _, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ })
+
+ mux.Handle("POST", pattern_ManagementService_ValidateConfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/management.ManagementService/ValidateConfig", runtime.WithHTTPPathPattern("/management.ManagementService/ValidateConfig"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ManagementService_ValidateConfig_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_ValidateConfig_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_CreateServiceAccount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/management.ManagementService/CreateServiceAccount", runtime.WithHTTPPathPattern("/management.ManagementService/CreateServiceAccount"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ManagementService_CreateServiceAccount_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_CreateServiceAccount_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_RenewServiceAccount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/management.ManagementService/RenewServiceAccount", runtime.WithHTTPPathPattern("/management.ManagementService/RenewServiceAccount"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ManagementService_RenewServiceAccount_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_RenewServiceAccount_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_ListServiceAccounts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/management.ManagementService/ListServiceAccounts", runtime.WithHTTPPathPattern("/management.ManagementService/ListServiceAccounts"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ManagementService_ListServiceAccounts_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_ListServiceAccounts_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_DestroyServiceAccount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/management.ManagementService/DestroyServiceAccount", runtime.WithHTTPPathPattern("/management.ManagementService/DestroyServiceAccount"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ManagementService_DestroyServiceAccount_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_DestroyServiceAccount_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_KubernetesUpgradePreChecks_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/management.ManagementService/KubernetesUpgradePreChecks", runtime.WithHTTPPathPattern("/management.ManagementService/KubernetesUpgradePreChecks"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ManagementService_KubernetesUpgradePreChecks_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_KubernetesUpgradePreChecks_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_KubernetesSyncManifests_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport")
+ _, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ })
+
+ mux.Handle("POST", pattern_ManagementService_CreateSchematic_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/management.ManagementService/CreateSchematic", runtime.WithHTTPPathPattern("/management.ManagementService/CreateSchematic"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ManagementService_CreateSchematic_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_CreateSchematic_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterManagementServiceHandlerFromEndpoint is same as RegisterManagementServiceHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterManagementServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.DialContext(ctx, endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterManagementServiceHandler(ctx, mux, conn)
+}
+
+// RegisterManagementServiceHandler registers the http handlers for service ManagementService to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterManagementServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterManagementServiceHandlerClient(ctx, mux, NewManagementServiceClient(conn))
+}
+
+// RegisterManagementServiceHandlerClient registers the http handlers for service ManagementService
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ManagementServiceClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ManagementServiceClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "ManagementServiceClient" to call the correct interceptors.
+func RegisterManagementServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ManagementServiceClient) error {
+
+ mux.Handle("POST", pattern_ManagementService_Kubeconfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/management.ManagementService/Kubeconfig", runtime.WithHTTPPathPattern("/management.ManagementService/Kubeconfig"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ManagementService_Kubeconfig_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_Kubeconfig_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_Talosconfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/management.ManagementService/Talosconfig", runtime.WithHTTPPathPattern("/management.ManagementService/Talosconfig"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ManagementService_Talosconfig_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_Talosconfig_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_Omniconfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/management.ManagementService/Omniconfig", runtime.WithHTTPPathPattern("/management.ManagementService/Omniconfig"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ManagementService_Omniconfig_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_Omniconfig_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_MachineLogs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/management.ManagementService/MachineLogs", runtime.WithHTTPPathPattern("/management.ManagementService/MachineLogs"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ManagementService_MachineLogs_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_MachineLogs_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_ValidateConfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/management.ManagementService/ValidateConfig", runtime.WithHTTPPathPattern("/management.ManagementService/ValidateConfig"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ManagementService_ValidateConfig_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_ValidateConfig_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_CreateServiceAccount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/management.ManagementService/CreateServiceAccount", runtime.WithHTTPPathPattern("/management.ManagementService/CreateServiceAccount"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ManagementService_CreateServiceAccount_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_CreateServiceAccount_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_RenewServiceAccount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/management.ManagementService/RenewServiceAccount", runtime.WithHTTPPathPattern("/management.ManagementService/RenewServiceAccount"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ManagementService_RenewServiceAccount_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_RenewServiceAccount_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_ListServiceAccounts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/management.ManagementService/ListServiceAccounts", runtime.WithHTTPPathPattern("/management.ManagementService/ListServiceAccounts"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ManagementService_ListServiceAccounts_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_ListServiceAccounts_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_DestroyServiceAccount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/management.ManagementService/DestroyServiceAccount", runtime.WithHTTPPathPattern("/management.ManagementService/DestroyServiceAccount"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ManagementService_DestroyServiceAccount_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_DestroyServiceAccount_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_KubernetesUpgradePreChecks_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/management.ManagementService/KubernetesUpgradePreChecks", runtime.WithHTTPPathPattern("/management.ManagementService/KubernetesUpgradePreChecks"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ManagementService_KubernetesUpgradePreChecks_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_KubernetesUpgradePreChecks_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_KubernetesSyncManifests_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/management.ManagementService/KubernetesSyncManifests", runtime.WithHTTPPathPattern("/management.ManagementService/KubernetesSyncManifests"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ManagementService_KubernetesSyncManifests_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_KubernetesSyncManifests_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ManagementService_CreateSchematic_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/management.ManagementService/CreateSchematic", runtime.WithHTTPPathPattern("/management.ManagementService/CreateSchematic"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ManagementService_CreateSchematic_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ManagementService_CreateSchematic_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_ManagementService_Kubeconfig_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"management.ManagementService", "Kubeconfig"}, ""))
+
+ pattern_ManagementService_Talosconfig_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"management.ManagementService", "Talosconfig"}, ""))
+
+ pattern_ManagementService_Omniconfig_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"management.ManagementService", "Omniconfig"}, ""))
+
+ pattern_ManagementService_MachineLogs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"management.ManagementService", "MachineLogs"}, ""))
+
+ pattern_ManagementService_ValidateConfig_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"management.ManagementService", "ValidateConfig"}, ""))
+
+ pattern_ManagementService_CreateServiceAccount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"management.ManagementService", "CreateServiceAccount"}, ""))
+
+ pattern_ManagementService_RenewServiceAccount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"management.ManagementService", "RenewServiceAccount"}, ""))
+
+ pattern_ManagementService_ListServiceAccounts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"management.ManagementService", "ListServiceAccounts"}, ""))
+
+ pattern_ManagementService_DestroyServiceAccount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"management.ManagementService", "DestroyServiceAccount"}, ""))
+
+ pattern_ManagementService_KubernetesUpgradePreChecks_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"management.ManagementService", "KubernetesUpgradePreChecks"}, ""))
+
+ pattern_ManagementService_KubernetesSyncManifests_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"management.ManagementService", "KubernetesSyncManifests"}, ""))
+
+ pattern_ManagementService_CreateSchematic_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"management.ManagementService", "CreateSchematic"}, ""))
+)
+
+var (
+ forward_ManagementService_Kubeconfig_0 = runtime.ForwardResponseMessage
+
+ forward_ManagementService_Talosconfig_0 = runtime.ForwardResponseMessage
+
+ forward_ManagementService_Omniconfig_0 = runtime.ForwardResponseMessage
+
+ forward_ManagementService_MachineLogs_0 = runtime.ForwardResponseStream
+
+ forward_ManagementService_ValidateConfig_0 = runtime.ForwardResponseMessage
+
+ forward_ManagementService_CreateServiceAccount_0 = runtime.ForwardResponseMessage
+
+ forward_ManagementService_RenewServiceAccount_0 = runtime.ForwardResponseMessage
+
+ forward_ManagementService_ListServiceAccounts_0 = runtime.ForwardResponseMessage
+
+ forward_ManagementService_DestroyServiceAccount_0 = runtime.ForwardResponseMessage
+
+ forward_ManagementService_KubernetesUpgradePreChecks_0 = runtime.ForwardResponseMessage
+
+ forward_ManagementService_KubernetesSyncManifests_0 = runtime.ForwardResponseStream
+
+ forward_ManagementService_CreateSchematic_0 = runtime.ForwardResponseMessage
+)
diff --git a/client/api/omni/management/management.proto b/client/api/omni/management/management.proto
new file mode 100644
index 000000000..4e951d4f9
--- /dev/null
+++ b/client/api/omni/management/management.proto
@@ -0,0 +1,146 @@
+syntax = "proto3";
+package management;
+
+option go_package = "github.com/siderolabs/omni/client/api/omni/management";
+
+import "google/protobuf/empty.proto";
+import "google/protobuf/timestamp.proto";
+import "google/protobuf/duration.proto";
+import "common/common.proto";
+
+message KubeconfigResponse {
+ // Kubeconfig is the kubeconfig for the cluster.
+ bytes kubeconfig = 1;
+}
+
+message TalosconfigResponse {
+ // talosconfig is the talos client configuration to access the cluster via the proxy.
+ bytes talosconfig = 1;
+}
+
+message OmniconfigResponse{
+ // omniconfig is the omnictl client configuration to access the omni instance.
+ bytes omniconfig = 1;
+}
+
+message MachineLogsRequest {
+ // MachineId is the ID of the machine.
+ string machine_id = 1;
+ // Follow is whether to follow the logs.
+ bool follow = 2;
+ // TailLines is the number of lines to tail.
+ int32 tail_lines = 3;
+}
+
+message ValidateConfigRequest {
+ // Config represents raw configuration string to validate.
+ string config = 1;
+}
+
+message TalosconfigRequest {
+ // Admin indicates whether to generate an admin talosconfig or a regular one.
+ bool admin = 1;
+}
+
+message CreateServiceAccountRequest {
+ string armored_pgp_public_key = 1;
+ reserved 2;
+ // UseUserRole indicates whether to use the role of the creating user.
+ // When true, role will be ignored and the service account will be created with the role of the creating user.
+ bool use_user_role = 3;
+ string role = 4;
+}
+
+message CreateServiceAccountResponse {
+ string public_key_id = 1;
+}
+
+message RenewServiceAccountRequest {
+ string name = 1;
+ string armored_pgp_public_key = 2;
+}
+
+message RenewServiceAccountResponse {
+ string public_key_id = 1;
+}
+
+message DestroyServiceAccountRequest {
+ string name = 1;
+}
+
+message ListServiceAccountsResponse {
+ message ServiceAccount {
+ message PgpPublicKey {
+ string id = 1;
+ string armored = 2;
+ google.protobuf.Timestamp expiration = 3;
+ }
+
+ string name = 1;
+ repeated PgpPublicKey pgp_public_keys = 2;
+ reserved 3;
+ string role = 4;
+ }
+
+ repeated ServiceAccount service_accounts = 1;
+}
+
+message KubeconfigRequest {
+ bool service_account = 1;
+ google.protobuf.Duration service_account_ttl = 2;
+ string service_account_user = 3;
+ repeated string service_account_groups = 4;
+}
+
+message KubernetesUpgradePreChecksRequest {
+ string new_version = 1;
+}
+
+message KubernetesUpgradePreChecksResponse {
+ bool ok = 1;
+ string reason = 2;
+}
+
+message KubernetesSyncManifestRequest {
+ bool dry_run = 1;
+}
+
+message KubernetesSyncManifestResponse {
+ enum ResponseType {
+ UNKNOWN = 0;
+ MANIFEST = 1;
+ ROLLOUT = 2;
+ };
+
+ ResponseType response_type = 1;
+ string path = 2;
+ bytes object = 3;
+ string diff = 4;
+ bool skipped = 5;
+}
+
+message CreateSchematicRequest {
+ repeated string extensions = 1;
+ repeated string extra_kernel_args = 2;
+ map meta_values = 3;
+}
+
+message CreateSchematicResponse {
+ string schematic_id = 1;
+ string pxe_url = 2;
+}
+
+service ManagementService {
+ rpc Kubeconfig(KubeconfigRequest) returns (KubeconfigResponse);
+ rpc Talosconfig(TalosconfigRequest) returns (TalosconfigResponse);
+ rpc Omniconfig(google.protobuf.Empty) returns (OmniconfigResponse);
+ rpc MachineLogs(MachineLogsRequest) returns (stream common.Data);
+ rpc ValidateConfig(ValidateConfigRequest) returns (google.protobuf.Empty);
+ rpc CreateServiceAccount(CreateServiceAccountRequest) returns (CreateServiceAccountResponse);
+ rpc RenewServiceAccount(RenewServiceAccountRequest) returns (RenewServiceAccountResponse);
+ rpc ListServiceAccounts(google.protobuf.Empty) returns (ListServiceAccountsResponse);
+ rpc DestroyServiceAccount(DestroyServiceAccountRequest) returns (google.protobuf.Empty);
+ rpc KubernetesUpgradePreChecks(KubernetesUpgradePreChecksRequest) returns (KubernetesUpgradePreChecksResponse);
+ rpc KubernetesSyncManifests(KubernetesSyncManifestRequest) returns (stream KubernetesSyncManifestResponse);
+ rpc CreateSchematic(CreateSchematicRequest) returns (CreateSchematicResponse);
+}
diff --git a/client/api/omni/management/management_grpc.pb.go b/client/api/omni/management/management_grpc.pb.go
new file mode 100644
index 000000000..83685e32b
--- /dev/null
+++ b/client/api/omni/management/management_grpc.pb.go
@@ -0,0 +1,574 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v4.24.4
+// source: omni/management/management.proto
+
+package management
+
+import (
+ context "context"
+
+ common "github.com/siderolabs/talos/pkg/machinery/api/common"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ ManagementService_Kubeconfig_FullMethodName = "/management.ManagementService/Kubeconfig"
+ ManagementService_Talosconfig_FullMethodName = "/management.ManagementService/Talosconfig"
+ ManagementService_Omniconfig_FullMethodName = "/management.ManagementService/Omniconfig"
+ ManagementService_MachineLogs_FullMethodName = "/management.ManagementService/MachineLogs"
+ ManagementService_ValidateConfig_FullMethodName = "/management.ManagementService/ValidateConfig"
+ ManagementService_CreateServiceAccount_FullMethodName = "/management.ManagementService/CreateServiceAccount"
+ ManagementService_RenewServiceAccount_FullMethodName = "/management.ManagementService/RenewServiceAccount"
+ ManagementService_ListServiceAccounts_FullMethodName = "/management.ManagementService/ListServiceAccounts"
+ ManagementService_DestroyServiceAccount_FullMethodName = "/management.ManagementService/DestroyServiceAccount"
+ ManagementService_KubernetesUpgradePreChecks_FullMethodName = "/management.ManagementService/KubernetesUpgradePreChecks"
+ ManagementService_KubernetesSyncManifests_FullMethodName = "/management.ManagementService/KubernetesSyncManifests"
+ ManagementService_CreateSchematic_FullMethodName = "/management.ManagementService/CreateSchematic"
+)
+
+// ManagementServiceClient is the client API for ManagementService 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 ManagementServiceClient interface {
+ Kubeconfig(ctx context.Context, in *KubeconfigRequest, opts ...grpc.CallOption) (*KubeconfigResponse, error)
+ Talosconfig(ctx context.Context, in *TalosconfigRequest, opts ...grpc.CallOption) (*TalosconfigResponse, error)
+ Omniconfig(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*OmniconfigResponse, error)
+ MachineLogs(ctx context.Context, in *MachineLogsRequest, opts ...grpc.CallOption) (ManagementService_MachineLogsClient, error)
+ ValidateConfig(ctx context.Context, in *ValidateConfigRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ CreateServiceAccount(ctx context.Context, in *CreateServiceAccountRequest, opts ...grpc.CallOption) (*CreateServiceAccountResponse, error)
+ RenewServiceAccount(ctx context.Context, in *RenewServiceAccountRequest, opts ...grpc.CallOption) (*RenewServiceAccountResponse, error)
+ ListServiceAccounts(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ListServiceAccountsResponse, error)
+ DestroyServiceAccount(ctx context.Context, in *DestroyServiceAccountRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ KubernetesUpgradePreChecks(ctx context.Context, in *KubernetesUpgradePreChecksRequest, opts ...grpc.CallOption) (*KubernetesUpgradePreChecksResponse, error)
+ KubernetesSyncManifests(ctx context.Context, in *KubernetesSyncManifestRequest, opts ...grpc.CallOption) (ManagementService_KubernetesSyncManifestsClient, error)
+ CreateSchematic(ctx context.Context, in *CreateSchematicRequest, opts ...grpc.CallOption) (*CreateSchematicResponse, error)
+}
+
+type managementServiceClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewManagementServiceClient(cc grpc.ClientConnInterface) ManagementServiceClient {
+ return &managementServiceClient{cc}
+}
+
+func (c *managementServiceClient) Kubeconfig(ctx context.Context, in *KubeconfigRequest, opts ...grpc.CallOption) (*KubeconfigResponse, error) {
+ out := new(KubeconfigResponse)
+ err := c.cc.Invoke(ctx, ManagementService_Kubeconfig_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *managementServiceClient) Talosconfig(ctx context.Context, in *TalosconfigRequest, opts ...grpc.CallOption) (*TalosconfigResponse, error) {
+ out := new(TalosconfigResponse)
+ err := c.cc.Invoke(ctx, ManagementService_Talosconfig_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *managementServiceClient) Omniconfig(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*OmniconfigResponse, error) {
+ out := new(OmniconfigResponse)
+ err := c.cc.Invoke(ctx, ManagementService_Omniconfig_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *managementServiceClient) MachineLogs(ctx context.Context, in *MachineLogsRequest, opts ...grpc.CallOption) (ManagementService_MachineLogsClient, error) {
+ stream, err := c.cc.NewStream(ctx, &ManagementService_ServiceDesc.Streams[0], ManagementService_MachineLogs_FullMethodName, opts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &managementServiceMachineLogsClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
+}
+
+type ManagementService_MachineLogsClient interface {
+ Recv() (*common.Data, error)
+ grpc.ClientStream
+}
+
+type managementServiceMachineLogsClient struct {
+ grpc.ClientStream
+}
+
+func (x *managementServiceMachineLogsClient) Recv() (*common.Data, error) {
+ m := new(common.Data)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+func (c *managementServiceClient) ValidateConfig(ctx context.Context, in *ValidateConfigRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, ManagementService_ValidateConfig_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *managementServiceClient) CreateServiceAccount(ctx context.Context, in *CreateServiceAccountRequest, opts ...grpc.CallOption) (*CreateServiceAccountResponse, error) {
+ out := new(CreateServiceAccountResponse)
+ err := c.cc.Invoke(ctx, ManagementService_CreateServiceAccount_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *managementServiceClient) RenewServiceAccount(ctx context.Context, in *RenewServiceAccountRequest, opts ...grpc.CallOption) (*RenewServiceAccountResponse, error) {
+ out := new(RenewServiceAccountResponse)
+ err := c.cc.Invoke(ctx, ManagementService_RenewServiceAccount_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *managementServiceClient) ListServiceAccounts(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ListServiceAccountsResponse, error) {
+ out := new(ListServiceAccountsResponse)
+ err := c.cc.Invoke(ctx, ManagementService_ListServiceAccounts_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *managementServiceClient) DestroyServiceAccount(ctx context.Context, in *DestroyServiceAccountRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, ManagementService_DestroyServiceAccount_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *managementServiceClient) KubernetesUpgradePreChecks(ctx context.Context, in *KubernetesUpgradePreChecksRequest, opts ...grpc.CallOption) (*KubernetesUpgradePreChecksResponse, error) {
+ out := new(KubernetesUpgradePreChecksResponse)
+ err := c.cc.Invoke(ctx, ManagementService_KubernetesUpgradePreChecks_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *managementServiceClient) KubernetesSyncManifests(ctx context.Context, in *KubernetesSyncManifestRequest, opts ...grpc.CallOption) (ManagementService_KubernetesSyncManifestsClient, error) {
+ stream, err := c.cc.NewStream(ctx, &ManagementService_ServiceDesc.Streams[1], ManagementService_KubernetesSyncManifests_FullMethodName, opts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &managementServiceKubernetesSyncManifestsClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
+}
+
+type ManagementService_KubernetesSyncManifestsClient interface {
+ Recv() (*KubernetesSyncManifestResponse, error)
+ grpc.ClientStream
+}
+
+type managementServiceKubernetesSyncManifestsClient struct {
+ grpc.ClientStream
+}
+
+func (x *managementServiceKubernetesSyncManifestsClient) Recv() (*KubernetesSyncManifestResponse, error) {
+ m := new(KubernetesSyncManifestResponse)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+func (c *managementServiceClient) CreateSchematic(ctx context.Context, in *CreateSchematicRequest, opts ...grpc.CallOption) (*CreateSchematicResponse, error) {
+ out := new(CreateSchematicResponse)
+ err := c.cc.Invoke(ctx, ManagementService_CreateSchematic_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// ManagementServiceServer is the server API for ManagementService service.
+// All implementations must embed UnimplementedManagementServiceServer
+// for forward compatibility
+type ManagementServiceServer interface {
+ Kubeconfig(context.Context, *KubeconfigRequest) (*KubeconfigResponse, error)
+ Talosconfig(context.Context, *TalosconfigRequest) (*TalosconfigResponse, error)
+ Omniconfig(context.Context, *emptypb.Empty) (*OmniconfigResponse, error)
+ MachineLogs(*MachineLogsRequest, ManagementService_MachineLogsServer) error
+ ValidateConfig(context.Context, *ValidateConfigRequest) (*emptypb.Empty, error)
+ CreateServiceAccount(context.Context, *CreateServiceAccountRequest) (*CreateServiceAccountResponse, error)
+ RenewServiceAccount(context.Context, *RenewServiceAccountRequest) (*RenewServiceAccountResponse, error)
+ ListServiceAccounts(context.Context, *emptypb.Empty) (*ListServiceAccountsResponse, error)
+ DestroyServiceAccount(context.Context, *DestroyServiceAccountRequest) (*emptypb.Empty, error)
+ KubernetesUpgradePreChecks(context.Context, *KubernetesUpgradePreChecksRequest) (*KubernetesUpgradePreChecksResponse, error)
+ KubernetesSyncManifests(*KubernetesSyncManifestRequest, ManagementService_KubernetesSyncManifestsServer) error
+ CreateSchematic(context.Context, *CreateSchematicRequest) (*CreateSchematicResponse, error)
+ mustEmbedUnimplementedManagementServiceServer()
+}
+
+// UnimplementedManagementServiceServer must be embedded to have forward compatible implementations.
+type UnimplementedManagementServiceServer struct {
+}
+
+func (UnimplementedManagementServiceServer) Kubeconfig(context.Context, *KubeconfigRequest) (*KubeconfigResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Kubeconfig not implemented")
+}
+func (UnimplementedManagementServiceServer) Talosconfig(context.Context, *TalosconfigRequest) (*TalosconfigResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Talosconfig not implemented")
+}
+func (UnimplementedManagementServiceServer) Omniconfig(context.Context, *emptypb.Empty) (*OmniconfigResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Omniconfig not implemented")
+}
+func (UnimplementedManagementServiceServer) MachineLogs(*MachineLogsRequest, ManagementService_MachineLogsServer) error {
+ return status.Errorf(codes.Unimplemented, "method MachineLogs not implemented")
+}
+func (UnimplementedManagementServiceServer) ValidateConfig(context.Context, *ValidateConfigRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ValidateConfig not implemented")
+}
+func (UnimplementedManagementServiceServer) CreateServiceAccount(context.Context, *CreateServiceAccountRequest) (*CreateServiceAccountResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method CreateServiceAccount not implemented")
+}
+func (UnimplementedManagementServiceServer) RenewServiceAccount(context.Context, *RenewServiceAccountRequest) (*RenewServiceAccountResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method RenewServiceAccount not implemented")
+}
+func (UnimplementedManagementServiceServer) ListServiceAccounts(context.Context, *emptypb.Empty) (*ListServiceAccountsResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ListServiceAccounts not implemented")
+}
+func (UnimplementedManagementServiceServer) DestroyServiceAccount(context.Context, *DestroyServiceAccountRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method DestroyServiceAccount not implemented")
+}
+func (UnimplementedManagementServiceServer) KubernetesUpgradePreChecks(context.Context, *KubernetesUpgradePreChecksRequest) (*KubernetesUpgradePreChecksResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method KubernetesUpgradePreChecks not implemented")
+}
+func (UnimplementedManagementServiceServer) KubernetesSyncManifests(*KubernetesSyncManifestRequest, ManagementService_KubernetesSyncManifestsServer) error {
+ return status.Errorf(codes.Unimplemented, "method KubernetesSyncManifests not implemented")
+}
+func (UnimplementedManagementServiceServer) CreateSchematic(context.Context, *CreateSchematicRequest) (*CreateSchematicResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method CreateSchematic not implemented")
+}
+func (UnimplementedManagementServiceServer) mustEmbedUnimplementedManagementServiceServer() {}
+
+// UnsafeManagementServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to ManagementServiceServer will
+// result in compilation errors.
+type UnsafeManagementServiceServer interface {
+ mustEmbedUnimplementedManagementServiceServer()
+}
+
+func RegisterManagementServiceServer(s grpc.ServiceRegistrar, srv ManagementServiceServer) {
+ s.RegisterService(&ManagementService_ServiceDesc, srv)
+}
+
+func _ManagementService_Kubeconfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(KubeconfigRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ManagementServiceServer).Kubeconfig(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ManagementService_Kubeconfig_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ManagementServiceServer).Kubeconfig(ctx, req.(*KubeconfigRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ManagementService_Talosconfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(TalosconfigRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ManagementServiceServer).Talosconfig(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ManagementService_Talosconfig_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ManagementServiceServer).Talosconfig(ctx, req.(*TalosconfigRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ManagementService_Omniconfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ManagementServiceServer).Omniconfig(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ManagementService_Omniconfig_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ManagementServiceServer).Omniconfig(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ManagementService_MachineLogs_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(MachineLogsRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(ManagementServiceServer).MachineLogs(m, &managementServiceMachineLogsServer{stream})
+}
+
+type ManagementService_MachineLogsServer interface {
+ Send(*common.Data) error
+ grpc.ServerStream
+}
+
+type managementServiceMachineLogsServer struct {
+ grpc.ServerStream
+}
+
+func (x *managementServiceMachineLogsServer) Send(m *common.Data) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func _ManagementService_ValidateConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ValidateConfigRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ManagementServiceServer).ValidateConfig(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ManagementService_ValidateConfig_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ManagementServiceServer).ValidateConfig(ctx, req.(*ValidateConfigRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ManagementService_CreateServiceAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateServiceAccountRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ManagementServiceServer).CreateServiceAccount(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ManagementService_CreateServiceAccount_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ManagementServiceServer).CreateServiceAccount(ctx, req.(*CreateServiceAccountRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ManagementService_RenewServiceAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(RenewServiceAccountRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ManagementServiceServer).RenewServiceAccount(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ManagementService_RenewServiceAccount_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ManagementServiceServer).RenewServiceAccount(ctx, req.(*RenewServiceAccountRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ManagementService_ListServiceAccounts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ManagementServiceServer).ListServiceAccounts(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ManagementService_ListServiceAccounts_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ManagementServiceServer).ListServiceAccounts(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ManagementService_DestroyServiceAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DestroyServiceAccountRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ManagementServiceServer).DestroyServiceAccount(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ManagementService_DestroyServiceAccount_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ManagementServiceServer).DestroyServiceAccount(ctx, req.(*DestroyServiceAccountRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ManagementService_KubernetesUpgradePreChecks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(KubernetesUpgradePreChecksRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ManagementServiceServer).KubernetesUpgradePreChecks(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ManagementService_KubernetesUpgradePreChecks_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ManagementServiceServer).KubernetesUpgradePreChecks(ctx, req.(*KubernetesUpgradePreChecksRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ManagementService_KubernetesSyncManifests_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(KubernetesSyncManifestRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(ManagementServiceServer).KubernetesSyncManifests(m, &managementServiceKubernetesSyncManifestsServer{stream})
+}
+
+type ManagementService_KubernetesSyncManifestsServer interface {
+ Send(*KubernetesSyncManifestResponse) error
+ grpc.ServerStream
+}
+
+type managementServiceKubernetesSyncManifestsServer struct {
+ grpc.ServerStream
+}
+
+func (x *managementServiceKubernetesSyncManifestsServer) Send(m *KubernetesSyncManifestResponse) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func _ManagementService_CreateSchematic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateSchematicRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ManagementServiceServer).CreateSchematic(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ManagementService_CreateSchematic_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ManagementServiceServer).CreateSchematic(ctx, req.(*CreateSchematicRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// ManagementService_ServiceDesc is the grpc.ServiceDesc for ManagementService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var ManagementService_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "management.ManagementService",
+ HandlerType: (*ManagementServiceServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Kubeconfig",
+ Handler: _ManagementService_Kubeconfig_Handler,
+ },
+ {
+ MethodName: "Talosconfig",
+ Handler: _ManagementService_Talosconfig_Handler,
+ },
+ {
+ MethodName: "Omniconfig",
+ Handler: _ManagementService_Omniconfig_Handler,
+ },
+ {
+ MethodName: "ValidateConfig",
+ Handler: _ManagementService_ValidateConfig_Handler,
+ },
+ {
+ MethodName: "CreateServiceAccount",
+ Handler: _ManagementService_CreateServiceAccount_Handler,
+ },
+ {
+ MethodName: "RenewServiceAccount",
+ Handler: _ManagementService_RenewServiceAccount_Handler,
+ },
+ {
+ MethodName: "ListServiceAccounts",
+ Handler: _ManagementService_ListServiceAccounts_Handler,
+ },
+ {
+ MethodName: "DestroyServiceAccount",
+ Handler: _ManagementService_DestroyServiceAccount_Handler,
+ },
+ {
+ MethodName: "KubernetesUpgradePreChecks",
+ Handler: _ManagementService_KubernetesUpgradePreChecks_Handler,
+ },
+ {
+ MethodName: "CreateSchematic",
+ Handler: _ManagementService_CreateSchematic_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{
+ {
+ StreamName: "MachineLogs",
+ Handler: _ManagementService_MachineLogs_Handler,
+ ServerStreams: true,
+ },
+ {
+ StreamName: "KubernetesSyncManifests",
+ Handler: _ManagementService_KubernetesSyncManifests_Handler,
+ ServerStreams: true,
+ },
+ },
+ Metadata: "omni/management/management.proto",
+}
diff --git a/client/api/omni/management/management_vtproto.pb.go b/client/api/omni/management/management_vtproto.pb.go
new file mode 100644
index 000000000..0f0797fe6
--- /dev/null
+++ b/client/api/omni/management/management_vtproto.pb.go
@@ -0,0 +1,4745 @@
+// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.
+// protoc-gen-go-vtproto version: v0.6.0
+// source: omni/management/management.proto
+
+package management
+
+import (
+ fmt "fmt"
+ io "io"
+
+ protohelpers "github.com/planetscale/vtprotobuf/protohelpers"
+ durationpb1 "github.com/planetscale/vtprotobuf/types/known/durationpb"
+ timestamppb1 "github.com/planetscale/vtprotobuf/types/known/timestamppb"
+ proto "google.golang.org/protobuf/proto"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ durationpb "google.golang.org/protobuf/types/known/durationpb"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+func (m *KubeconfigResponse) CloneVT() *KubeconfigResponse {
+ if m == nil {
+ return (*KubeconfigResponse)(nil)
+ }
+ r := new(KubeconfigResponse)
+ if rhs := m.Kubeconfig; rhs != nil {
+ tmpBytes := make([]byte, len(rhs))
+ copy(tmpBytes, rhs)
+ r.Kubeconfig = tmpBytes
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubeconfigResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *TalosconfigResponse) CloneVT() *TalosconfigResponse {
+ if m == nil {
+ return (*TalosconfigResponse)(nil)
+ }
+ r := new(TalosconfigResponse)
+ if rhs := m.Talosconfig; rhs != nil {
+ tmpBytes := make([]byte, len(rhs))
+ copy(tmpBytes, rhs)
+ r.Talosconfig = tmpBytes
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *TalosconfigResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *OmniconfigResponse) CloneVT() *OmniconfigResponse {
+ if m == nil {
+ return (*OmniconfigResponse)(nil)
+ }
+ r := new(OmniconfigResponse)
+ if rhs := m.Omniconfig; rhs != nil {
+ tmpBytes := make([]byte, len(rhs))
+ copy(tmpBytes, rhs)
+ r.Omniconfig = tmpBytes
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *OmniconfigResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineLogsRequest) CloneVT() *MachineLogsRequest {
+ if m == nil {
+ return (*MachineLogsRequest)(nil)
+ }
+ r := new(MachineLogsRequest)
+ r.MachineId = m.MachineId
+ r.Follow = m.Follow
+ r.TailLines = m.TailLines
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineLogsRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ValidateConfigRequest) CloneVT() *ValidateConfigRequest {
+ if m == nil {
+ return (*ValidateConfigRequest)(nil)
+ }
+ r := new(ValidateConfigRequest)
+ r.Config = m.Config
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ValidateConfigRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *TalosconfigRequest) CloneVT() *TalosconfigRequest {
+ if m == nil {
+ return (*TalosconfigRequest)(nil)
+ }
+ r := new(TalosconfigRequest)
+ r.Admin = m.Admin
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *TalosconfigRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *CreateServiceAccountRequest) CloneVT() *CreateServiceAccountRequest {
+ if m == nil {
+ return (*CreateServiceAccountRequest)(nil)
+ }
+ r := new(CreateServiceAccountRequest)
+ r.ArmoredPgpPublicKey = m.ArmoredPgpPublicKey
+ r.UseUserRole = m.UseUserRole
+ r.Role = m.Role
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *CreateServiceAccountRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *CreateServiceAccountResponse) CloneVT() *CreateServiceAccountResponse {
+ if m == nil {
+ return (*CreateServiceAccountResponse)(nil)
+ }
+ r := new(CreateServiceAccountResponse)
+ r.PublicKeyId = m.PublicKeyId
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *CreateServiceAccountResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *RenewServiceAccountRequest) CloneVT() *RenewServiceAccountRequest {
+ if m == nil {
+ return (*RenewServiceAccountRequest)(nil)
+ }
+ r := new(RenewServiceAccountRequest)
+ r.Name = m.Name
+ r.ArmoredPgpPublicKey = m.ArmoredPgpPublicKey
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *RenewServiceAccountRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *RenewServiceAccountResponse) CloneVT() *RenewServiceAccountResponse {
+ if m == nil {
+ return (*RenewServiceAccountResponse)(nil)
+ }
+ r := new(RenewServiceAccountResponse)
+ r.PublicKeyId = m.PublicKeyId
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *RenewServiceAccountResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *DestroyServiceAccountRequest) CloneVT() *DestroyServiceAccountRequest {
+ if m == nil {
+ return (*DestroyServiceAccountRequest)(nil)
+ }
+ r := new(DestroyServiceAccountRequest)
+ r.Name = m.Name
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *DestroyServiceAccountRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) CloneVT() *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey {
+ if m == nil {
+ return (*ListServiceAccountsResponse_ServiceAccount_PgpPublicKey)(nil)
+ }
+ r := new(ListServiceAccountsResponse_ServiceAccount_PgpPublicKey)
+ r.Id = m.Id
+ r.Armored = m.Armored
+ r.Expiration = (*timestamppb.Timestamp)((*timestamppb1.Timestamp)(m.Expiration).CloneVT())
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ListServiceAccountsResponse_ServiceAccount) CloneVT() *ListServiceAccountsResponse_ServiceAccount {
+ if m == nil {
+ return (*ListServiceAccountsResponse_ServiceAccount)(nil)
+ }
+ r := new(ListServiceAccountsResponse_ServiceAccount)
+ r.Name = m.Name
+ r.Role = m.Role
+ if rhs := m.PgpPublicKeys; rhs != nil {
+ tmpContainer := make([]*ListServiceAccountsResponse_ServiceAccount_PgpPublicKey, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.PgpPublicKeys = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ListServiceAccountsResponse_ServiceAccount) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ListServiceAccountsResponse) CloneVT() *ListServiceAccountsResponse {
+ if m == nil {
+ return (*ListServiceAccountsResponse)(nil)
+ }
+ r := new(ListServiceAccountsResponse)
+ if rhs := m.ServiceAccounts; rhs != nil {
+ tmpContainer := make([]*ListServiceAccountsResponse_ServiceAccount, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.ServiceAccounts = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ListServiceAccountsResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubeconfigRequest) CloneVT() *KubeconfigRequest {
+ if m == nil {
+ return (*KubeconfigRequest)(nil)
+ }
+ r := new(KubeconfigRequest)
+ r.ServiceAccount = m.ServiceAccount
+ r.ServiceAccountTtl = (*durationpb.Duration)((*durationpb1.Duration)(m.ServiceAccountTtl).CloneVT())
+ r.ServiceAccountUser = m.ServiceAccountUser
+ if rhs := m.ServiceAccountGroups; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.ServiceAccountGroups = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubeconfigRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubernetesUpgradePreChecksRequest) CloneVT() *KubernetesUpgradePreChecksRequest {
+ if m == nil {
+ return (*KubernetesUpgradePreChecksRequest)(nil)
+ }
+ r := new(KubernetesUpgradePreChecksRequest)
+ r.NewVersion = m.NewVersion
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubernetesUpgradePreChecksRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubernetesUpgradePreChecksResponse) CloneVT() *KubernetesUpgradePreChecksResponse {
+ if m == nil {
+ return (*KubernetesUpgradePreChecksResponse)(nil)
+ }
+ r := new(KubernetesUpgradePreChecksResponse)
+ r.Ok = m.Ok
+ r.Reason = m.Reason
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubernetesUpgradePreChecksResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubernetesSyncManifestRequest) CloneVT() *KubernetesSyncManifestRequest {
+ if m == nil {
+ return (*KubernetesSyncManifestRequest)(nil)
+ }
+ r := new(KubernetesSyncManifestRequest)
+ r.DryRun = m.DryRun
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubernetesSyncManifestRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubernetesSyncManifestResponse) CloneVT() *KubernetesSyncManifestResponse {
+ if m == nil {
+ return (*KubernetesSyncManifestResponse)(nil)
+ }
+ r := new(KubernetesSyncManifestResponse)
+ r.ResponseType = m.ResponseType
+ r.Path = m.Path
+ r.Diff = m.Diff
+ r.Skipped = m.Skipped
+ if rhs := m.Object; rhs != nil {
+ tmpBytes := make([]byte, len(rhs))
+ copy(tmpBytes, rhs)
+ r.Object = tmpBytes
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubernetesSyncManifestResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *CreateSchematicRequest) CloneVT() *CreateSchematicRequest {
+ if m == nil {
+ return (*CreateSchematicRequest)(nil)
+ }
+ r := new(CreateSchematicRequest)
+ if rhs := m.Extensions; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.Extensions = tmpContainer
+ }
+ if rhs := m.ExtraKernelArgs; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.ExtraKernelArgs = tmpContainer
+ }
+ if rhs := m.MetaValues; rhs != nil {
+ tmpContainer := make(map[uint32]string, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v
+ }
+ r.MetaValues = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *CreateSchematicRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *CreateSchematicResponse) CloneVT() *CreateSchematicResponse {
+ if m == nil {
+ return (*CreateSchematicResponse)(nil)
+ }
+ r := new(CreateSchematicResponse)
+ r.SchematicId = m.SchematicId
+ r.PxeUrl = m.PxeUrl
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *CreateSchematicResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (this *KubeconfigResponse) EqualVT(that *KubeconfigResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if string(this.Kubeconfig) != string(that.Kubeconfig) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubeconfigResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubeconfigResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *TalosconfigResponse) EqualVT(that *TalosconfigResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if string(this.Talosconfig) != string(that.Talosconfig) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *TalosconfigResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*TalosconfigResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *OmniconfigResponse) EqualVT(that *OmniconfigResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if string(this.Omniconfig) != string(that.Omniconfig) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *OmniconfigResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*OmniconfigResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineLogsRequest) EqualVT(that *MachineLogsRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.MachineId != that.MachineId {
+ return false
+ }
+ if this.Follow != that.Follow {
+ return false
+ }
+ if this.TailLines != that.TailLines {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineLogsRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineLogsRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ValidateConfigRequest) EqualVT(that *ValidateConfigRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Config != that.Config {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ValidateConfigRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ValidateConfigRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *TalosconfigRequest) EqualVT(that *TalosconfigRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Admin != that.Admin {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *TalosconfigRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*TalosconfigRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *CreateServiceAccountRequest) EqualVT(that *CreateServiceAccountRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.ArmoredPgpPublicKey != that.ArmoredPgpPublicKey {
+ return false
+ }
+ if this.UseUserRole != that.UseUserRole {
+ return false
+ }
+ if this.Role != that.Role {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *CreateServiceAccountRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*CreateServiceAccountRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *CreateServiceAccountResponse) EqualVT(that *CreateServiceAccountResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.PublicKeyId != that.PublicKeyId {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *CreateServiceAccountResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*CreateServiceAccountResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *RenewServiceAccountRequest) EqualVT(that *RenewServiceAccountRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Name != that.Name {
+ return false
+ }
+ if this.ArmoredPgpPublicKey != that.ArmoredPgpPublicKey {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *RenewServiceAccountRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*RenewServiceAccountRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *RenewServiceAccountResponse) EqualVT(that *RenewServiceAccountResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.PublicKeyId != that.PublicKeyId {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *RenewServiceAccountResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*RenewServiceAccountResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *DestroyServiceAccountRequest) EqualVT(that *DestroyServiceAccountRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Name != that.Name {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *DestroyServiceAccountRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*DestroyServiceAccountRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) EqualVT(that *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Id != that.Id {
+ return false
+ }
+ if this.Armored != that.Armored {
+ return false
+ }
+ if !(*timestamppb1.Timestamp)(this.Expiration).EqualVT((*timestamppb1.Timestamp)(that.Expiration)) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ListServiceAccountsResponse_ServiceAccount_PgpPublicKey)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ListServiceAccountsResponse_ServiceAccount) EqualVT(that *ListServiceAccountsResponse_ServiceAccount) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Name != that.Name {
+ return false
+ }
+ if len(this.PgpPublicKeys) != len(that.PgpPublicKeys) {
+ return false
+ }
+ for i, vx := range this.PgpPublicKeys {
+ vy := that.PgpPublicKeys[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &ListServiceAccountsResponse_ServiceAccount_PgpPublicKey{}
+ }
+ if q == nil {
+ q = &ListServiceAccountsResponse_ServiceAccount_PgpPublicKey{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ if this.Role != that.Role {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ListServiceAccountsResponse_ServiceAccount) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ListServiceAccountsResponse_ServiceAccount)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ListServiceAccountsResponse) EqualVT(that *ListServiceAccountsResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.ServiceAccounts) != len(that.ServiceAccounts) {
+ return false
+ }
+ for i, vx := range this.ServiceAccounts {
+ vy := that.ServiceAccounts[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &ListServiceAccountsResponse_ServiceAccount{}
+ }
+ if q == nil {
+ q = &ListServiceAccountsResponse_ServiceAccount{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ListServiceAccountsResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ListServiceAccountsResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubeconfigRequest) EqualVT(that *KubeconfigRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.ServiceAccount != that.ServiceAccount {
+ return false
+ }
+ if !(*durationpb1.Duration)(this.ServiceAccountTtl).EqualVT((*durationpb1.Duration)(that.ServiceAccountTtl)) {
+ return false
+ }
+ if this.ServiceAccountUser != that.ServiceAccountUser {
+ return false
+ }
+ if len(this.ServiceAccountGroups) != len(that.ServiceAccountGroups) {
+ return false
+ }
+ for i, vx := range this.ServiceAccountGroups {
+ vy := that.ServiceAccountGroups[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubeconfigRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubeconfigRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubernetesUpgradePreChecksRequest) EqualVT(that *KubernetesUpgradePreChecksRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.NewVersion != that.NewVersion {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubernetesUpgradePreChecksRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubernetesUpgradePreChecksRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubernetesUpgradePreChecksResponse) EqualVT(that *KubernetesUpgradePreChecksResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Ok != that.Ok {
+ return false
+ }
+ if this.Reason != that.Reason {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubernetesUpgradePreChecksResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubernetesUpgradePreChecksResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubernetesSyncManifestRequest) EqualVT(that *KubernetesSyncManifestRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.DryRun != that.DryRun {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubernetesSyncManifestRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubernetesSyncManifestRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubernetesSyncManifestResponse) EqualVT(that *KubernetesSyncManifestResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.ResponseType != that.ResponseType {
+ return false
+ }
+ if this.Path != that.Path {
+ return false
+ }
+ if string(this.Object) != string(that.Object) {
+ return false
+ }
+ if this.Diff != that.Diff {
+ return false
+ }
+ if this.Skipped != that.Skipped {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubernetesSyncManifestResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubernetesSyncManifestResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *CreateSchematicRequest) EqualVT(that *CreateSchematicRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.Extensions) != len(that.Extensions) {
+ return false
+ }
+ for i, vx := range this.Extensions {
+ vy := that.Extensions[i]
+ if vx != vy {
+ return false
+ }
+ }
+ if len(this.ExtraKernelArgs) != len(that.ExtraKernelArgs) {
+ return false
+ }
+ for i, vx := range this.ExtraKernelArgs {
+ vy := that.ExtraKernelArgs[i]
+ if vx != vy {
+ return false
+ }
+ }
+ if len(this.MetaValues) != len(that.MetaValues) {
+ return false
+ }
+ for i, vx := range this.MetaValues {
+ vy, ok := that.MetaValues[i]
+ if !ok {
+ return false
+ }
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *CreateSchematicRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*CreateSchematicRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *CreateSchematicResponse) EqualVT(that *CreateSchematicResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.SchematicId != that.SchematicId {
+ return false
+ }
+ if this.PxeUrl != that.PxeUrl {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *CreateSchematicResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*CreateSchematicResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (m *KubeconfigResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubeconfigResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubeconfigResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Kubeconfig) > 0 {
+ i -= len(m.Kubeconfig)
+ copy(dAtA[i:], m.Kubeconfig)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Kubeconfig)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TalosconfigResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TalosconfigResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *TalosconfigResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Talosconfig) > 0 {
+ i -= len(m.Talosconfig)
+ copy(dAtA[i:], m.Talosconfig)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Talosconfig)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *OmniconfigResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *OmniconfigResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *OmniconfigResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Omniconfig) > 0 {
+ i -= len(m.Omniconfig)
+ copy(dAtA[i:], m.Omniconfig)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Omniconfig)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineLogsRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineLogsRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineLogsRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.TailLines != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.TailLines))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Follow {
+ i--
+ if m.Follow {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.MachineId) > 0 {
+ i -= len(m.MachineId)
+ copy(dAtA[i:], m.MachineId)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.MachineId)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ValidateConfigRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ValidateConfigRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ValidateConfigRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Config) > 0 {
+ i -= len(m.Config)
+ copy(dAtA[i:], m.Config)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Config)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TalosconfigRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TalosconfigRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *TalosconfigRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Admin {
+ i--
+ if m.Admin {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CreateServiceAccountRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CreateServiceAccountRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *CreateServiceAccountRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Role) > 0 {
+ i -= len(m.Role)
+ copy(dAtA[i:], m.Role)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Role)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.UseUserRole {
+ i--
+ if m.UseUserRole {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.ArmoredPgpPublicKey) > 0 {
+ i -= len(m.ArmoredPgpPublicKey)
+ copy(dAtA[i:], m.ArmoredPgpPublicKey)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ArmoredPgpPublicKey)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CreateServiceAccountResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CreateServiceAccountResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *CreateServiceAccountResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.PublicKeyId) > 0 {
+ i -= len(m.PublicKeyId)
+ copy(dAtA[i:], m.PublicKeyId)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PublicKeyId)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RenewServiceAccountRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RenewServiceAccountRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *RenewServiceAccountRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.ArmoredPgpPublicKey) > 0 {
+ i -= len(m.ArmoredPgpPublicKey)
+ copy(dAtA[i:], m.ArmoredPgpPublicKey)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ArmoredPgpPublicKey)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RenewServiceAccountResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RenewServiceAccountResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *RenewServiceAccountResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.PublicKeyId) > 0 {
+ i -= len(m.PublicKeyId)
+ copy(dAtA[i:], m.PublicKeyId)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PublicKeyId)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *DestroyServiceAccountRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DestroyServiceAccountRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *DestroyServiceAccountRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Expiration != nil {
+ size, err := (*timestamppb1.Timestamp)(m.Expiration).MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Armored) > 0 {
+ i -= len(m.Armored)
+ copy(dAtA[i:], m.Armored)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Armored)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Id) > 0 {
+ i -= len(m.Id)
+ copy(dAtA[i:], m.Id)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Id)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ListServiceAccountsResponse_ServiceAccount) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ListServiceAccountsResponse_ServiceAccount) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ListServiceAccountsResponse_ServiceAccount) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Role) > 0 {
+ i -= len(m.Role)
+ copy(dAtA[i:], m.Role)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Role)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.PgpPublicKeys) > 0 {
+ for iNdEx := len(m.PgpPublicKeys) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.PgpPublicKeys[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ListServiceAccountsResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ListServiceAccountsResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ListServiceAccountsResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.ServiceAccounts) > 0 {
+ for iNdEx := len(m.ServiceAccounts) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.ServiceAccounts[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubeconfigRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubeconfigRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubeconfigRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.ServiceAccountGroups) > 0 {
+ for iNdEx := len(m.ServiceAccountGroups) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ServiceAccountGroups[iNdEx])
+ copy(dAtA[i:], m.ServiceAccountGroups[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ServiceAccountGroups[iNdEx])))
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.ServiceAccountUser) > 0 {
+ i -= len(m.ServiceAccountUser)
+ copy(dAtA[i:], m.ServiceAccountUser)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ServiceAccountUser)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ServiceAccountTtl != nil {
+ size, err := (*durationpb1.Duration)(m.ServiceAccountTtl).MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.ServiceAccount {
+ i--
+ if m.ServiceAccount {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubernetesUpgradePreChecksRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubernetesUpgradePreChecksRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubernetesUpgradePreChecksRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.NewVersion) > 0 {
+ i -= len(m.NewVersion)
+ copy(dAtA[i:], m.NewVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.NewVersion)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubernetesUpgradePreChecksResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubernetesUpgradePreChecksResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubernetesUpgradePreChecksResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Reason) > 0 {
+ i -= len(m.Reason)
+ copy(dAtA[i:], m.Reason)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Reason)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Ok {
+ i--
+ if m.Ok {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubernetesSyncManifestRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubernetesSyncManifestRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubernetesSyncManifestRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.DryRun {
+ i--
+ if m.DryRun {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubernetesSyncManifestResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubernetesSyncManifestResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubernetesSyncManifestResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Skipped {
+ i--
+ if m.Skipped {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x28
+ }
+ if len(m.Diff) > 0 {
+ i -= len(m.Diff)
+ copy(dAtA[i:], m.Diff)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Diff)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Object) > 0 {
+ i -= len(m.Object)
+ copy(dAtA[i:], m.Object)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Object)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Path) > 0 {
+ i -= len(m.Path)
+ copy(dAtA[i:], m.Path)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Path)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.ResponseType != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.ResponseType))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CreateSchematicRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CreateSchematicRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *CreateSchematicRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.MetaValues) > 0 {
+ for k := range m.MetaValues {
+ v := m.MetaValues[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(k))
+ i--
+ dAtA[i] = 0x8
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.ExtraKernelArgs) > 0 {
+ for iNdEx := len(m.ExtraKernelArgs) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ExtraKernelArgs[iNdEx])
+ copy(dAtA[i:], m.ExtraKernelArgs[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ExtraKernelArgs[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Extensions) > 0 {
+ for iNdEx := len(m.Extensions) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Extensions[iNdEx])
+ copy(dAtA[i:], m.Extensions[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Extensions[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CreateSchematicResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CreateSchematicResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *CreateSchematicResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.PxeUrl) > 0 {
+ i -= len(m.PxeUrl)
+ copy(dAtA[i:], m.PxeUrl)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PxeUrl)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.SchematicId) > 0 {
+ i -= len(m.SchematicId)
+ copy(dAtA[i:], m.SchematicId)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SchematicId)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubeconfigResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Kubeconfig)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *TalosconfigResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Talosconfig)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *OmniconfigResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Omniconfig)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineLogsRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.MachineId)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Follow {
+ n += 2
+ }
+ if m.TailLines != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.TailLines))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ValidateConfigRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Config)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *TalosconfigRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Admin {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *CreateServiceAccountRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ArmoredPgpPublicKey)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.UseUserRole {
+ n += 2
+ }
+ l = len(m.Role)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *CreateServiceAccountResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.PublicKeyId)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *RenewServiceAccountRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ArmoredPgpPublicKey)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *RenewServiceAccountResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.PublicKeyId)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *DestroyServiceAccountRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Armored)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Expiration != nil {
+ l = (*timestamppb1.Timestamp)(m.Expiration).SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ListServiceAccountsResponse_ServiceAccount) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.PgpPublicKeys) > 0 {
+ for _, e := range m.PgpPublicKeys {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ l = len(m.Role)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ListServiceAccountsResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.ServiceAccounts) > 0 {
+ for _, e := range m.ServiceAccounts {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubeconfigRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.ServiceAccount {
+ n += 2
+ }
+ if m.ServiceAccountTtl != nil {
+ l = (*durationpb1.Duration)(m.ServiceAccountTtl).SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ServiceAccountUser)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.ServiceAccountGroups) > 0 {
+ for _, s := range m.ServiceAccountGroups {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubernetesUpgradePreChecksRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.NewVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubernetesUpgradePreChecksResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Ok {
+ n += 2
+ }
+ l = len(m.Reason)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubernetesSyncManifestRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.DryRun {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubernetesSyncManifestResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.ResponseType != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.ResponseType))
+ }
+ l = len(m.Path)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Object)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Diff)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Skipped {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *CreateSchematicRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Extensions) > 0 {
+ for _, s := range m.Extensions {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ if len(m.ExtraKernelArgs) > 0 {
+ for _, s := range m.ExtraKernelArgs {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ if len(m.MetaValues) > 0 {
+ for k, v := range m.MetaValues {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + protohelpers.SizeOfVarint(uint64(k)) + 1 + len(v) + protohelpers.SizeOfVarint(uint64(len(v)))
+ n += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *CreateSchematicResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.SchematicId)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.PxeUrl)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubeconfigResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubeconfigResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubeconfigResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Kubeconfig", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Kubeconfig = append(m.Kubeconfig[:0], dAtA[iNdEx:postIndex]...)
+ if m.Kubeconfig == nil {
+ m.Kubeconfig = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TalosconfigResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TalosconfigResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TalosconfigResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Talosconfig", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Talosconfig = append(m.Talosconfig[:0], dAtA[iNdEx:postIndex]...)
+ if m.Talosconfig == nil {
+ m.Talosconfig = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *OmniconfigResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: OmniconfigResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: OmniconfigResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Omniconfig", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Omniconfig = append(m.Omniconfig[:0], dAtA[iNdEx:postIndex]...)
+ if m.Omniconfig == nil {
+ m.Omniconfig = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineLogsRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineLogsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineLogsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MachineId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.MachineId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Follow", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Follow = bool(v != 0)
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TailLines", wireType)
+ }
+ m.TailLines = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TailLines |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ValidateConfigRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ValidateConfigRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ValidateConfigRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Config = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TalosconfigRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TalosconfigRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TalosconfigRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Admin", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Admin = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CreateServiceAccountRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CreateServiceAccountRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CreateServiceAccountRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ArmoredPgpPublicKey", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ArmoredPgpPublicKey = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field UseUserRole", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.UseUserRole = bool(v != 0)
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Role = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CreateServiceAccountResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CreateServiceAccountResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CreateServiceAccountResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PublicKeyId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PublicKeyId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RenewServiceAccountRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RenewServiceAccountRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RenewServiceAccountRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ArmoredPgpPublicKey", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ArmoredPgpPublicKey = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RenewServiceAccountResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RenewServiceAccountResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RenewServiceAccountResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PublicKeyId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PublicKeyId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DestroyServiceAccountRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DestroyServiceAccountRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DestroyServiceAccountRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ListServiceAccountsResponse_ServiceAccount_PgpPublicKey) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ListServiceAccountsResponse_ServiceAccount_PgpPublicKey: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ListServiceAccountsResponse_ServiceAccount_PgpPublicKey: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Armored", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Armored = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Expiration", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Expiration == nil {
+ m.Expiration = ×tamppb.Timestamp{}
+ }
+ if err := (*timestamppb1.Timestamp)(m.Expiration).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ListServiceAccountsResponse_ServiceAccount) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ListServiceAccountsResponse_ServiceAccount: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ListServiceAccountsResponse_ServiceAccount: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PgpPublicKeys", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PgpPublicKeys = append(m.PgpPublicKeys, &ListServiceAccountsResponse_ServiceAccount_PgpPublicKey{})
+ if err := m.PgpPublicKeys[len(m.PgpPublicKeys)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Role = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ListServiceAccountsResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ListServiceAccountsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ListServiceAccountsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccounts", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ServiceAccounts = append(m.ServiceAccounts, &ListServiceAccountsResponse_ServiceAccount{})
+ if err := m.ServiceAccounts[len(m.ServiceAccounts)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubeconfigRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubeconfigRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubeconfigRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccount", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ServiceAccount = bool(v != 0)
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountTtl", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ServiceAccountTtl == nil {
+ m.ServiceAccountTtl = &durationpb.Duration{}
+ }
+ if err := (*durationpb1.Duration)(m.ServiceAccountTtl).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountUser", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ServiceAccountUser = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountGroups", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ServiceAccountGroups = append(m.ServiceAccountGroups, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubernetesUpgradePreChecksRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubernetesUpgradePreChecksRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubernetesUpgradePreChecksRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NewVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.NewVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubernetesUpgradePreChecksResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubernetesUpgradePreChecksResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubernetesUpgradePreChecksResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Ok", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Ok = bool(v != 0)
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Reason = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubernetesSyncManifestRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubernetesSyncManifestRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubernetesSyncManifestRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DryRun", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.DryRun = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubernetesSyncManifestResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubernetesSyncManifestResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubernetesSyncManifestResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ResponseType", wireType)
+ }
+ m.ResponseType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ResponseType |= KubernetesSyncManifestResponse_ResponseType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Path = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Object", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Object = append(m.Object[:0], dAtA[iNdEx:postIndex]...)
+ if m.Object == nil {
+ m.Object = []byte{}
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Diff", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Diff = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Skipped", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Skipped = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CreateSchematicRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CreateSchematicRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CreateSchematicRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Extensions", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Extensions = append(m.Extensions, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ExtraKernelArgs", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ExtraKernelArgs = append(m.ExtraKernelArgs, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MetaValues", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.MetaValues == nil {
+ m.MetaValues = make(map[uint32]string)
+ }
+ var mapkey uint32
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapkey |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.MetaValues[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CreateSchematicResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CreateSchematicResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CreateSchematicResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SchematicId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SchematicId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PxeUrl", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PxeUrl = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
diff --git a/client/api/omni/oidc/oidc.pb.go b/client/api/omni/oidc/oidc.pb.go
new file mode 100644
index 000000000..4567c3163
--- /dev/null
+++ b/client/api/omni/oidc/oidc.pb.go
@@ -0,0 +1,223 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.32.0
+// protoc v4.24.4
+// source: omni/oidc/oidc.proto
+
+package oidc
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ _ "google.golang.org/protobuf/types/known/emptypb"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type AuthenticateRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Auth Request ID.
+ AuthRequestId string `protobuf:"bytes,1,opt,name=auth_request_id,json=authRequestId,proto3" json:"auth_request_id,omitempty"`
+}
+
+func (x *AuthenticateRequest) Reset() {
+ *x = AuthenticateRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_oidc_oidc_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AuthenticateRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AuthenticateRequest) ProtoMessage() {}
+
+func (x *AuthenticateRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_oidc_oidc_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AuthenticateRequest.ProtoReflect.Descriptor instead.
+func (*AuthenticateRequest) Descriptor() ([]byte, []int) {
+ return file_omni_oidc_oidc_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *AuthenticateRequest) GetAuthRequestId() string {
+ if x != nil {
+ return x.AuthRequestId
+ }
+ return ""
+}
+
+type AuthenticateResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // URL to redirect the user to.
+ RedirectUrl string `protobuf:"bytes,1,opt,name=redirect_url,json=redirectUrl,proto3" json:"redirect_url,omitempty"`
+}
+
+func (x *AuthenticateResponse) Reset() {
+ *x = AuthenticateResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_oidc_oidc_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AuthenticateResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AuthenticateResponse) ProtoMessage() {}
+
+func (x *AuthenticateResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_oidc_oidc_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AuthenticateResponse.ProtoReflect.Descriptor instead.
+func (*AuthenticateResponse) Descriptor() ([]byte, []int) {
+ return file_omni_oidc_oidc_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *AuthenticateResponse) GetRedirectUrl() string {
+ if x != nil {
+ return x.RedirectUrl
+ }
+ return ""
+}
+
+var File_omni_oidc_oidc_proto protoreflect.FileDescriptor
+
+var file_omni_oidc_oidc_proto_rawDesc = []byte{
+ 0x0a, 0x14, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x6f, 0x69, 0x64, 0x63, 0x2f, 0x6f, 0x69, 0x64, 0x63,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x6f, 0x69, 0x64, 0x63, 0x1a, 0x1b, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d,
+ 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3d, 0x0a, 0x13, 0x41, 0x75, 0x74,
+ 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x39, 0x0a, 0x14, 0x41, 0x75, 0x74, 0x68,
+ 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6c,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
+ 0x55, 0x72, 0x6c, 0x32, 0x54, 0x0a, 0x0b, 0x4f, 0x49, 0x44, 0x43, 0x53, 0x65, 0x72, 0x76, 0x69,
+ 0x63, 0x65, 0x12, 0x45, 0x0a, 0x0c, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61,
+ 0x74, 0x65, 0x12, 0x19, 0x2e, 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e,
+ 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e,
+ 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74,
+ 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74,
+ 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x61,
+ 0x62, 0x73, 0x2f, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2f, 0x61,
+ 0x70, 0x69, 0x2f, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x6f, 0x69, 0x64, 0x63, 0x62, 0x06, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_omni_oidc_oidc_proto_rawDescOnce sync.Once
+ file_omni_oidc_oidc_proto_rawDescData = file_omni_oidc_oidc_proto_rawDesc
+)
+
+func file_omni_oidc_oidc_proto_rawDescGZIP() []byte {
+ file_omni_oidc_oidc_proto_rawDescOnce.Do(func() {
+ file_omni_oidc_oidc_proto_rawDescData = protoimpl.X.CompressGZIP(file_omni_oidc_oidc_proto_rawDescData)
+ })
+ return file_omni_oidc_oidc_proto_rawDescData
+}
+
+var file_omni_oidc_oidc_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_omni_oidc_oidc_proto_goTypes = []interface{}{
+ (*AuthenticateRequest)(nil), // 0: oidc.AuthenticateRequest
+ (*AuthenticateResponse)(nil), // 1: oidc.AuthenticateResponse
+}
+var file_omni_oidc_oidc_proto_depIdxs = []int32{
+ 0, // 0: oidc.OIDCService.Authenticate:input_type -> oidc.AuthenticateRequest
+ 1, // 1: oidc.OIDCService.Authenticate:output_type -> oidc.AuthenticateResponse
+ 1, // [1:2] is the sub-list for method output_type
+ 0, // [0:1] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_omni_oidc_oidc_proto_init() }
+func file_omni_oidc_oidc_proto_init() {
+ if File_omni_oidc_oidc_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_omni_oidc_oidc_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AuthenticateRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_oidc_oidc_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AuthenticateResponse); 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{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_omni_oidc_oidc_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 2,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_omni_oidc_oidc_proto_goTypes,
+ DependencyIndexes: file_omni_oidc_oidc_proto_depIdxs,
+ MessageInfos: file_omni_oidc_oidc_proto_msgTypes,
+ }.Build()
+ File_omni_oidc_oidc_proto = out.File
+ file_omni_oidc_oidc_proto_rawDesc = nil
+ file_omni_oidc_oidc_proto_goTypes = nil
+ file_omni_oidc_oidc_proto_depIdxs = nil
+}
diff --git a/client/api/omni/oidc/oidc.pb.gw.go b/client/api/omni/oidc/oidc.pb.gw.go
new file mode 100644
index 000000000..399145aa9
--- /dev/null
+++ b/client/api/omni/oidc/oidc.pb.gw.go
@@ -0,0 +1,163 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: omni/oidc/oidc.proto
+
+/*
+Package oidc is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package oidc
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_OIDCService_Authenticate_0(ctx context.Context, marshaler runtime.Marshaler, client OIDCServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq AuthenticateRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Authenticate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_OIDCService_Authenticate_0(ctx context.Context, marshaler runtime.Marshaler, server OIDCServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq AuthenticateRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Authenticate(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterOIDCServiceHandlerServer registers the http handlers for service OIDCService to "mux".
+// UnaryRPC :call OIDCServiceServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOIDCServiceHandlerFromEndpoint instead.
+func RegisterOIDCServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OIDCServiceServer) error {
+
+ mux.Handle("POST", pattern_OIDCService_Authenticate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/oidc.OIDCService/Authenticate", runtime.WithHTTPPathPattern("/oidc.OIDCService/Authenticate"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_OIDCService_Authenticate_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_OIDCService_Authenticate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterOIDCServiceHandlerFromEndpoint is same as RegisterOIDCServiceHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterOIDCServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.DialContext(ctx, endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterOIDCServiceHandler(ctx, mux, conn)
+}
+
+// RegisterOIDCServiceHandler registers the http handlers for service OIDCService to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterOIDCServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterOIDCServiceHandlerClient(ctx, mux, NewOIDCServiceClient(conn))
+}
+
+// RegisterOIDCServiceHandlerClient registers the http handlers for service OIDCService
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OIDCServiceClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OIDCServiceClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "OIDCServiceClient" to call the correct interceptors.
+func RegisterOIDCServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client OIDCServiceClient) error {
+
+ mux.Handle("POST", pattern_OIDCService_Authenticate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/oidc.OIDCService/Authenticate", runtime.WithHTTPPathPattern("/oidc.OIDCService/Authenticate"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_OIDCService_Authenticate_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_OIDCService_Authenticate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_OIDCService_Authenticate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"oidc.OIDCService", "Authenticate"}, ""))
+)
+
+var (
+ forward_OIDCService_Authenticate_0 = runtime.ForwardResponseMessage
+)
diff --git a/client/api/omni/oidc/oidc.proto b/client/api/omni/oidc/oidc.proto
new file mode 100644
index 000000000..19565e357
--- /dev/null
+++ b/client/api/omni/oidc/oidc.proto
@@ -0,0 +1,21 @@
+syntax = "proto3";
+package oidc;
+
+option go_package = "github.com/siderolabs/omni/client/api/omni/oidc";
+
+import "google/protobuf/empty.proto";
+
+message AuthenticateRequest {
+ // Auth Request ID.
+ string auth_request_id = 1;
+}
+
+message AuthenticateResponse {
+ // URL to redirect the user to.
+ string redirect_url = 1;
+}
+
+service OIDCService {
+ // Authenticate an OIDC auth request by ID.
+ rpc Authenticate(AuthenticateRequest) returns (AuthenticateResponse);
+}
diff --git a/client/api/omni/oidc/oidc_grpc.pb.go b/client/api/omni/oidc/oidc_grpc.pb.go
new file mode 100644
index 000000000..e1526099d
--- /dev/null
+++ b/client/api/omni/oidc/oidc_grpc.pb.go
@@ -0,0 +1,112 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v4.24.4
+// source: omni/oidc/oidc.proto
+
+package oidc
+
+import (
+ context "context"
+
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ OIDCService_Authenticate_FullMethodName = "/oidc.OIDCService/Authenticate"
+)
+
+// OIDCServiceClient is the client API for OIDCService 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 OIDCServiceClient interface {
+ // Authenticate an OIDC auth request by ID.
+ Authenticate(ctx context.Context, in *AuthenticateRequest, opts ...grpc.CallOption) (*AuthenticateResponse, error)
+}
+
+type oIDCServiceClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewOIDCServiceClient(cc grpc.ClientConnInterface) OIDCServiceClient {
+ return &oIDCServiceClient{cc}
+}
+
+func (c *oIDCServiceClient) Authenticate(ctx context.Context, in *AuthenticateRequest, opts ...grpc.CallOption) (*AuthenticateResponse, error) {
+ out := new(AuthenticateResponse)
+ err := c.cc.Invoke(ctx, OIDCService_Authenticate_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// OIDCServiceServer is the server API for OIDCService service.
+// All implementations must embed UnimplementedOIDCServiceServer
+// for forward compatibility
+type OIDCServiceServer interface {
+ // Authenticate an OIDC auth request by ID.
+ Authenticate(context.Context, *AuthenticateRequest) (*AuthenticateResponse, error)
+ mustEmbedUnimplementedOIDCServiceServer()
+}
+
+// UnimplementedOIDCServiceServer must be embedded to have forward compatible implementations.
+type UnimplementedOIDCServiceServer struct {
+}
+
+func (UnimplementedOIDCServiceServer) Authenticate(context.Context, *AuthenticateRequest) (*AuthenticateResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Authenticate not implemented")
+}
+func (UnimplementedOIDCServiceServer) mustEmbedUnimplementedOIDCServiceServer() {}
+
+// UnsafeOIDCServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to OIDCServiceServer will
+// result in compilation errors.
+type UnsafeOIDCServiceServer interface {
+ mustEmbedUnimplementedOIDCServiceServer()
+}
+
+func RegisterOIDCServiceServer(s grpc.ServiceRegistrar, srv OIDCServiceServer) {
+ s.RegisterService(&OIDCService_ServiceDesc, srv)
+}
+
+func _OIDCService_Authenticate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AuthenticateRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OIDCServiceServer).Authenticate(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: OIDCService_Authenticate_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OIDCServiceServer).Authenticate(ctx, req.(*AuthenticateRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// OIDCService_ServiceDesc is the grpc.ServiceDesc for OIDCService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var OIDCService_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "oidc.OIDCService",
+ HandlerType: (*OIDCServiceServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Authenticate",
+ Handler: _OIDCService_Authenticate_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "omni/oidc/oidc.proto",
+}
diff --git a/client/api/omni/oidc/oidc_vtproto.pb.go b/client/api/omni/oidc/oidc_vtproto.pb.go
new file mode 100644
index 000000000..dc29e5bd4
--- /dev/null
+++ b/client/api/omni/oidc/oidc_vtproto.pb.go
@@ -0,0 +1,368 @@
+// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.
+// protoc-gen-go-vtproto version: v0.6.0
+// source: omni/oidc/oidc.proto
+
+package oidc
+
+import (
+ fmt "fmt"
+ io "io"
+
+ protohelpers "github.com/planetscale/vtprotobuf/protohelpers"
+ proto "google.golang.org/protobuf/proto"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+func (m *AuthenticateRequest) CloneVT() *AuthenticateRequest {
+ if m == nil {
+ return (*AuthenticateRequest)(nil)
+ }
+ r := new(AuthenticateRequest)
+ r.AuthRequestId = m.AuthRequestId
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AuthenticateRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AuthenticateResponse) CloneVT() *AuthenticateResponse {
+ if m == nil {
+ return (*AuthenticateResponse)(nil)
+ }
+ r := new(AuthenticateResponse)
+ r.RedirectUrl = m.RedirectUrl
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AuthenticateResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (this *AuthenticateRequest) EqualVT(that *AuthenticateRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.AuthRequestId != that.AuthRequestId {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AuthenticateRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AuthenticateRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AuthenticateResponse) EqualVT(that *AuthenticateResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.RedirectUrl != that.RedirectUrl {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AuthenticateResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AuthenticateResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (m *AuthenticateRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AuthenticateRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AuthenticateRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.AuthRequestId) > 0 {
+ i -= len(m.AuthRequestId)
+ copy(dAtA[i:], m.AuthRequestId)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.AuthRequestId)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AuthenticateResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AuthenticateResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AuthenticateResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.RedirectUrl) > 0 {
+ i -= len(m.RedirectUrl)
+ copy(dAtA[i:], m.RedirectUrl)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RedirectUrl)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AuthenticateRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.AuthRequestId)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AuthenticateResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.RedirectUrl)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AuthenticateRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AuthenticateRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AuthenticateRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AuthRequestId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.AuthRequestId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AuthenticateResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AuthenticateResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AuthenticateResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RedirectUrl", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.RedirectUrl = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
diff --git a/client/api/omni/resources/resources.pb.go b/client/api/omni/resources/resources.pb.go
new file mode 100644
index 000000000..e62bba205
--- /dev/null
+++ b/client/api/omni/resources/resources.pb.go
@@ -0,0 +1,1315 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.32.0
+// protoc v4.24.4
+// source: omni/resources/resources.proto
+
+package resources
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ v1alpha1 "github.com/cosi-project/runtime/api/v1alpha1"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+
+ _ "github.com/siderolabs/omni/client/api/common"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type EventType int32
+
+const (
+ EventType_UNKNOWN EventType = 0
+ EventType_CREATED EventType = 1
+ EventType_UPDATED EventType = 2
+ EventType_DESTROYED EventType = 3
+ EventType_BOOTSTRAPPED EventType = 4
+)
+
+// Enum value maps for EventType.
+var (
+ EventType_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "CREATED",
+ 2: "UPDATED",
+ 3: "DESTROYED",
+ 4: "BOOTSTRAPPED",
+ }
+ EventType_value = map[string]int32{
+ "UNKNOWN": 0,
+ "CREATED": 1,
+ "UPDATED": 2,
+ "DESTROYED": 3,
+ "BOOTSTRAPPED": 4,
+ }
+)
+
+func (x EventType) Enum() *EventType {
+ p := new(EventType)
+ *p = x
+ return p
+}
+
+func (x EventType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (EventType) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_resources_resources_proto_enumTypes[0].Descriptor()
+}
+
+func (EventType) Type() protoreflect.EnumType {
+ return &file_omni_resources_resources_proto_enumTypes[0]
+}
+
+func (x EventType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventType.Descriptor instead.
+func (EventType) EnumDescriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{0}
+}
+
+type Resource struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Metadata *v1alpha1.Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
+ Spec string `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"`
+}
+
+func (x *Resource) Reset() {
+ *x = Resource{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_resources_resources_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Resource) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Resource) ProtoMessage() {}
+
+func (x *Resource) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_resources_resources_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Resource.ProtoReflect.Descriptor instead.
+func (*Resource) Descriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Resource) GetMetadata() *v1alpha1.Metadata {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
+func (x *Resource) GetSpec() string {
+ if x != nil {
+ return x.Spec
+ }
+ return ""
+}
+
+type GetRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
+ Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *GetRequest) Reset() {
+ *x = GetRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_resources_resources_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetRequest) ProtoMessage() {}
+
+func (x *GetRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_resources_resources_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetRequest.ProtoReflect.Descriptor instead.
+func (*GetRequest) Descriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *GetRequest) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *GetRequest) GetType() string {
+ if x != nil {
+ return x.Type
+ }
+ return ""
+}
+
+func (x *GetRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type GetResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Body should contain JSON encoded spec.
+ Body string `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"`
+}
+
+func (x *GetResponse) Reset() {
+ *x = GetResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_resources_resources_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetResponse) ProtoMessage() {}
+
+func (x *GetResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_resources_resources_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetResponse.ProtoReflect.Descriptor instead.
+func (*GetResponse) Descriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *GetResponse) GetBody() string {
+ if x != nil {
+ return x.Body
+ }
+ return ""
+}
+
+type ListRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
+ Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"`
+ Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"`
+ SortByField string `protobuf:"bytes,5,opt,name=sort_by_field,json=sortByField,proto3" json:"sort_by_field,omitempty"`
+ SortDescending bool `protobuf:"varint,6,opt,name=sort_descending,json=sortDescending,proto3" json:"sort_descending,omitempty"`
+ SearchFor []string `protobuf:"bytes,7,rep,name=search_for,json=searchFor,proto3" json:"search_for,omitempty"`
+}
+
+func (x *ListRequest) Reset() {
+ *x = ListRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_resources_resources_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListRequest) ProtoMessage() {}
+
+func (x *ListRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_resources_resources_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListRequest.ProtoReflect.Descriptor instead.
+func (*ListRequest) Descriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *ListRequest) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *ListRequest) GetType() string {
+ if x != nil {
+ return x.Type
+ }
+ return ""
+}
+
+func (x *ListRequest) GetOffset() int32 {
+ if x != nil {
+ return x.Offset
+ }
+ return 0
+}
+
+func (x *ListRequest) GetLimit() int32 {
+ if x != nil {
+ return x.Limit
+ }
+ return 0
+}
+
+func (x *ListRequest) GetSortByField() string {
+ if x != nil {
+ return x.SortByField
+ }
+ return ""
+}
+
+func (x *ListRequest) GetSortDescending() bool {
+ if x != nil {
+ return x.SortDescending
+ }
+ return false
+}
+
+func (x *ListRequest) GetSearchFor() []string {
+ if x != nil {
+ return x.SearchFor
+ }
+ return nil
+}
+
+type ListResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Items should contain JSON encoded resources.
+ Items []string `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+ Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+}
+
+func (x *ListResponse) Reset() {
+ *x = ListResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_resources_resources_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListResponse) ProtoMessage() {}
+
+func (x *ListResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_resources_resources_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListResponse.ProtoReflect.Descriptor instead.
+func (*ListResponse) Descriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *ListResponse) GetItems() []string {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+func (x *ListResponse) GetTotal() int32 {
+ if x != nil {
+ return x.Total
+ }
+ return 0
+}
+
+// Event is emitted when resource changes.
+// It's the same as COSI Event, but encodes resources into JSON.
+type Event struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Resource string `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"`
+ Old string `protobuf:"bytes,2,opt,name=old,proto3" json:"old,omitempty"`
+ EventType EventType `protobuf:"varint,3,opt,name=event_type,json=eventType,proto3,enum=omni.resources.EventType" json:"event_type,omitempty"`
+}
+
+func (x *Event) Reset() {
+ *x = Event{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_resources_resources_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Event) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Event) ProtoMessage() {}
+
+func (x *Event) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_resources_resources_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Event.ProtoReflect.Descriptor instead.
+func (*Event) Descriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *Event) GetResource() string {
+ if x != nil {
+ return x.Resource
+ }
+ return ""
+}
+
+func (x *Event) GetOld() string {
+ if x != nil {
+ return x.Old
+ }
+ return ""
+}
+
+func (x *Event) GetEventType() EventType {
+ if x != nil {
+ return x.EventType
+ }
+ return EventType_UNKNOWN
+}
+
+type WatchRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
+ Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`
+ TailEvents int32 `protobuf:"varint,4,opt,name=tail_events,json=tailEvents,proto3" json:"tail_events,omitempty"`
+ Offset int32 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"`
+ Limit int32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"`
+ SortByField string `protobuf:"bytes,7,opt,name=sort_by_field,json=sortByField,proto3" json:"sort_by_field,omitempty"`
+ SortDescending bool `protobuf:"varint,8,opt,name=sort_descending,json=sortDescending,proto3" json:"sort_descending,omitempty"`
+ SearchFor []string `protobuf:"bytes,9,rep,name=search_for,json=searchFor,proto3" json:"search_for,omitempty"`
+}
+
+func (x *WatchRequest) Reset() {
+ *x = WatchRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_resources_resources_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WatchRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WatchRequest) ProtoMessage() {}
+
+func (x *WatchRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_resources_resources_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WatchRequest.ProtoReflect.Descriptor instead.
+func (*WatchRequest) Descriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *WatchRequest) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *WatchRequest) GetType() string {
+ if x != nil {
+ return x.Type
+ }
+ return ""
+}
+
+func (x *WatchRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *WatchRequest) GetTailEvents() int32 {
+ if x != nil {
+ return x.TailEvents
+ }
+ return 0
+}
+
+func (x *WatchRequest) GetOffset() int32 {
+ if x != nil {
+ return x.Offset
+ }
+ return 0
+}
+
+func (x *WatchRequest) GetLimit() int32 {
+ if x != nil {
+ return x.Limit
+ }
+ return 0
+}
+
+func (x *WatchRequest) GetSortByField() string {
+ if x != nil {
+ return x.SortByField
+ }
+ return ""
+}
+
+func (x *WatchRequest) GetSortDescending() bool {
+ if x != nil {
+ return x.SortDescending
+ }
+ return false
+}
+
+func (x *WatchRequest) GetSearchFor() []string {
+ if x != nil {
+ return x.SearchFor
+ }
+ return nil
+}
+
+type WatchResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"`
+ Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+ SortFieldData string `protobuf:"bytes,3,opt,name=sort_field_data,json=sortFieldData,proto3" json:"sort_field_data,omitempty"`
+ SortDescending bool `protobuf:"varint,4,opt,name=sort_descending,json=sortDescending,proto3" json:"sort_descending,omitempty"`
+}
+
+func (x *WatchResponse) Reset() {
+ *x = WatchResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_resources_resources_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WatchResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WatchResponse) ProtoMessage() {}
+
+func (x *WatchResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_resources_resources_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WatchResponse.ProtoReflect.Descriptor instead.
+func (*WatchResponse) Descriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *WatchResponse) GetEvent() *Event {
+ if x != nil {
+ return x.Event
+ }
+ return nil
+}
+
+func (x *WatchResponse) GetTotal() int32 {
+ if x != nil {
+ return x.Total
+ }
+ return 0
+}
+
+func (x *WatchResponse) GetSortFieldData() string {
+ if x != nil {
+ return x.SortFieldData
+ }
+ return ""
+}
+
+func (x *WatchResponse) GetSortDescending() bool {
+ if x != nil {
+ return x.SortDescending
+ }
+ return false
+}
+
+type CreateRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Resource *Resource `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"`
+}
+
+func (x *CreateRequest) Reset() {
+ *x = CreateRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_resources_resources_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateRequest) ProtoMessage() {}
+
+func (x *CreateRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_resources_resources_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateRequest.ProtoReflect.Descriptor instead.
+func (*CreateRequest) Descriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *CreateRequest) GetResource() *Resource {
+ if x != nil {
+ return x.Resource
+ }
+ return nil
+}
+
+type CreateResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *CreateResponse) Reset() {
+ *x = CreateResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_resources_resources_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateResponse) ProtoMessage() {}
+
+func (x *CreateResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_resources_resources_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateResponse.ProtoReflect.Descriptor instead.
+func (*CreateResponse) Descriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{9}
+}
+
+type UpdateRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CurrentVersion string `protobuf:"bytes,1,opt,name=currentVersion,proto3" json:"currentVersion,omitempty"`
+ Resource *Resource `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"`
+}
+
+func (x *UpdateRequest) Reset() {
+ *x = UpdateRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_resources_resources_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateRequest) ProtoMessage() {}
+
+func (x *UpdateRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_resources_resources_proto_msgTypes[10]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateRequest.ProtoReflect.Descriptor instead.
+func (*UpdateRequest) Descriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *UpdateRequest) GetCurrentVersion() string {
+ if x != nil {
+ return x.CurrentVersion
+ }
+ return ""
+}
+
+func (x *UpdateRequest) GetResource() *Resource {
+ if x != nil {
+ return x.Resource
+ }
+ return nil
+}
+
+type UpdateResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *UpdateResponse) Reset() {
+ *x = UpdateResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_resources_resources_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateResponse) ProtoMessage() {}
+
+func (x *UpdateResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_resources_resources_proto_msgTypes[11]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateResponse.ProtoReflect.Descriptor instead.
+func (*UpdateResponse) Descriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{11}
+}
+
+type DeleteRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
+ Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeleteRequest) Reset() {
+ *x = DeleteRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_resources_resources_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteRequest) ProtoMessage() {}
+
+func (x *DeleteRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_resources_resources_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteRequest.ProtoReflect.Descriptor instead.
+func (*DeleteRequest) Descriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *DeleteRequest) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *DeleteRequest) GetType() string {
+ if x != nil {
+ return x.Type
+ }
+ return ""
+}
+
+func (x *DeleteRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type DeleteResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *DeleteResponse) Reset() {
+ *x = DeleteResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_resources_resources_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteResponse) ProtoMessage() {}
+
+func (x *DeleteResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_resources_resources_proto_msgTypes[13]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteResponse.ProtoReflect.Descriptor instead.
+func (*DeleteResponse) Descriptor() ([]byte, []int) {
+ return file_omni_resources_resources_proto_rawDescGZIP(), []int{13}
+}
+
+var File_omni_resources_resources_proto protoreflect.FileDescriptor
+
+var file_omni_resources_resources_proto_rawDesc = []byte{
+ 0x0a, 0x1e, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
+ 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x12, 0x0e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
+ 0x1a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x53, 0x0a, 0x08,
+ 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x73,
+ 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a,
+ 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x70, 0x65,
+ 0x63, 0x22, 0x4e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a,
+ 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70,
+ 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+ 0x64, 0x22, 0x21, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x62, 0x6f, 0x64, 0x79, 0x22, 0xd9, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x14,
+ 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c,
+ 0x69, 0x6d, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x5f,
+ 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6f, 0x72,
+ 0x74, 0x42, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x72, 0x74,
+ 0x5f, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x0e, 0x73, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x72, 0x18,
+ 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x6f, 0x72,
+ 0x22, 0x3a, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x14, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x6f, 0x0a, 0x05,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x6f, 0x6c, 0x64, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x72,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79,
+ 0x70, 0x65, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x8b, 0x02,
+ 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c,
+ 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04,
+ 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
+ 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x69, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d,
+ 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12,
+ 0x22, 0x0a, 0x0d, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x46, 0x69,
+ 0x65, 0x6c, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63,
+ 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x6f,
+ 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x09, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x22, 0xa3, 0x01, 0x0a, 0x0d,
+ 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a,
+ 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f,
+ 0x6d, 0x6e, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x45, 0x76,
+ 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f,
+ 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64,
+ 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x72, 0x74, 0x46,
+ 0x69, 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x72, 0x74,
+ 0x5f, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x0e, 0x73, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x22, 0x45, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x34, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x0d, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x63,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,
+ 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x10, 0x0a, 0x0e, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x0a, 0x0d, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79,
+ 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e,
+ 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x10,
+ 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x2a, 0x53, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a,
+ 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x52,
+ 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x50, 0x44, 0x41, 0x54,
+ 0x45, 0x44, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x45,
+ 0x44, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50,
+ 0x50, 0x45, 0x44, 0x10, 0x04, 0x32, 0x82, 0x04, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x03, 0x47, 0x65, 0x74,
+ 0x12, 0x1a, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6f,
+ 0x6d, 0x6e, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65,
+ 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x04, 0x4c, 0x69, 0x73,
+ 0x74, 0x12, 0x1b, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c,
+ 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e,
+ 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x06,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12,
+ 0x1d, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
+ 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e,
+ 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e,
+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47,
+ 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x72,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x08, 0x54, 0x65, 0x61, 0x72, 0x64,
+ 0x6f, 0x77, 0x6e, 0x12, 0x1d, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x46, 0x0a, 0x05, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1c, 0x2e, 0x6f, 0x6d,
+ 0x6e, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x57, 0x61, 0x74,
+ 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6f, 0x6d, 0x6e, 0x69,
+ 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69,
+ 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c,
+ 0x61, 0x62, 0x73, 0x2f, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2f,
+ 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_omni_resources_resources_proto_rawDescOnce sync.Once
+ file_omni_resources_resources_proto_rawDescData = file_omni_resources_resources_proto_rawDesc
+)
+
+func file_omni_resources_resources_proto_rawDescGZIP() []byte {
+ file_omni_resources_resources_proto_rawDescOnce.Do(func() {
+ file_omni_resources_resources_proto_rawDescData = protoimpl.X.CompressGZIP(file_omni_resources_resources_proto_rawDescData)
+ })
+ return file_omni_resources_resources_proto_rawDescData
+}
+
+var file_omni_resources_resources_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_omni_resources_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
+var file_omni_resources_resources_proto_goTypes = []interface{}{
+ (EventType)(0), // 0: omni.resources.EventType
+ (*Resource)(nil), // 1: omni.resources.Resource
+ (*GetRequest)(nil), // 2: omni.resources.GetRequest
+ (*GetResponse)(nil), // 3: omni.resources.GetResponse
+ (*ListRequest)(nil), // 4: omni.resources.ListRequest
+ (*ListResponse)(nil), // 5: omni.resources.ListResponse
+ (*Event)(nil), // 6: omni.resources.Event
+ (*WatchRequest)(nil), // 7: omni.resources.WatchRequest
+ (*WatchResponse)(nil), // 8: omni.resources.WatchResponse
+ (*CreateRequest)(nil), // 9: omni.resources.CreateRequest
+ (*CreateResponse)(nil), // 10: omni.resources.CreateResponse
+ (*UpdateRequest)(nil), // 11: omni.resources.UpdateRequest
+ (*UpdateResponse)(nil), // 12: omni.resources.UpdateResponse
+ (*DeleteRequest)(nil), // 13: omni.resources.DeleteRequest
+ (*DeleteResponse)(nil), // 14: omni.resources.DeleteResponse
+ (*v1alpha1.Metadata)(nil), // 15: cosi.resource.Metadata
+}
+var file_omni_resources_resources_proto_depIdxs = []int32{
+ 15, // 0: omni.resources.Resource.metadata:type_name -> cosi.resource.Metadata
+ 0, // 1: omni.resources.Event.event_type:type_name -> omni.resources.EventType
+ 6, // 2: omni.resources.WatchResponse.event:type_name -> omni.resources.Event
+ 1, // 3: omni.resources.CreateRequest.resource:type_name -> omni.resources.Resource
+ 1, // 4: omni.resources.UpdateRequest.resource:type_name -> omni.resources.Resource
+ 2, // 5: omni.resources.ResourceService.Get:input_type -> omni.resources.GetRequest
+ 4, // 6: omni.resources.ResourceService.List:input_type -> omni.resources.ListRequest
+ 9, // 7: omni.resources.ResourceService.Create:input_type -> omni.resources.CreateRequest
+ 11, // 8: omni.resources.ResourceService.Update:input_type -> omni.resources.UpdateRequest
+ 13, // 9: omni.resources.ResourceService.Delete:input_type -> omni.resources.DeleteRequest
+ 13, // 10: omni.resources.ResourceService.Teardown:input_type -> omni.resources.DeleteRequest
+ 7, // 11: omni.resources.ResourceService.Watch:input_type -> omni.resources.WatchRequest
+ 3, // 12: omni.resources.ResourceService.Get:output_type -> omni.resources.GetResponse
+ 5, // 13: omni.resources.ResourceService.List:output_type -> omni.resources.ListResponse
+ 10, // 14: omni.resources.ResourceService.Create:output_type -> omni.resources.CreateResponse
+ 12, // 15: omni.resources.ResourceService.Update:output_type -> omni.resources.UpdateResponse
+ 14, // 16: omni.resources.ResourceService.Delete:output_type -> omni.resources.DeleteResponse
+ 14, // 17: omni.resources.ResourceService.Teardown:output_type -> omni.resources.DeleteResponse
+ 8, // 18: omni.resources.ResourceService.Watch:output_type -> omni.resources.WatchResponse
+ 12, // [12:19] is the sub-list for method output_type
+ 5, // [5:12] is the sub-list for method input_type
+ 5, // [5:5] is the sub-list for extension type_name
+ 5, // [5:5] is the sub-list for extension extendee
+ 0, // [0:5] is the sub-list for field type_name
+}
+
+func init() { file_omni_resources_resources_proto_init() }
+func file_omni_resources_resources_proto_init() {
+ if File_omni_resources_resources_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_omni_resources_resources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Resource); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_resources_resources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_resources_resources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_resources_resources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_resources_resources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_resources_resources_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Event); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_resources_resources_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WatchRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_resources_resources_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WatchResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_resources_resources_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_resources_resources_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_resources_resources_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_resources_resources_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_resources_resources_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_resources_resources_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteResponse); 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{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_omni_resources_resources_proto_rawDesc,
+ NumEnums: 1,
+ NumMessages: 14,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_omni_resources_resources_proto_goTypes,
+ DependencyIndexes: file_omni_resources_resources_proto_depIdxs,
+ EnumInfos: file_omni_resources_resources_proto_enumTypes,
+ MessageInfos: file_omni_resources_resources_proto_msgTypes,
+ }.Build()
+ File_omni_resources_resources_proto = out.File
+ file_omni_resources_resources_proto_rawDesc = nil
+ file_omni_resources_resources_proto_goTypes = nil
+ file_omni_resources_resources_proto_depIdxs = nil
+}
diff --git a/client/api/omni/resources/resources.pb.gw.go b/client/api/omni/resources/resources.pb.gw.go
new file mode 100644
index 000000000..cfe027261
--- /dev/null
+++ b/client/api/omni/resources/resources.pb.gw.go
@@ -0,0 +1,602 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: omni/resources/resources.proto
+
+/*
+Package resources is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package resources
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_ResourceService_Get_0(ctx context.Context, marshaler runtime.Marshaler, client ResourceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq GetRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Get(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ResourceService_Get_0(ctx context.Context, marshaler runtime.Marshaler, server ResourceServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq GetRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Get(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ResourceService_List_0(ctx context.Context, marshaler runtime.Marshaler, client ResourceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ListRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ResourceService_List_0(ctx context.Context, marshaler runtime.Marshaler, server ResourceServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ListRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ResourceService_Create_0(ctx context.Context, marshaler runtime.Marshaler, client ResourceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ResourceService_Create_0(ctx context.Context, marshaler runtime.Marshaler, server ResourceServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Create(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ResourceService_Update_0(ctx context.Context, marshaler runtime.Marshaler, client ResourceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq UpdateRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ResourceService_Update_0(ctx context.Context, marshaler runtime.Marshaler, server ResourceServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq UpdateRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Update(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ResourceService_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client ResourceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ResourceService_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server ResourceServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Delete(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ResourceService_Teardown_0(ctx context.Context, marshaler runtime.Marshaler, client ResourceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Teardown(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_ResourceService_Teardown_0(ctx context.Context, marshaler runtime.Marshaler, server ResourceServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Teardown(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_ResourceService_Watch_0(ctx context.Context, marshaler runtime.Marshaler, client ResourceServiceClient, req *http.Request, pathParams map[string]string) (ResourceService_WatchClient, runtime.ServerMetadata, error) {
+ var protoReq WatchRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ stream, err := client.Watch(ctx, &protoReq)
+ if err != nil {
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+ return stream, metadata, nil
+
+}
+
+// RegisterResourceServiceHandlerServer registers the http handlers for service ResourceService to "mux".
+// UnaryRPC :call ResourceServiceServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterResourceServiceHandlerFromEndpoint instead.
+func RegisterResourceServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ResourceServiceServer) error {
+
+ mux.Handle("POST", pattern_ResourceService_Get_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/omni.resources.ResourceService/Get", runtime.WithHTTPPathPattern("/omni.resources.ResourceService/Get"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ResourceService_Get_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ResourceService_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ResourceService_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/omni.resources.ResourceService/List", runtime.WithHTTPPathPattern("/omni.resources.ResourceService/List"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ResourceService_List_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ResourceService_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ResourceService_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/omni.resources.ResourceService/Create", runtime.WithHTTPPathPattern("/omni.resources.ResourceService/Create"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ResourceService_Create_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ResourceService_Create_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ResourceService_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/omni.resources.ResourceService/Update", runtime.WithHTTPPathPattern("/omni.resources.ResourceService/Update"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ResourceService_Update_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ResourceService_Update_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ResourceService_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/omni.resources.ResourceService/Delete", runtime.WithHTTPPathPattern("/omni.resources.ResourceService/Delete"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ResourceService_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ResourceService_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ResourceService_Teardown_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/omni.resources.ResourceService/Teardown", runtime.WithHTTPPathPattern("/omni.resources.ResourceService/Teardown"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_ResourceService_Teardown_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ResourceService_Teardown_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ResourceService_Watch_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport")
+ _, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ })
+
+ return nil
+}
+
+// RegisterResourceServiceHandlerFromEndpoint is same as RegisterResourceServiceHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterResourceServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.DialContext(ctx, endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterResourceServiceHandler(ctx, mux, conn)
+}
+
+// RegisterResourceServiceHandler registers the http handlers for service ResourceService to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterResourceServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterResourceServiceHandlerClient(ctx, mux, NewResourceServiceClient(conn))
+}
+
+// RegisterResourceServiceHandlerClient registers the http handlers for service ResourceService
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ResourceServiceClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ResourceServiceClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "ResourceServiceClient" to call the correct interceptors.
+func RegisterResourceServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ResourceServiceClient) error {
+
+ mux.Handle("POST", pattern_ResourceService_Get_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/omni.resources.ResourceService/Get", runtime.WithHTTPPathPattern("/omni.resources.ResourceService/Get"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ResourceService_Get_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ResourceService_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ResourceService_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/omni.resources.ResourceService/List", runtime.WithHTTPPathPattern("/omni.resources.ResourceService/List"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ResourceService_List_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ResourceService_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ResourceService_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/omni.resources.ResourceService/Create", runtime.WithHTTPPathPattern("/omni.resources.ResourceService/Create"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ResourceService_Create_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ResourceService_Create_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ResourceService_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/omni.resources.ResourceService/Update", runtime.WithHTTPPathPattern("/omni.resources.ResourceService/Update"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ResourceService_Update_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ResourceService_Update_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ResourceService_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/omni.resources.ResourceService/Delete", runtime.WithHTTPPathPattern("/omni.resources.ResourceService/Delete"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ResourceService_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ResourceService_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ResourceService_Teardown_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/omni.resources.ResourceService/Teardown", runtime.WithHTTPPathPattern("/omni.resources.ResourceService/Teardown"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ResourceService_Teardown_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ResourceService_Teardown_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_ResourceService_Watch_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/omni.resources.ResourceService/Watch", runtime.WithHTTPPathPattern("/omni.resources.ResourceService/Watch"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_ResourceService_Watch_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_ResourceService_Watch_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_ResourceService_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"omni.resources.ResourceService", "Get"}, ""))
+
+ pattern_ResourceService_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"omni.resources.ResourceService", "List"}, ""))
+
+ pattern_ResourceService_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"omni.resources.ResourceService", "Create"}, ""))
+
+ pattern_ResourceService_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"omni.resources.ResourceService", "Update"}, ""))
+
+ pattern_ResourceService_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"omni.resources.ResourceService", "Delete"}, ""))
+
+ pattern_ResourceService_Teardown_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"omni.resources.ResourceService", "Teardown"}, ""))
+
+ pattern_ResourceService_Watch_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"omni.resources.ResourceService", "Watch"}, ""))
+)
+
+var (
+ forward_ResourceService_Get_0 = runtime.ForwardResponseMessage
+
+ forward_ResourceService_List_0 = runtime.ForwardResponseMessage
+
+ forward_ResourceService_Create_0 = runtime.ForwardResponseMessage
+
+ forward_ResourceService_Update_0 = runtime.ForwardResponseMessage
+
+ forward_ResourceService_Delete_0 = runtime.ForwardResponseMessage
+
+ forward_ResourceService_Teardown_0 = runtime.ForwardResponseMessage
+
+ forward_ResourceService_Watch_0 = runtime.ForwardResponseStream
+)
diff --git a/client/api/omni/resources/resources.proto b/client/api/omni/resources/resources.proto
new file mode 100644
index 000000000..47cebcf08
--- /dev/null
+++ b/client/api/omni/resources/resources.proto
@@ -0,0 +1,108 @@
+syntax = "proto3";
+package omni.resources;
+
+option go_package = "github.com/siderolabs/omni/client/api/omni/resources";
+
+import "common/omni.proto";
+import "v1alpha1/resource.proto";
+
+message Resource {
+ cosi.resource.Metadata metadata = 1;
+ string spec = 2;
+}
+
+message GetRequest {
+ string namespace = 1;
+ string type = 2;
+ string id = 3;
+}
+
+message GetResponse {
+ // Body should contain JSON encoded spec.
+ string body = 1;
+}
+
+message ListRequest {
+ string namespace = 1;
+ string type = 2;
+ int32 offset = 3;
+ int32 limit = 4;
+ string sort_by_field = 5;
+ bool sort_descending = 6;
+ repeated string search_for = 7;
+}
+
+message ListResponse {
+ // Items should contain JSON encoded resources.
+ repeated string items = 1;
+ int32 total = 2;
+}
+
+enum EventType {
+ UNKNOWN = 0;
+ CREATED = 1;
+ UPDATED = 2;
+ DESTROYED = 3;
+ BOOTSTRAPPED = 4;
+}
+
+// Event is emitted when resource changes.
+// It's the same as COSI Event, but encodes resources into JSON.
+message Event {
+ string resource = 1;
+ string old = 2;
+ EventType event_type = 3;
+}
+
+message WatchRequest {
+ string namespace = 1;
+ string type = 2;
+ string id = 3;
+ int32 tail_events = 4;
+ int32 offset = 5;
+ int32 limit = 6;
+ string sort_by_field = 7;
+ bool sort_descending = 8;
+ repeated string search_for = 9;
+}
+
+message WatchResponse {
+ Event event = 1;
+ int32 total = 2;
+ string sort_field_data = 3;
+ bool sort_descending = 4;
+}
+
+message CreateRequest {
+ Resource resource = 1;
+}
+
+message CreateResponse {
+}
+
+message UpdateRequest {
+ string currentVersion = 1;
+ Resource resource = 2;
+}
+
+message UpdateResponse {
+}
+
+message DeleteRequest {
+ string namespace = 1;
+ string type = 2;
+ string id = 3;
+}
+
+message DeleteResponse {
+}
+
+service ResourceService {
+ rpc Get(GetRequest) returns (GetResponse);
+ rpc List(ListRequest) returns (ListResponse);
+ rpc Create(CreateRequest) returns (CreateResponse);
+ rpc Update(UpdateRequest) returns (UpdateResponse);
+ rpc Delete(DeleteRequest) returns (DeleteResponse);
+ rpc Teardown(DeleteRequest) returns (DeleteResponse);
+ rpc Watch(WatchRequest) returns (stream WatchResponse);
+}
diff --git a/client/api/omni/resources/resources_grpc.pb.go b/client/api/omni/resources/resources_grpc.pb.go
new file mode 100644
index 000000000..bd4c5a3f4
--- /dev/null
+++ b/client/api/omni/resources/resources_grpc.pb.go
@@ -0,0 +1,360 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v4.24.4
+// source: omni/resources/resources.proto
+
+package resources
+
+import (
+ context "context"
+
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ ResourceService_Get_FullMethodName = "/omni.resources.ResourceService/Get"
+ ResourceService_List_FullMethodName = "/omni.resources.ResourceService/List"
+ ResourceService_Create_FullMethodName = "/omni.resources.ResourceService/Create"
+ ResourceService_Update_FullMethodName = "/omni.resources.ResourceService/Update"
+ ResourceService_Delete_FullMethodName = "/omni.resources.ResourceService/Delete"
+ ResourceService_Teardown_FullMethodName = "/omni.resources.ResourceService/Teardown"
+ ResourceService_Watch_FullMethodName = "/omni.resources.ResourceService/Watch"
+)
+
+// ResourceServiceClient is the client API for ResourceService 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 ResourceServiceClient interface {
+ Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*GetResponse, error)
+ List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error)
+ Create(ctx context.Context, in *CreateRequest, opts ...grpc.CallOption) (*CreateResponse, error)
+ Update(ctx context.Context, in *UpdateRequest, opts ...grpc.CallOption) (*UpdateResponse, error)
+ Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error)
+ Teardown(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error)
+ Watch(ctx context.Context, in *WatchRequest, opts ...grpc.CallOption) (ResourceService_WatchClient, error)
+}
+
+type resourceServiceClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewResourceServiceClient(cc grpc.ClientConnInterface) ResourceServiceClient {
+ return &resourceServiceClient{cc}
+}
+
+func (c *resourceServiceClient) Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*GetResponse, error) {
+ out := new(GetResponse)
+ err := c.cc.Invoke(ctx, ResourceService_Get_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *resourceServiceClient) List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error) {
+ out := new(ListResponse)
+ err := c.cc.Invoke(ctx, ResourceService_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *resourceServiceClient) Create(ctx context.Context, in *CreateRequest, opts ...grpc.CallOption) (*CreateResponse, error) {
+ out := new(CreateResponse)
+ err := c.cc.Invoke(ctx, ResourceService_Create_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *resourceServiceClient) Update(ctx context.Context, in *UpdateRequest, opts ...grpc.CallOption) (*UpdateResponse, error) {
+ out := new(UpdateResponse)
+ err := c.cc.Invoke(ctx, ResourceService_Update_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *resourceServiceClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error) {
+ out := new(DeleteResponse)
+ err := c.cc.Invoke(ctx, ResourceService_Delete_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *resourceServiceClient) Teardown(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error) {
+ out := new(DeleteResponse)
+ err := c.cc.Invoke(ctx, ResourceService_Teardown_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *resourceServiceClient) Watch(ctx context.Context, in *WatchRequest, opts ...grpc.CallOption) (ResourceService_WatchClient, error) {
+ stream, err := c.cc.NewStream(ctx, &ResourceService_ServiceDesc.Streams[0], ResourceService_Watch_FullMethodName, opts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &resourceServiceWatchClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
+}
+
+type ResourceService_WatchClient interface {
+ Recv() (*WatchResponse, error)
+ grpc.ClientStream
+}
+
+type resourceServiceWatchClient struct {
+ grpc.ClientStream
+}
+
+func (x *resourceServiceWatchClient) Recv() (*WatchResponse, error) {
+ m := new(WatchResponse)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+// ResourceServiceServer is the server API for ResourceService service.
+// All implementations must embed UnimplementedResourceServiceServer
+// for forward compatibility
+type ResourceServiceServer interface {
+ Get(context.Context, *GetRequest) (*GetResponse, error)
+ List(context.Context, *ListRequest) (*ListResponse, error)
+ Create(context.Context, *CreateRequest) (*CreateResponse, error)
+ Update(context.Context, *UpdateRequest) (*UpdateResponse, error)
+ Delete(context.Context, *DeleteRequest) (*DeleteResponse, error)
+ Teardown(context.Context, *DeleteRequest) (*DeleteResponse, error)
+ Watch(*WatchRequest, ResourceService_WatchServer) error
+ mustEmbedUnimplementedResourceServiceServer()
+}
+
+// UnimplementedResourceServiceServer must be embedded to have forward compatible implementations.
+type UnimplementedResourceServiceServer struct {
+}
+
+func (UnimplementedResourceServiceServer) Get(context.Context, *GetRequest) (*GetResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Get not implemented")
+}
+func (UnimplementedResourceServiceServer) List(context.Context, *ListRequest) (*ListResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedResourceServiceServer) Create(context.Context, *CreateRequest) (*CreateResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
+}
+func (UnimplementedResourceServiceServer) Update(context.Context, *UpdateRequest) (*UpdateResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
+}
+func (UnimplementedResourceServiceServer) Delete(context.Context, *DeleteRequest) (*DeleteResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
+}
+func (UnimplementedResourceServiceServer) Teardown(context.Context, *DeleteRequest) (*DeleteResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Teardown not implemented")
+}
+func (UnimplementedResourceServiceServer) Watch(*WatchRequest, ResourceService_WatchServer) error {
+ return status.Errorf(codes.Unimplemented, "method Watch not implemented")
+}
+func (UnimplementedResourceServiceServer) mustEmbedUnimplementedResourceServiceServer() {}
+
+// UnsafeResourceServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to ResourceServiceServer will
+// result in compilation errors.
+type UnsafeResourceServiceServer interface {
+ mustEmbedUnimplementedResourceServiceServer()
+}
+
+func RegisterResourceServiceServer(s grpc.ServiceRegistrar, srv ResourceServiceServer) {
+ s.RegisterService(&ResourceService_ServiceDesc, srv)
+}
+
+func _ResourceService_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ResourceServiceServer).Get(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ResourceService_Get_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ResourceServiceServer).Get(ctx, req.(*GetRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ResourceService_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ListRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ResourceServiceServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ResourceService_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ResourceServiceServer).List(ctx, req.(*ListRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ResourceService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ResourceServiceServer).Create(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ResourceService_Create_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ResourceServiceServer).Create(ctx, req.(*CreateRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ResourceService_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UpdateRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ResourceServiceServer).Update(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ResourceService_Update_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ResourceServiceServer).Update(ctx, req.(*UpdateRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ResourceService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ResourceServiceServer).Delete(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ResourceService_Delete_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ResourceServiceServer).Delete(ctx, req.(*DeleteRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ResourceService_Teardown_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ResourceServiceServer).Teardown(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ResourceService_Teardown_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ResourceServiceServer).Teardown(ctx, req.(*DeleteRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ResourceService_Watch_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(WatchRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(ResourceServiceServer).Watch(m, &resourceServiceWatchServer{stream})
+}
+
+type ResourceService_WatchServer interface {
+ Send(*WatchResponse) error
+ grpc.ServerStream
+}
+
+type resourceServiceWatchServer struct {
+ grpc.ServerStream
+}
+
+func (x *resourceServiceWatchServer) Send(m *WatchResponse) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+// ResourceService_ServiceDesc is the grpc.ServiceDesc for ResourceService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var ResourceService_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "omni.resources.ResourceService",
+ HandlerType: (*ResourceServiceServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Get",
+ Handler: _ResourceService_Get_Handler,
+ },
+ {
+ MethodName: "List",
+ Handler: _ResourceService_List_Handler,
+ },
+ {
+ MethodName: "Create",
+ Handler: _ResourceService_Create_Handler,
+ },
+ {
+ MethodName: "Update",
+ Handler: _ResourceService_Update_Handler,
+ },
+ {
+ MethodName: "Delete",
+ Handler: _ResourceService_Delete_Handler,
+ },
+ {
+ MethodName: "Teardown",
+ Handler: _ResourceService_Teardown_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{
+ {
+ StreamName: "Watch",
+ Handler: _ResourceService_Watch_Handler,
+ ServerStreams: true,
+ },
+ },
+ Metadata: "omni/resources/resources.proto",
+}
diff --git a/client/api/omni/resources/resources_vtproto.pb.go b/client/api/omni/resources/resources_vtproto.pb.go
new file mode 100644
index 000000000..d36214fde
--- /dev/null
+++ b/client/api/omni/resources/resources_vtproto.pb.go
@@ -0,0 +1,3474 @@
+// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.
+// protoc-gen-go-vtproto version: v0.6.0
+// source: omni/resources/resources.proto
+
+package resources
+
+import (
+ fmt "fmt"
+ io "io"
+
+ v1alpha1 "github.com/cosi-project/runtime/api/v1alpha1"
+ protohelpers "github.com/planetscale/vtprotobuf/protohelpers"
+ proto "google.golang.org/protobuf/proto"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+func (m *Resource) CloneVT() *Resource {
+ if m == nil {
+ return (*Resource)(nil)
+ }
+ r := new(Resource)
+ r.Spec = m.Spec
+ if rhs := m.Metadata; rhs != nil {
+ if vtpb, ok := interface{}(rhs).(interface{ CloneVT() *v1alpha1.Metadata }); ok {
+ r.Metadata = vtpb.CloneVT()
+ } else {
+ r.Metadata = proto.Clone(rhs).(*v1alpha1.Metadata)
+ }
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *Resource) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *GetRequest) CloneVT() *GetRequest {
+ if m == nil {
+ return (*GetRequest)(nil)
+ }
+ r := new(GetRequest)
+ r.Namespace = m.Namespace
+ r.Type = m.Type
+ r.Id = m.Id
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *GetRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *GetResponse) CloneVT() *GetResponse {
+ if m == nil {
+ return (*GetResponse)(nil)
+ }
+ r := new(GetResponse)
+ r.Body = m.Body
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *GetResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ListRequest) CloneVT() *ListRequest {
+ if m == nil {
+ return (*ListRequest)(nil)
+ }
+ r := new(ListRequest)
+ r.Namespace = m.Namespace
+ r.Type = m.Type
+ r.Offset = m.Offset
+ r.Limit = m.Limit
+ r.SortByField = m.SortByField
+ r.SortDescending = m.SortDescending
+ if rhs := m.SearchFor; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.SearchFor = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ListRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ListResponse) CloneVT() *ListResponse {
+ if m == nil {
+ return (*ListResponse)(nil)
+ }
+ r := new(ListResponse)
+ r.Total = m.Total
+ if rhs := m.Items; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.Items = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ListResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *Event) CloneVT() *Event {
+ if m == nil {
+ return (*Event)(nil)
+ }
+ r := new(Event)
+ r.Resource = m.Resource
+ r.Old = m.Old
+ r.EventType = m.EventType
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *Event) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *WatchRequest) CloneVT() *WatchRequest {
+ if m == nil {
+ return (*WatchRequest)(nil)
+ }
+ r := new(WatchRequest)
+ r.Namespace = m.Namespace
+ r.Type = m.Type
+ r.Id = m.Id
+ r.TailEvents = m.TailEvents
+ r.Offset = m.Offset
+ r.Limit = m.Limit
+ r.SortByField = m.SortByField
+ r.SortDescending = m.SortDescending
+ if rhs := m.SearchFor; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.SearchFor = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *WatchRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *WatchResponse) CloneVT() *WatchResponse {
+ if m == nil {
+ return (*WatchResponse)(nil)
+ }
+ r := new(WatchResponse)
+ r.Event = m.Event.CloneVT()
+ r.Total = m.Total
+ r.SortFieldData = m.SortFieldData
+ r.SortDescending = m.SortDescending
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *WatchResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *CreateRequest) CloneVT() *CreateRequest {
+ if m == nil {
+ return (*CreateRequest)(nil)
+ }
+ r := new(CreateRequest)
+ r.Resource = m.Resource.CloneVT()
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *CreateRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *CreateResponse) CloneVT() *CreateResponse {
+ if m == nil {
+ return (*CreateResponse)(nil)
+ }
+ r := new(CreateResponse)
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *CreateResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *UpdateRequest) CloneVT() *UpdateRequest {
+ if m == nil {
+ return (*UpdateRequest)(nil)
+ }
+ r := new(UpdateRequest)
+ r.CurrentVersion = m.CurrentVersion
+ r.Resource = m.Resource.CloneVT()
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *UpdateRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *UpdateResponse) CloneVT() *UpdateResponse {
+ if m == nil {
+ return (*UpdateResponse)(nil)
+ }
+ r := new(UpdateResponse)
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *UpdateResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *DeleteRequest) CloneVT() *DeleteRequest {
+ if m == nil {
+ return (*DeleteRequest)(nil)
+ }
+ r := new(DeleteRequest)
+ r.Namespace = m.Namespace
+ r.Type = m.Type
+ r.Id = m.Id
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *DeleteRequest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *DeleteResponse) CloneVT() *DeleteResponse {
+ if m == nil {
+ return (*DeleteResponse)(nil)
+ }
+ r := new(DeleteResponse)
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *DeleteResponse) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (this *Resource) EqualVT(that *Resource) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if equal, ok := interface{}(this.Metadata).(interface{ EqualVT(*v1alpha1.Metadata) bool }); ok {
+ if !equal.EqualVT(that.Metadata) {
+ return false
+ }
+ } else if !proto.Equal(this.Metadata, that.Metadata) {
+ return false
+ }
+ if this.Spec != that.Spec {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *Resource) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*Resource)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *GetRequest) EqualVT(that *GetRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Namespace != that.Namespace {
+ return false
+ }
+ if this.Type != that.Type {
+ return false
+ }
+ if this.Id != that.Id {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *GetRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*GetRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *GetResponse) EqualVT(that *GetResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Body != that.Body {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *GetResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*GetResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ListRequest) EqualVT(that *ListRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Namespace != that.Namespace {
+ return false
+ }
+ if this.Type != that.Type {
+ return false
+ }
+ if this.Offset != that.Offset {
+ return false
+ }
+ if this.Limit != that.Limit {
+ return false
+ }
+ if this.SortByField != that.SortByField {
+ return false
+ }
+ if this.SortDescending != that.SortDescending {
+ return false
+ }
+ if len(this.SearchFor) != len(that.SearchFor) {
+ return false
+ }
+ for i, vx := range this.SearchFor {
+ vy := that.SearchFor[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ListRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ListRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ListResponse) EqualVT(that *ListResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.Items) != len(that.Items) {
+ return false
+ }
+ for i, vx := range this.Items {
+ vy := that.Items[i]
+ if vx != vy {
+ return false
+ }
+ }
+ if this.Total != that.Total {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ListResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ListResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *Event) EqualVT(that *Event) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Resource != that.Resource {
+ return false
+ }
+ if this.Old != that.Old {
+ return false
+ }
+ if this.EventType != that.EventType {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *Event) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*Event)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *WatchRequest) EqualVT(that *WatchRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Namespace != that.Namespace {
+ return false
+ }
+ if this.Type != that.Type {
+ return false
+ }
+ if this.Id != that.Id {
+ return false
+ }
+ if this.TailEvents != that.TailEvents {
+ return false
+ }
+ if this.Offset != that.Offset {
+ return false
+ }
+ if this.Limit != that.Limit {
+ return false
+ }
+ if this.SortByField != that.SortByField {
+ return false
+ }
+ if this.SortDescending != that.SortDescending {
+ return false
+ }
+ if len(this.SearchFor) != len(that.SearchFor) {
+ return false
+ }
+ for i, vx := range this.SearchFor {
+ vy := that.SearchFor[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *WatchRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*WatchRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *WatchResponse) EqualVT(that *WatchResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if !this.Event.EqualVT(that.Event) {
+ return false
+ }
+ if this.Total != that.Total {
+ return false
+ }
+ if this.SortFieldData != that.SortFieldData {
+ return false
+ }
+ if this.SortDescending != that.SortDescending {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *WatchResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*WatchResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *CreateRequest) EqualVT(that *CreateRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if !this.Resource.EqualVT(that.Resource) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *CreateRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*CreateRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *CreateResponse) EqualVT(that *CreateResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *CreateResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*CreateResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *UpdateRequest) EqualVT(that *UpdateRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.CurrentVersion != that.CurrentVersion {
+ return false
+ }
+ if !this.Resource.EqualVT(that.Resource) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *UpdateRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*UpdateRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *UpdateResponse) EqualVT(that *UpdateResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *UpdateResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*UpdateResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *DeleteRequest) EqualVT(that *DeleteRequest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Namespace != that.Namespace {
+ return false
+ }
+ if this.Type != that.Type {
+ return false
+ }
+ if this.Id != that.Id {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *DeleteRequest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*DeleteRequest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *DeleteResponse) EqualVT(that *DeleteResponse) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *DeleteResponse) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*DeleteResponse)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (m *Resource) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Resource) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *Resource) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Spec) > 0 {
+ i -= len(m.Spec)
+ copy(dAtA[i:], m.Spec)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Spec)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Metadata != nil {
+ if vtmsg, ok := interface{}(m.Metadata).(interface {
+ MarshalToSizedBufferVT([]byte) (int, error)
+ }); ok {
+ size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ } else {
+ encoded, err := proto.Marshal(m.Metadata)
+ if err != nil {
+ return 0, err
+ }
+ i -= len(encoded)
+ copy(dAtA[i:], encoded)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *GetRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Id) > 0 {
+ i -= len(m.Id)
+ copy(dAtA[i:], m.Id)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Id)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Type) > 0 {
+ i -= len(m.Type)
+ copy(dAtA[i:], m.Type)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Type)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Namespace) > 0 {
+ i -= len(m.Namespace)
+ copy(dAtA[i:], m.Namespace)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Namespace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *GetResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Body) > 0 {
+ i -= len(m.Body)
+ copy(dAtA[i:], m.Body)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Body)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ListRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ListRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ListRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.SearchFor) > 0 {
+ for iNdEx := len(m.SearchFor) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.SearchFor[iNdEx])
+ copy(dAtA[i:], m.SearchFor[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SearchFor[iNdEx])))
+ i--
+ dAtA[i] = 0x3a
+ }
+ }
+ if m.SortDescending {
+ i--
+ if m.SortDescending {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x30
+ }
+ if len(m.SortByField) > 0 {
+ i -= len(m.SortByField)
+ copy(dAtA[i:], m.SortByField)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SortByField)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.Limit != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Limit))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Offset != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Offset))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.Type) > 0 {
+ i -= len(m.Type)
+ copy(dAtA[i:], m.Type)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Type)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Namespace) > 0 {
+ i -= len(m.Namespace)
+ copy(dAtA[i:], m.Namespace)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Namespace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ListResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ListResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ListResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Total != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Total))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Items) > 0 {
+ for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Items[iNdEx])
+ copy(dAtA[i:], m.Items[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Items[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Event) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Event) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *Event) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.EventType != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.EventType))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.Old) > 0 {
+ i -= len(m.Old)
+ copy(dAtA[i:], m.Old)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Old)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Resource) > 0 {
+ i -= len(m.Resource)
+ copy(dAtA[i:], m.Resource)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Resource)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *WatchRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *WatchRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *WatchRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.SearchFor) > 0 {
+ for iNdEx := len(m.SearchFor) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.SearchFor[iNdEx])
+ copy(dAtA[i:], m.SearchFor[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SearchFor[iNdEx])))
+ i--
+ dAtA[i] = 0x4a
+ }
+ }
+ if m.SortDescending {
+ i--
+ if m.SortDescending {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x40
+ }
+ if len(m.SortByField) > 0 {
+ i -= len(m.SortByField)
+ copy(dAtA[i:], m.SortByField)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SortByField)))
+ i--
+ dAtA[i] = 0x3a
+ }
+ if m.Limit != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Limit))
+ i--
+ dAtA[i] = 0x30
+ }
+ if m.Offset != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Offset))
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.TailEvents != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.TailEvents))
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.Id) > 0 {
+ i -= len(m.Id)
+ copy(dAtA[i:], m.Id)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Id)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Type) > 0 {
+ i -= len(m.Type)
+ copy(dAtA[i:], m.Type)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Type)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Namespace) > 0 {
+ i -= len(m.Namespace)
+ copy(dAtA[i:], m.Namespace)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Namespace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *WatchResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *WatchResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *WatchResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.SortDescending {
+ i--
+ if m.SortDescending {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.SortFieldData) > 0 {
+ i -= len(m.SortFieldData)
+ copy(dAtA[i:], m.SortFieldData)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SortFieldData)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.Total != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Total))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Event != nil {
+ size, err := m.Event.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CreateRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CreateRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *CreateRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Resource != nil {
+ size, err := m.Resource.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CreateResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CreateResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *CreateResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *UpdateRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UpdateRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *UpdateRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Resource != nil {
+ size, err := m.Resource.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.CurrentVersion) > 0 {
+ i -= len(m.CurrentVersion)
+ copy(dAtA[i:], m.CurrentVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.CurrentVersion)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *UpdateResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UpdateResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *UpdateResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *DeleteRequest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DeleteRequest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *DeleteRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Id) > 0 {
+ i -= len(m.Id)
+ copy(dAtA[i:], m.Id)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Id)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Type) > 0 {
+ i -= len(m.Type)
+ copy(dAtA[i:], m.Type)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Type)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Namespace) > 0 {
+ i -= len(m.Namespace)
+ copy(dAtA[i:], m.Namespace)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Namespace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *DeleteResponse) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DeleteResponse) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *DeleteResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Resource) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Metadata != nil {
+ if size, ok := interface{}(m.Metadata).(interface {
+ SizeVT() int
+ }); ok {
+ l = size.SizeVT()
+ } else {
+ l = proto.Size(m.Metadata)
+ }
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Spec)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *GetRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Namespace)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Type)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *GetResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Body)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ListRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Namespace)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Type)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Offset != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Offset))
+ }
+ if m.Limit != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Limit))
+ }
+ l = len(m.SortByField)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.SortDescending {
+ n += 2
+ }
+ if len(m.SearchFor) > 0 {
+ for _, s := range m.SearchFor {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ListResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Items) > 0 {
+ for _, s := range m.Items {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ if m.Total != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Total))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *Event) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Resource)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Old)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.EventType != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.EventType))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *WatchRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Namespace)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Type)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.TailEvents != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.TailEvents))
+ }
+ if m.Offset != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Offset))
+ }
+ if m.Limit != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Limit))
+ }
+ l = len(m.SortByField)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.SortDescending {
+ n += 2
+ }
+ if len(m.SearchFor) > 0 {
+ for _, s := range m.SearchFor {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *WatchResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Event != nil {
+ l = m.Event.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Total != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Total))
+ }
+ l = len(m.SortFieldData)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.SortDescending {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *CreateRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Resource != nil {
+ l = m.Resource.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *CreateResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *UpdateRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.CurrentVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Resource != nil {
+ l = m.Resource.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *UpdateResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *DeleteRequest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Namespace)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Type)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *DeleteResponse) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *Resource) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Resource: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Resource: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Metadata == nil {
+ m.Metadata = &v1alpha1.Metadata{}
+ }
+ if unmarshal, ok := interface{}(m.Metadata).(interface {
+ UnmarshalVT([]byte) error
+ }); ok {
+ if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ } else {
+ if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.Metadata); err != nil {
+ return err
+ }
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Spec = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Namespace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Type = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Body", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Body = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ListRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ListRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ListRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Namespace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Type = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Offset", wireType)
+ }
+ m.Offset = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Offset |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Limit", wireType)
+ }
+ m.Limit = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Limit |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SortByField", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SortByField = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SortDescending", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SortDescending = bool(v != 0)
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SearchFor", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SearchFor = append(m.SearchFor, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ListResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ListResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ListResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Items = append(m.Items, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Total", wireType)
+ }
+ m.Total = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Total |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Event) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Event: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Event: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Resource = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Old", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Old = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EventType", wireType)
+ }
+ m.EventType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.EventType |= EventType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *WatchRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: WatchRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: WatchRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Namespace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Type = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TailEvents", wireType)
+ }
+ m.TailEvents = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TailEvents |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Offset", wireType)
+ }
+ m.Offset = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Offset |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Limit", wireType)
+ }
+ m.Limit = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Limit |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SortByField", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SortByField = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 8:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SortDescending", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SortDescending = bool(v != 0)
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SearchFor", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SearchFor = append(m.SearchFor, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *WatchResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: WatchResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: WatchResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Event", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Event == nil {
+ m.Event = &Event{}
+ }
+ if err := m.Event.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Total", wireType)
+ }
+ m.Total = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Total |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SortFieldData", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SortFieldData = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SortDescending", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SortDescending = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CreateRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CreateRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CreateRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Resource == nil {
+ m.Resource = &Resource{}
+ }
+ if err := m.Resource.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CreateResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CreateResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CreateResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UpdateRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UpdateRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UpdateRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CurrentVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.CurrentVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Resource == nil {
+ m.Resource = &Resource{}
+ }
+ if err := m.Resource.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UpdateResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UpdateResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UpdateResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DeleteRequest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DeleteRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DeleteRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Namespace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Type = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DeleteResponse) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DeleteResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DeleteResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
diff --git a/client/api/omni/specs/auth.pb.go b/client/api/omni/specs/auth.pb.go
new file mode 100644
index 000000000..4983c62e4
--- /dev/null
+++ b/client/api/omni/specs/auth.pb.go
@@ -0,0 +1,2017 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.32.0
+// protoc v4.24.4
+// source: omni/specs/auth.proto
+
+package specs
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ _ "github.com/siderolabs/talos/pkg/machinery/api/machine"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// AuthConfigSpec describes the authentication configuration.
+type AuthConfigSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Auth0 *AuthConfigSpec_Auth0 `protobuf:"bytes,1,opt,name=auth0,proto3" json:"auth0,omitempty"`
+ Webauthn *AuthConfigSpec_Webauthn `protobuf:"bytes,2,opt,name=webauthn,proto3" json:"webauthn,omitempty"`
+ Suspended bool `protobuf:"varint,3,opt,name=suspended,proto3" json:"suspended,omitempty"`
+ Saml *AuthConfigSpec_SAML `protobuf:"bytes,4,opt,name=saml,proto3" json:"saml,omitempty"`
+}
+
+func (x *AuthConfigSpec) Reset() {
+ *x = AuthConfigSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AuthConfigSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AuthConfigSpec) ProtoMessage() {}
+
+func (x *AuthConfigSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AuthConfigSpec.ProtoReflect.Descriptor instead.
+func (*AuthConfigSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *AuthConfigSpec) GetAuth0() *AuthConfigSpec_Auth0 {
+ if x != nil {
+ return x.Auth0
+ }
+ return nil
+}
+
+func (x *AuthConfigSpec) GetWebauthn() *AuthConfigSpec_Webauthn {
+ if x != nil {
+ return x.Webauthn
+ }
+ return nil
+}
+
+func (x *AuthConfigSpec) GetSuspended() bool {
+ if x != nil {
+ return x.Suspended
+ }
+ return false
+}
+
+func (x *AuthConfigSpec) GetSaml() *AuthConfigSpec_SAML {
+ if x != nil {
+ return x.Saml
+ }
+ return nil
+}
+
+// SAMLAssertionSpec describes SAML assertion.
+type SAMLAssertionSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Data keeps JSON encoded SAML assertion.
+ Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
+ // Email is the identity that was read from the assertion.
+ Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"`
+ // Used marks SAML assertion as used.
+ Used bool `protobuf:"varint,3,opt,name=used,proto3" json:"used,omitempty"`
+}
+
+func (x *SAMLAssertionSpec) Reset() {
+ *x = SAMLAssertionSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SAMLAssertionSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SAMLAssertionSpec) ProtoMessage() {}
+
+func (x *SAMLAssertionSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SAMLAssertionSpec.ProtoReflect.Descriptor instead.
+func (*SAMLAssertionSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *SAMLAssertionSpec) GetData() []byte {
+ if x != nil {
+ return x.Data
+ }
+ return nil
+}
+
+func (x *SAMLAssertionSpec) GetEmail() string {
+ if x != nil {
+ return x.Email
+ }
+ return ""
+}
+
+func (x *SAMLAssertionSpec) GetUsed() bool {
+ if x != nil {
+ return x.Used
+ }
+ return false
+}
+
+// UserSpec describes a user.
+type UserSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Scopes are deprecated, use roles instead.
+ //
+ // Deprecated: will be removed once all environments are migrated to use roles.
+ // TODO: remove after all environments are migrated to use roles.
+ Scopes []string `protobuf:"bytes,2,rep,name=scopes,proto3" json:"scopes,omitempty"`
+ Role string `protobuf:"bytes,3,opt,name=role,proto3" json:"role,omitempty"`
+}
+
+func (x *UserSpec) Reset() {
+ *x = UserSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UserSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserSpec) ProtoMessage() {}
+
+func (x *UserSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UserSpec.ProtoReflect.Descriptor instead.
+func (*UserSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *UserSpec) GetScopes() []string {
+ if x != nil {
+ return x.Scopes
+ }
+ return nil
+}
+
+func (x *UserSpec) GetRole() string {
+ if x != nil {
+ return x.Role
+ }
+ return ""
+}
+
+// IdentitySpec describes a user identity.
+type IdentitySpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
+}
+
+func (x *IdentitySpec) Reset() {
+ *x = IdentitySpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *IdentitySpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IdentitySpec) ProtoMessage() {}
+
+func (x *IdentitySpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use IdentitySpec.ProtoReflect.Descriptor instead.
+func (*IdentitySpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *IdentitySpec) GetUserId() string {
+ if x != nil {
+ return x.UserId
+ }
+ return ""
+}
+
+type Identity struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"`
+}
+
+func (x *Identity) Reset() {
+ *x = Identity{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Identity) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Identity) ProtoMessage() {}
+
+func (x *Identity) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Identity.ProtoReflect.Descriptor instead.
+func (*Identity) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *Identity) GetEmail() string {
+ if x != nil {
+ return x.Email
+ }
+ return ""
+}
+
+// PublicKeySpec describes a user or service account public key.
+type PublicKeySpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ PublicKey []byte `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
+ // Scopes are deprecated, use roles instead.
+ //
+ // Deprecated: will be removed once all environments are migrated to use roles.
+ // TODO: remove after all environments are migrated to use roles.
+ Scopes []string `protobuf:"bytes,2,rep,name=scopes,proto3" json:"scopes,omitempty"`
+ Expiration *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=expiration,proto3" json:"expiration,omitempty"`
+ Confirmed bool `protobuf:"varint,4,opt,name=confirmed,proto3" json:"confirmed,omitempty"`
+ Identity *Identity `protobuf:"bytes,5,opt,name=identity,proto3" json:"identity,omitempty"`
+ Role string `protobuf:"bytes,6,opt,name=role,proto3" json:"role,omitempty"`
+}
+
+func (x *PublicKeySpec) Reset() {
+ *x = PublicKeySpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PublicKeySpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PublicKeySpec) ProtoMessage() {}
+
+func (x *PublicKeySpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PublicKeySpec.ProtoReflect.Descriptor instead.
+func (*PublicKeySpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *PublicKeySpec) GetPublicKey() []byte {
+ if x != nil {
+ return x.PublicKey
+ }
+ return nil
+}
+
+func (x *PublicKeySpec) GetScopes() []string {
+ if x != nil {
+ return x.Scopes
+ }
+ return nil
+}
+
+func (x *PublicKeySpec) GetExpiration() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Expiration
+ }
+ return nil
+}
+
+func (x *PublicKeySpec) GetConfirmed() bool {
+ if x != nil {
+ return x.Confirmed
+ }
+ return false
+}
+
+func (x *PublicKeySpec) GetIdentity() *Identity {
+ if x != nil {
+ return x.Identity
+ }
+ return nil
+}
+
+func (x *PublicKeySpec) GetRole() string {
+ if x != nil {
+ return x.Role
+ }
+ return ""
+}
+
+// AccessPolicyUserGroup describes a user group in the ACLs context.
+type AccessPolicyUserGroup struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Users []*AccessPolicyUserGroup_User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"`
+}
+
+func (x *AccessPolicyUserGroup) Reset() {
+ *x = AccessPolicyUserGroup{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccessPolicyUserGroup) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccessPolicyUserGroup) ProtoMessage() {}
+
+func (x *AccessPolicyUserGroup) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccessPolicyUserGroup.ProtoReflect.Descriptor instead.
+func (*AccessPolicyUserGroup) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *AccessPolicyUserGroup) GetUsers() []*AccessPolicyUserGroup_User {
+ if x != nil {
+ return x.Users
+ }
+ return nil
+}
+
+// AccessPolicyClusterGroup describes a cluster group in the ACLs context.
+type AccessPolicyClusterGroup struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Clusters []*AccessPolicyClusterGroup_Cluster `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"`
+}
+
+func (x *AccessPolicyClusterGroup) Reset() {
+ *x = AccessPolicyClusterGroup{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccessPolicyClusterGroup) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccessPolicyClusterGroup) ProtoMessage() {}
+
+func (x *AccessPolicyClusterGroup) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccessPolicyClusterGroup.ProtoReflect.Descriptor instead.
+func (*AccessPolicyClusterGroup) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *AccessPolicyClusterGroup) GetClusters() []*AccessPolicyClusterGroup_Cluster {
+ if x != nil {
+ return x.Clusters
+ }
+ return nil
+}
+
+// AccessPolicyRule describes a rule in the ACLs context.
+type AccessPolicyRule struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Users []string `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"`
+ Clusters []string `protobuf:"bytes,2,rep,name=clusters,proto3" json:"clusters,omitempty"`
+ Kubernetes *AccessPolicyRule_Kubernetes `protobuf:"bytes,3,opt,name=kubernetes,proto3" json:"kubernetes,omitempty"`
+ Role string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
+}
+
+func (x *AccessPolicyRule) Reset() {
+ *x = AccessPolicyRule{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccessPolicyRule) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccessPolicyRule) ProtoMessage() {}
+
+func (x *AccessPolicyRule) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccessPolicyRule.ProtoReflect.Descriptor instead.
+func (*AccessPolicyRule) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *AccessPolicyRule) GetUsers() []string {
+ if x != nil {
+ return x.Users
+ }
+ return nil
+}
+
+func (x *AccessPolicyRule) GetClusters() []string {
+ if x != nil {
+ return x.Clusters
+ }
+ return nil
+}
+
+func (x *AccessPolicyRule) GetKubernetes() *AccessPolicyRule_Kubernetes {
+ if x != nil {
+ return x.Kubernetes
+ }
+ return nil
+}
+
+func (x *AccessPolicyRule) GetRole() string {
+ if x != nil {
+ return x.Role
+ }
+ return ""
+}
+
+type AccessPolicyTest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ User *AccessPolicyTest_User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`
+ Cluster *AccessPolicyTest_Cluster `protobuf:"bytes,3,opt,name=cluster,proto3" json:"cluster,omitempty"`
+ Expected *AccessPolicyTest_Expected `protobuf:"bytes,4,opt,name=expected,proto3" json:"expected,omitempty"`
+}
+
+func (x *AccessPolicyTest) Reset() {
+ *x = AccessPolicyTest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccessPolicyTest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccessPolicyTest) ProtoMessage() {}
+
+func (x *AccessPolicyTest) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccessPolicyTest.ProtoReflect.Descriptor instead.
+func (*AccessPolicyTest) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *AccessPolicyTest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *AccessPolicyTest) GetUser() *AccessPolicyTest_User {
+ if x != nil {
+ return x.User
+ }
+ return nil
+}
+
+func (x *AccessPolicyTest) GetCluster() *AccessPolicyTest_Cluster {
+ if x != nil {
+ return x.Cluster
+ }
+ return nil
+}
+
+func (x *AccessPolicyTest) GetExpected() *AccessPolicyTest_Expected {
+ if x != nil {
+ return x.Expected
+ }
+ return nil
+}
+
+// AccessPolicySpec describes the access policy configuration.
+type AccessPolicySpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ UserGroups map[string]*AccessPolicyUserGroup `protobuf:"bytes,1,rep,name=user_groups,json=userGroups,proto3" json:"user_groups,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ ClusterGroups map[string]*AccessPolicyClusterGroup `protobuf:"bytes,2,rep,name=cluster_groups,json=clusterGroups,proto3" json:"cluster_groups,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ Rules []*AccessPolicyRule `protobuf:"bytes,3,rep,name=rules,proto3" json:"rules,omitempty"`
+ Tests []*AccessPolicyTest `protobuf:"bytes,4,rep,name=tests,proto3" json:"tests,omitempty"`
+}
+
+func (x *AccessPolicySpec) Reset() {
+ *x = AccessPolicySpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccessPolicySpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccessPolicySpec) ProtoMessage() {}
+
+func (x *AccessPolicySpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[10]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccessPolicySpec.ProtoReflect.Descriptor instead.
+func (*AccessPolicySpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *AccessPolicySpec) GetUserGroups() map[string]*AccessPolicyUserGroup {
+ if x != nil {
+ return x.UserGroups
+ }
+ return nil
+}
+
+func (x *AccessPolicySpec) GetClusterGroups() map[string]*AccessPolicyClusterGroup {
+ if x != nil {
+ return x.ClusterGroups
+ }
+ return nil
+}
+
+func (x *AccessPolicySpec) GetRules() []*AccessPolicyRule {
+ if x != nil {
+ return x.Rules
+ }
+ return nil
+}
+
+func (x *AccessPolicySpec) GetTests() []*AccessPolicyTest {
+ if x != nil {
+ return x.Tests
+ }
+ return nil
+}
+
+// SAMLLabelRuleSpec describes a rule on how to map Identity labels to Omni roles.
+type SAMLLabelRuleSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // MatchLabels is the list of labels to match the user's Identity against this rule.
+ MatchLabels []string `protobuf:"bytes,1,rep,name=match_labels,json=matchLabels,proto3" json:"match_labels,omitempty"`
+ // AssignRoleOnRegistration is the role to be assigned to the user if this rule matches.
+ AssignRoleOnRegistration string `protobuf:"bytes,2,opt,name=assign_role_on_registration,json=assignRoleOnRegistration,proto3" json:"assign_role_on_registration,omitempty"`
+}
+
+func (x *SAMLLabelRuleSpec) Reset() {
+ *x = SAMLLabelRuleSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SAMLLabelRuleSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SAMLLabelRuleSpec) ProtoMessage() {}
+
+func (x *SAMLLabelRuleSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[11]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SAMLLabelRuleSpec.ProtoReflect.Descriptor instead.
+func (*SAMLLabelRuleSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *SAMLLabelRuleSpec) GetMatchLabels() []string {
+ if x != nil {
+ return x.MatchLabels
+ }
+ return nil
+}
+
+func (x *SAMLLabelRuleSpec) GetAssignRoleOnRegistration() string {
+ if x != nil {
+ return x.AssignRoleOnRegistration
+ }
+ return ""
+}
+
+type AuthConfigSpec_Auth0 struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
+ Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"`
+ ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
+}
+
+func (x *AuthConfigSpec_Auth0) Reset() {
+ *x = AuthConfigSpec_Auth0{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AuthConfigSpec_Auth0) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AuthConfigSpec_Auth0) ProtoMessage() {}
+
+func (x *AuthConfigSpec_Auth0) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AuthConfigSpec_Auth0.ProtoReflect.Descriptor instead.
+func (*AuthConfigSpec_Auth0) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{0, 0}
+}
+
+func (x *AuthConfigSpec_Auth0) GetEnabled() bool {
+ if x != nil {
+ return x.Enabled
+ }
+ return false
+}
+
+func (x *AuthConfigSpec_Auth0) GetDomain() string {
+ if x != nil {
+ return x.Domain
+ }
+ return ""
+}
+
+func (x *AuthConfigSpec_Auth0) GetClientId() string {
+ if x != nil {
+ return x.ClientId
+ }
+ return ""
+}
+
+type AuthConfigSpec_Webauthn struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
+ Required bool `protobuf:"varint,2,opt,name=required,proto3" json:"required,omitempty"`
+}
+
+func (x *AuthConfigSpec_Webauthn) Reset() {
+ *x = AuthConfigSpec_Webauthn{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AuthConfigSpec_Webauthn) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AuthConfigSpec_Webauthn) ProtoMessage() {}
+
+func (x *AuthConfigSpec_Webauthn) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[13]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AuthConfigSpec_Webauthn.ProtoReflect.Descriptor instead.
+func (*AuthConfigSpec_Webauthn) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{0, 1}
+}
+
+func (x *AuthConfigSpec_Webauthn) GetEnabled() bool {
+ if x != nil {
+ return x.Enabled
+ }
+ return false
+}
+
+func (x *AuthConfigSpec_Webauthn) GetRequired() bool {
+ if x != nil {
+ return x.Required
+ }
+ return false
+}
+
+type AuthConfigSpec_SAML struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
+ Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
+ Metadata string `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
+ // LabelRules defines custom rules on how to extract SAML attributes from the
+ // saml assertion and turn them into labels.
+ LabelRules map[string]string `protobuf:"bytes,4,rep,name=label_rules,json=labelRules,proto3" json:"label_rules,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *AuthConfigSpec_SAML) Reset() {
+ *x = AuthConfigSpec_SAML{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AuthConfigSpec_SAML) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AuthConfigSpec_SAML) ProtoMessage() {}
+
+func (x *AuthConfigSpec_SAML) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[14]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AuthConfigSpec_SAML.ProtoReflect.Descriptor instead.
+func (*AuthConfigSpec_SAML) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{0, 2}
+}
+
+func (x *AuthConfigSpec_SAML) GetEnabled() bool {
+ if x != nil {
+ return x.Enabled
+ }
+ return false
+}
+
+func (x *AuthConfigSpec_SAML) GetUrl() string {
+ if x != nil {
+ return x.Url
+ }
+ return ""
+}
+
+func (x *AuthConfigSpec_SAML) GetMetadata() string {
+ if x != nil {
+ return x.Metadata
+ }
+ return ""
+}
+
+func (x *AuthConfigSpec_SAML) GetLabelRules() map[string]string {
+ if x != nil {
+ return x.LabelRules
+ }
+ return nil
+}
+
+type AccessPolicyUserGroup_User struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Match string `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"`
+ LabelSelectors []string `protobuf:"bytes,3,rep,name=label_selectors,json=labelSelectors,proto3" json:"label_selectors,omitempty"`
+}
+
+func (x *AccessPolicyUserGroup_User) Reset() {
+ *x = AccessPolicyUserGroup_User{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[16]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccessPolicyUserGroup_User) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccessPolicyUserGroup_User) ProtoMessage() {}
+
+func (x *AccessPolicyUserGroup_User) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[16]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccessPolicyUserGroup_User.ProtoReflect.Descriptor instead.
+func (*AccessPolicyUserGroup_User) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{6, 0}
+}
+
+func (x *AccessPolicyUserGroup_User) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *AccessPolicyUserGroup_User) GetMatch() string {
+ if x != nil {
+ return x.Match
+ }
+ return ""
+}
+
+func (x *AccessPolicyUserGroup_User) GetLabelSelectors() []string {
+ if x != nil {
+ return x.LabelSelectors
+ }
+ return nil
+}
+
+type AccessPolicyClusterGroup_Cluster struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Match string `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"`
+}
+
+func (x *AccessPolicyClusterGroup_Cluster) Reset() {
+ *x = AccessPolicyClusterGroup_Cluster{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[17]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccessPolicyClusterGroup_Cluster) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccessPolicyClusterGroup_Cluster) ProtoMessage() {}
+
+func (x *AccessPolicyClusterGroup_Cluster) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[17]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccessPolicyClusterGroup_Cluster.ProtoReflect.Descriptor instead.
+func (*AccessPolicyClusterGroup_Cluster) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{7, 0}
+}
+
+func (x *AccessPolicyClusterGroup_Cluster) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *AccessPolicyClusterGroup_Cluster) GetMatch() string {
+ if x != nil {
+ return x.Match
+ }
+ return ""
+}
+
+type AccessPolicyRule_Kubernetes struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Impersonate *AccessPolicyRule_Kubernetes_Impersonate `protobuf:"bytes,1,opt,name=impersonate,proto3" json:"impersonate,omitempty"`
+}
+
+func (x *AccessPolicyRule_Kubernetes) Reset() {
+ *x = AccessPolicyRule_Kubernetes{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[18]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccessPolicyRule_Kubernetes) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccessPolicyRule_Kubernetes) ProtoMessage() {}
+
+func (x *AccessPolicyRule_Kubernetes) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[18]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccessPolicyRule_Kubernetes.ProtoReflect.Descriptor instead.
+func (*AccessPolicyRule_Kubernetes) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{8, 0}
+}
+
+func (x *AccessPolicyRule_Kubernetes) GetImpersonate() *AccessPolicyRule_Kubernetes_Impersonate {
+ if x != nil {
+ return x.Impersonate
+ }
+ return nil
+}
+
+type AccessPolicyRule_Kubernetes_Impersonate struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Groups []string `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty"`
+}
+
+func (x *AccessPolicyRule_Kubernetes_Impersonate) Reset() {
+ *x = AccessPolicyRule_Kubernetes_Impersonate{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[19]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccessPolicyRule_Kubernetes_Impersonate) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccessPolicyRule_Kubernetes_Impersonate) ProtoMessage() {}
+
+func (x *AccessPolicyRule_Kubernetes_Impersonate) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[19]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccessPolicyRule_Kubernetes_Impersonate.ProtoReflect.Descriptor instead.
+func (*AccessPolicyRule_Kubernetes_Impersonate) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{8, 0, 0}
+}
+
+func (x *AccessPolicyRule_Kubernetes_Impersonate) GetGroups() []string {
+ if x != nil {
+ return x.Groups
+ }
+ return nil
+}
+
+type AccessPolicyTest_Expected struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Kubernetes *AccessPolicyTest_Expected_Kubernetes `protobuf:"bytes,1,opt,name=kubernetes,proto3" json:"kubernetes,omitempty"`
+ Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`
+}
+
+func (x *AccessPolicyTest_Expected) Reset() {
+ *x = AccessPolicyTest_Expected{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[20]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccessPolicyTest_Expected) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccessPolicyTest_Expected) ProtoMessage() {}
+
+func (x *AccessPolicyTest_Expected) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[20]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccessPolicyTest_Expected.ProtoReflect.Descriptor instead.
+func (*AccessPolicyTest_Expected) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{9, 0}
+}
+
+func (x *AccessPolicyTest_Expected) GetKubernetes() *AccessPolicyTest_Expected_Kubernetes {
+ if x != nil {
+ return x.Kubernetes
+ }
+ return nil
+}
+
+func (x *AccessPolicyTest_Expected) GetRole() string {
+ if x != nil {
+ return x.Role
+ }
+ return ""
+}
+
+type AccessPolicyTest_User struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *AccessPolicyTest_User) Reset() {
+ *x = AccessPolicyTest_User{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[21]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccessPolicyTest_User) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccessPolicyTest_User) ProtoMessage() {}
+
+func (x *AccessPolicyTest_User) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[21]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccessPolicyTest_User.ProtoReflect.Descriptor instead.
+func (*AccessPolicyTest_User) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{9, 1}
+}
+
+func (x *AccessPolicyTest_User) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *AccessPolicyTest_User) GetLabels() map[string]string {
+ if x != nil {
+ return x.Labels
+ }
+ return nil
+}
+
+type AccessPolicyTest_Cluster struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+}
+
+func (x *AccessPolicyTest_Cluster) Reset() {
+ *x = AccessPolicyTest_Cluster{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[22]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccessPolicyTest_Cluster) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccessPolicyTest_Cluster) ProtoMessage() {}
+
+func (x *AccessPolicyTest_Cluster) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[22]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccessPolicyTest_Cluster.ProtoReflect.Descriptor instead.
+func (*AccessPolicyTest_Cluster) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{9, 2}
+}
+
+func (x *AccessPolicyTest_Cluster) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+type AccessPolicyTest_Expected_Kubernetes struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Impersonate *AccessPolicyTest_Expected_Kubernetes_Impersonate `protobuf:"bytes,1,opt,name=impersonate,proto3" json:"impersonate,omitempty"`
+}
+
+func (x *AccessPolicyTest_Expected_Kubernetes) Reset() {
+ *x = AccessPolicyTest_Expected_Kubernetes{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[23]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccessPolicyTest_Expected_Kubernetes) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccessPolicyTest_Expected_Kubernetes) ProtoMessage() {}
+
+func (x *AccessPolicyTest_Expected_Kubernetes) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[23]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccessPolicyTest_Expected_Kubernetes.ProtoReflect.Descriptor instead.
+func (*AccessPolicyTest_Expected_Kubernetes) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{9, 0, 0}
+}
+
+func (x *AccessPolicyTest_Expected_Kubernetes) GetImpersonate() *AccessPolicyTest_Expected_Kubernetes_Impersonate {
+ if x != nil {
+ return x.Impersonate
+ }
+ return nil
+}
+
+type AccessPolicyTest_Expected_Kubernetes_Impersonate struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Groups []string `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty"`
+}
+
+func (x *AccessPolicyTest_Expected_Kubernetes_Impersonate) Reset() {
+ *x = AccessPolicyTest_Expected_Kubernetes_Impersonate{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_auth_proto_msgTypes[24]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccessPolicyTest_Expected_Kubernetes_Impersonate) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccessPolicyTest_Expected_Kubernetes_Impersonate) ProtoMessage() {}
+
+func (x *AccessPolicyTest_Expected_Kubernetes_Impersonate) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_auth_proto_msgTypes[24]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccessPolicyTest_Expected_Kubernetes_Impersonate.ProtoReflect.Descriptor instead.
+func (*AccessPolicyTest_Expected_Kubernetes_Impersonate) Descriptor() ([]byte, []int) {
+ return file_omni_specs_auth_proto_rawDescGZIP(), []int{9, 0, 0, 0}
+}
+
+func (x *AccessPolicyTest_Expected_Kubernetes_Impersonate) GetGroups() []string {
+ if x != nil {
+ return x.Groups
+ }
+ return nil
+}
+
+var File_omni_specs_auth_proto protoreflect.FileDescriptor
+
+var file_omni_specs_auth_proto_rawDesc = []byte{
+ 0x0a, 0x15, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2f, 0x61, 0x75, 0x74,
+ 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x73, 0x70, 0x65, 0x63, 0x73, 0x1a, 0x1b,
+ 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x6d, 0x61,
+ 0x63, 0x68, 0x69, 0x6e, 0x65, 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, 0xc4, 0x04, 0x0a,
+ 0x0e, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12,
+ 0x31, 0x0a, 0x05, 0x61, 0x75, 0x74, 0x68, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
+ 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x30, 0x52, 0x05, 0x61, 0x75, 0x74,
+ 0x68, 0x30, 0x12, 0x3a, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x75, 0x74,
+ 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x57, 0x65, 0x62, 0x61,
+ 0x75, 0x74, 0x68, 0x6e, 0x52, 0x08, 0x77, 0x65, 0x62, 0x61, 0x75, 0x74, 0x68, 0x6e, 0x12, 0x1c,
+ 0x0a, 0x09, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x09, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x04,
+ 0x73, 0x61, 0x6d, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70, 0x65,
+ 0x63, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65,
+ 0x63, 0x2e, 0x53, 0x41, 0x4d, 0x4c, 0x52, 0x04, 0x73, 0x61, 0x6d, 0x6c, 0x1a, 0x56, 0x0a, 0x05,
+ 0x41, 0x75, 0x74, 0x68, 0x30, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12,
+ 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e,
+ 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65,
+ 0x6e, 0x74, 0x49, 0x64, 0x1a, 0x40, 0x0a, 0x08, 0x57, 0x65, 0x62, 0x61, 0x75, 0x74, 0x68, 0x6e,
+ 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65,
+ 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65,
+ 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x1a, 0xda, 0x01, 0x0a, 0x04, 0x53, 0x41, 0x4d, 0x4c, 0x12,
+ 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4b, 0x0a, 0x0b, 0x6c, 0x61, 0x62, 0x65, 0x6c,
+ 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73,
+ 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53,
+ 0x70, 0x65, 0x63, 0x2e, 0x53, 0x41, 0x4d, 0x4c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x75,
+ 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x52,
+ 0x75, 0x6c, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x75, 0x6c,
+ 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+ 0x02, 0x38, 0x01, 0x22, 0x51, 0x0a, 0x11, 0x53, 0x41, 0x4d, 0x4c, 0x41, 0x73, 0x73, 0x65, 0x72,
+ 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05,
+ 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61,
+ 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x04, 0x75, 0x73, 0x65, 0x64, 0x22, 0x3c, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70,
+ 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f,
+ 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x4a, 0x04,
+ 0x08, 0x01, 0x10, 0x02, 0x22, 0x27, 0x0a, 0x0c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+ 0x53, 0x70, 0x65, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x20, 0x0a,
+ 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61,
+ 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22,
+ 0xe1, 0x01, 0x0a, 0x0d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x53, 0x70, 0x65,
+ 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79,
+ 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 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, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65,
+ 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d,
+ 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x49, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12,
+ 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72,
+ 0x6f, 0x6c, 0x65, 0x22, 0xab, 0x01, 0x0a, 0x15, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x37, 0x0a,
+ 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73,
+ 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52,
+ 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x59, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x12,
+ 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x6c, 0x61, 0x62, 0x65,
+ 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x0e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x73, 0x22, 0x94, 0x01, 0x0a, 0x18, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x43,
+ 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x27, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x73, 0x1a, 0x33, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12,
+ 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xa4, 0x02, 0x0a, 0x10, 0x41, 0x63, 0x63,
+ 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x14, 0x0a,
+ 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x75, 0x73,
+ 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18,
+ 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12,
+ 0x42, 0x0a, 0x0a, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65,
+ 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x4b, 0x75, 0x62,
+ 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x52, 0x0a, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65,
+ 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x1a, 0x85, 0x01, 0x0a, 0x0a, 0x4b, 0x75, 0x62, 0x65,
+ 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x0b, 0x69, 0x6d, 0x70, 0x65, 0x72, 0x73,
+ 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x70,
+ 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x2e,
+ 0x49, 0x6d, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x69, 0x6d, 0x70,
+ 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x1a, 0x25, 0x0a, 0x0b, 0x49, 0x6d, 0x70, 0x65,
+ 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22,
+ 0x89, 0x05, 0x0a, 0x10, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41,
+ 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x65, 0x73, 0x74, 0x2e,
+ 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x07, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x70,
+ 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65,
+ 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e,
+ 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x65, 0x73, 0x74,
+ 0x2e, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x08, 0x65, 0x78, 0x70, 0x65, 0x63,
+ 0x74, 0x65, 0x64, 0x1a, 0xfc, 0x01, 0x0a, 0x08, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64,
+ 0x12, 0x4b, 0x0a, 0x0a, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x63,
+ 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x78,
+ 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65,
+ 0x73, 0x52, 0x0a, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a,
+ 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c,
+ 0x65, 0x1a, 0x8e, 0x01, 0x0a, 0x0a, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73,
+ 0x12, 0x59, 0x0a, 0x0b, 0x69, 0x6d, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63,
+ 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x45,
+ 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74,
+ 0x65, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x0b,
+ 0x69, 0x6d, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x1a, 0x25, 0x0a, 0x0b, 0x49,
+ 0x6d, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x73, 0x1a, 0x97, 0x01, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x40, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x28, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x4c, 0x61,
+ 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c,
+ 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
+ 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x1d, 0x0a, 0x07,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xcd, 0x03, 0x0a, 0x10,
+ 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63,
+ 0x12, 0x48, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63,
+ 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x55,
+ 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a,
+ 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x51, 0x0a, 0x0e, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73,
+ 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x2d, 0x0a,
+ 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73,
+ 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x05,
+ 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70,
+ 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x65, 0x73, 0x74, 0x52, 0x05, 0x74, 0x65, 0x73, 0x74, 0x73, 0x1a, 0x5b, 0x0a, 0x0f, 0x55,
+ 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+ 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
+ 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1c, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x61, 0x0a, 0x12, 0x43, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+ 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
+ 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1f, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x75, 0x0a, 0x11, 0x53,
+ 0x41, 0x4d, 0x4c, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63,
+ 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62,
+ 0x65, 0x6c, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x6f,
+ 0x6c, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e,
+ 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x2f, 0x73, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6f, 0x6d, 0x6e, 0x69,
+ 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x6d, 0x6e, 0x69,
+ 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_omni_specs_auth_proto_rawDescOnce sync.Once
+ file_omni_specs_auth_proto_rawDescData = file_omni_specs_auth_proto_rawDesc
+)
+
+func file_omni_specs_auth_proto_rawDescGZIP() []byte {
+ file_omni_specs_auth_proto_rawDescOnce.Do(func() {
+ file_omni_specs_auth_proto_rawDescData = protoimpl.X.CompressGZIP(file_omni_specs_auth_proto_rawDescData)
+ })
+ return file_omni_specs_auth_proto_rawDescData
+}
+
+var file_omni_specs_auth_proto_msgTypes = make([]protoimpl.MessageInfo, 28)
+var file_omni_specs_auth_proto_goTypes = []interface{}{
+ (*AuthConfigSpec)(nil), // 0: specs.AuthConfigSpec
+ (*SAMLAssertionSpec)(nil), // 1: specs.SAMLAssertionSpec
+ (*UserSpec)(nil), // 2: specs.UserSpec
+ (*IdentitySpec)(nil), // 3: specs.IdentitySpec
+ (*Identity)(nil), // 4: specs.Identity
+ (*PublicKeySpec)(nil), // 5: specs.PublicKeySpec
+ (*AccessPolicyUserGroup)(nil), // 6: specs.AccessPolicyUserGroup
+ (*AccessPolicyClusterGroup)(nil), // 7: specs.AccessPolicyClusterGroup
+ (*AccessPolicyRule)(nil), // 8: specs.AccessPolicyRule
+ (*AccessPolicyTest)(nil), // 9: specs.AccessPolicyTest
+ (*AccessPolicySpec)(nil), // 10: specs.AccessPolicySpec
+ (*SAMLLabelRuleSpec)(nil), // 11: specs.SAMLLabelRuleSpec
+ (*AuthConfigSpec_Auth0)(nil), // 12: specs.AuthConfigSpec.Auth0
+ (*AuthConfigSpec_Webauthn)(nil), // 13: specs.AuthConfigSpec.Webauthn
+ (*AuthConfigSpec_SAML)(nil), // 14: specs.AuthConfigSpec.SAML
+ nil, // 15: specs.AuthConfigSpec.SAML.LabelRulesEntry
+ (*AccessPolicyUserGroup_User)(nil), // 16: specs.AccessPolicyUserGroup.User
+ (*AccessPolicyClusterGroup_Cluster)(nil), // 17: specs.AccessPolicyClusterGroup.Cluster
+ (*AccessPolicyRule_Kubernetes)(nil), // 18: specs.AccessPolicyRule.Kubernetes
+ (*AccessPolicyRule_Kubernetes_Impersonate)(nil), // 19: specs.AccessPolicyRule.Kubernetes.Impersonate
+ (*AccessPolicyTest_Expected)(nil), // 20: specs.AccessPolicyTest.Expected
+ (*AccessPolicyTest_User)(nil), // 21: specs.AccessPolicyTest.User
+ (*AccessPolicyTest_Cluster)(nil), // 22: specs.AccessPolicyTest.Cluster
+ (*AccessPolicyTest_Expected_Kubernetes)(nil), // 23: specs.AccessPolicyTest.Expected.Kubernetes
+ (*AccessPolicyTest_Expected_Kubernetes_Impersonate)(nil), // 24: specs.AccessPolicyTest.Expected.Kubernetes.Impersonate
+ nil, // 25: specs.AccessPolicyTest.User.LabelsEntry
+ nil, // 26: specs.AccessPolicySpec.UserGroupsEntry
+ nil, // 27: specs.AccessPolicySpec.ClusterGroupsEntry
+ (*timestamppb.Timestamp)(nil), // 28: google.protobuf.Timestamp
+}
+var file_omni_specs_auth_proto_depIdxs = []int32{
+ 12, // 0: specs.AuthConfigSpec.auth0:type_name -> specs.AuthConfigSpec.Auth0
+ 13, // 1: specs.AuthConfigSpec.webauthn:type_name -> specs.AuthConfigSpec.Webauthn
+ 14, // 2: specs.AuthConfigSpec.saml:type_name -> specs.AuthConfigSpec.SAML
+ 28, // 3: specs.PublicKeySpec.expiration:type_name -> google.protobuf.Timestamp
+ 4, // 4: specs.PublicKeySpec.identity:type_name -> specs.Identity
+ 16, // 5: specs.AccessPolicyUserGroup.users:type_name -> specs.AccessPolicyUserGroup.User
+ 17, // 6: specs.AccessPolicyClusterGroup.clusters:type_name -> specs.AccessPolicyClusterGroup.Cluster
+ 18, // 7: specs.AccessPolicyRule.kubernetes:type_name -> specs.AccessPolicyRule.Kubernetes
+ 21, // 8: specs.AccessPolicyTest.user:type_name -> specs.AccessPolicyTest.User
+ 22, // 9: specs.AccessPolicyTest.cluster:type_name -> specs.AccessPolicyTest.Cluster
+ 20, // 10: specs.AccessPolicyTest.expected:type_name -> specs.AccessPolicyTest.Expected
+ 26, // 11: specs.AccessPolicySpec.user_groups:type_name -> specs.AccessPolicySpec.UserGroupsEntry
+ 27, // 12: specs.AccessPolicySpec.cluster_groups:type_name -> specs.AccessPolicySpec.ClusterGroupsEntry
+ 8, // 13: specs.AccessPolicySpec.rules:type_name -> specs.AccessPolicyRule
+ 9, // 14: specs.AccessPolicySpec.tests:type_name -> specs.AccessPolicyTest
+ 15, // 15: specs.AuthConfigSpec.SAML.label_rules:type_name -> specs.AuthConfigSpec.SAML.LabelRulesEntry
+ 19, // 16: specs.AccessPolicyRule.Kubernetes.impersonate:type_name -> specs.AccessPolicyRule.Kubernetes.Impersonate
+ 23, // 17: specs.AccessPolicyTest.Expected.kubernetes:type_name -> specs.AccessPolicyTest.Expected.Kubernetes
+ 25, // 18: specs.AccessPolicyTest.User.labels:type_name -> specs.AccessPolicyTest.User.LabelsEntry
+ 24, // 19: specs.AccessPolicyTest.Expected.Kubernetes.impersonate:type_name -> specs.AccessPolicyTest.Expected.Kubernetes.Impersonate
+ 6, // 20: specs.AccessPolicySpec.UserGroupsEntry.value:type_name -> specs.AccessPolicyUserGroup
+ 7, // 21: specs.AccessPolicySpec.ClusterGroupsEntry.value:type_name -> specs.AccessPolicyClusterGroup
+ 22, // [22:22] is the sub-list for method output_type
+ 22, // [22:22] is the sub-list for method input_type
+ 22, // [22:22] is the sub-list for extension type_name
+ 22, // [22:22] is the sub-list for extension extendee
+ 0, // [0:22] is the sub-list for field type_name
+}
+
+func init() { file_omni_specs_auth_proto_init() }
+func file_omni_specs_auth_proto_init() {
+ if File_omni_specs_auth_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_omni_specs_auth_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AuthConfigSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SAMLAssertionSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UserSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*IdentitySpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Identity); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PublicKeySpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccessPolicyUserGroup); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccessPolicyClusterGroup); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccessPolicyRule); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccessPolicyTest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccessPolicySpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SAMLLabelRuleSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AuthConfigSpec_Auth0); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AuthConfigSpec_Webauthn); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AuthConfigSpec_SAML); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccessPolicyUserGroup_User); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccessPolicyClusterGroup_Cluster); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccessPolicyRule_Kubernetes); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccessPolicyRule_Kubernetes_Impersonate); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccessPolicyTest_Expected); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccessPolicyTest_User); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccessPolicyTest_Cluster); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccessPolicyTest_Expected_Kubernetes); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_auth_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccessPolicyTest_Expected_Kubernetes_Impersonate); 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{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_omni_specs_auth_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 28,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_omni_specs_auth_proto_goTypes,
+ DependencyIndexes: file_omni_specs_auth_proto_depIdxs,
+ MessageInfos: file_omni_specs_auth_proto_msgTypes,
+ }.Build()
+ File_omni_specs_auth_proto = out.File
+ file_omni_specs_auth_proto_rawDesc = nil
+ file_omni_specs_auth_proto_goTypes = nil
+ file_omni_specs_auth_proto_depIdxs = nil
+}
diff --git a/client/api/omni/specs/auth.proto b/client/api/omni/specs/auth.proto
new file mode 100644
index 000000000..1a7626412
--- /dev/null
+++ b/client/api/omni/specs/auth.proto
@@ -0,0 +1,165 @@
+syntax = "proto3";
+package specs;
+
+option go_package = "github.com/siderolabs/omni/client/api/omni/specs";
+
+import "talos/machine/machine.proto";
+import "google/protobuf/timestamp.proto";
+
+// AuthConfigSpec describes the authentication configuration.
+message AuthConfigSpec {
+ message Auth0 {
+ bool enabled = 1;
+ string domain = 2;
+ string client_id = 3;
+ }
+
+ message Webauthn {
+ bool enabled = 1;
+ bool required = 2;
+ }
+
+ message SAML {
+ bool enabled = 1;
+ string url = 2;
+ string metadata = 3;
+ // LabelRules defines custom rules on how to extract SAML attributes from the
+ // saml assertion and turn them into labels.
+ map label_rules = 4;
+ }
+
+ Auth0 auth0 = 1;
+ Webauthn webauthn = 2;
+ bool suspended = 3;
+ SAML saml = 4;
+}
+
+// SAMLAssertionSpec describes SAML assertion.
+message SAMLAssertionSpec {
+ // Data keeps JSON encoded SAML assertion.
+ bytes data = 1;
+
+ // Email is the identity that was read from the assertion.
+ string email = 2;
+
+ // Used marks SAML assertion as used.
+ bool used = 3;
+}
+
+// UserSpec describes a user.
+message UserSpec {
+ reserved 1;
+ // Scopes are deprecated, use roles instead.
+ //
+ // Deprecated: will be removed once all environments are migrated to use roles.
+ // TODO: remove after all environments are migrated to use roles.
+ repeated string scopes = 2;
+ string role = 3;
+}
+
+// IdentitySpec describes a user identity.
+message IdentitySpec {
+ string user_id = 1;
+}
+
+message Identity {
+ string email = 1;
+}
+
+// PublicKeySpec describes a user or service account public key.
+message PublicKeySpec {
+ bytes public_key = 1;
+ // Scopes are deprecated, use roles instead.
+ //
+ // Deprecated: will be removed once all environments are migrated to use roles.
+ // TODO: remove after all environments are migrated to use roles.
+ repeated string scopes = 2;
+ google.protobuf.Timestamp expiration = 3;
+ bool confirmed = 4;
+ Identity identity = 5;
+ string role = 6;
+}
+
+// AccessPolicyUserGroup describes a user group in the ACLs context.
+message AccessPolicyUserGroup {
+ message User {
+ string name = 1;
+ string match = 2;
+ repeated string label_selectors = 3;
+ }
+
+ repeated User users = 1;
+}
+
+// AccessPolicyClusterGroup describes a cluster group in the ACLs context.
+message AccessPolicyClusterGroup {
+ message Cluster {
+ string name = 1;
+ string match = 2;
+ }
+
+ repeated Cluster clusters = 1;
+}
+
+// AccessPolicyRule describes a rule in the ACLs context.
+message AccessPolicyRule {
+ message Kubernetes {
+ message Impersonate {
+ repeated string groups = 1;
+ }
+
+ Impersonate impersonate = 1;
+ }
+
+ repeated string users = 1;
+ repeated string clusters = 2;
+ Kubernetes kubernetes = 3;
+ string role = 4;
+}
+
+message AccessPolicyTest {
+ message Expected {
+ message Kubernetes {
+ message Impersonate {
+ repeated string groups = 1;
+ }
+
+ Impersonate impersonate = 1;
+ }
+
+ Kubernetes kubernetes = 1;
+ string role = 2;
+ }
+
+ message User {
+ string name = 1;
+ map labels = 2;
+ }
+
+ message Cluster {
+ string name = 1;
+ }
+
+ string name = 1;
+ User user = 2;
+ Cluster cluster = 3;
+ Expected expected = 4;
+}
+
+// AccessPolicySpec describes the access policy configuration.
+message AccessPolicySpec {
+ map user_groups = 1;
+ map cluster_groups = 2;
+ repeated AccessPolicyRule rules = 3;
+ repeated AccessPolicyTest tests = 4;
+}
+
+// SAMLLabelRuleSpec describes a rule on how to map Identity labels to Omni roles.
+//
+message SAMLLabelRuleSpec {
+ // MatchLabels is the list of labels to match the user's Identity against this rule.
+ repeated string match_labels = 1;
+
+ // AssignRoleOnRegistration is the role to be assigned to the user if this rule matches.
+ string assign_role_on_registration = 2;
+}
diff --git a/client/api/omni/specs/auth_vtproto.pb.go b/client/api/omni/specs/auth_vtproto.pb.go
new file mode 100644
index 000000000..760c01077
--- /dev/null
+++ b/client/api/omni/specs/auth_vtproto.pb.go
@@ -0,0 +1,6474 @@
+// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.
+// protoc-gen-go-vtproto version: v0.6.0
+// source: omni/specs/auth.proto
+
+package specs
+
+import (
+ fmt "fmt"
+ io "io"
+
+ protohelpers "github.com/planetscale/vtprotobuf/protohelpers"
+ timestamppb1 "github.com/planetscale/vtprotobuf/types/known/timestamppb"
+ proto "google.golang.org/protobuf/proto"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+func (m *AuthConfigSpec_Auth0) CloneVT() *AuthConfigSpec_Auth0 {
+ if m == nil {
+ return (*AuthConfigSpec_Auth0)(nil)
+ }
+ r := new(AuthConfigSpec_Auth0)
+ r.Enabled = m.Enabled
+ r.Domain = m.Domain
+ r.ClientId = m.ClientId
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AuthConfigSpec_Auth0) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AuthConfigSpec_Webauthn) CloneVT() *AuthConfigSpec_Webauthn {
+ if m == nil {
+ return (*AuthConfigSpec_Webauthn)(nil)
+ }
+ r := new(AuthConfigSpec_Webauthn)
+ r.Enabled = m.Enabled
+ r.Required = m.Required
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AuthConfigSpec_Webauthn) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AuthConfigSpec_SAML) CloneVT() *AuthConfigSpec_SAML {
+ if m == nil {
+ return (*AuthConfigSpec_SAML)(nil)
+ }
+ r := new(AuthConfigSpec_SAML)
+ r.Enabled = m.Enabled
+ r.Url = m.Url
+ r.Metadata = m.Metadata
+ if rhs := m.LabelRules; rhs != nil {
+ tmpContainer := make(map[string]string, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v
+ }
+ r.LabelRules = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AuthConfigSpec_SAML) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AuthConfigSpec) CloneVT() *AuthConfigSpec {
+ if m == nil {
+ return (*AuthConfigSpec)(nil)
+ }
+ r := new(AuthConfigSpec)
+ r.Auth0 = m.Auth0.CloneVT()
+ r.Webauthn = m.Webauthn.CloneVT()
+ r.Suspended = m.Suspended
+ r.Saml = m.Saml.CloneVT()
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AuthConfigSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *SAMLAssertionSpec) CloneVT() *SAMLAssertionSpec {
+ if m == nil {
+ return (*SAMLAssertionSpec)(nil)
+ }
+ r := new(SAMLAssertionSpec)
+ r.Email = m.Email
+ r.Used = m.Used
+ if rhs := m.Data; rhs != nil {
+ tmpBytes := make([]byte, len(rhs))
+ copy(tmpBytes, rhs)
+ r.Data = tmpBytes
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *SAMLAssertionSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *UserSpec) CloneVT() *UserSpec {
+ if m == nil {
+ return (*UserSpec)(nil)
+ }
+ r := new(UserSpec)
+ r.Role = m.Role
+ if rhs := m.Scopes; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.Scopes = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *UserSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *IdentitySpec) CloneVT() *IdentitySpec {
+ if m == nil {
+ return (*IdentitySpec)(nil)
+ }
+ r := new(IdentitySpec)
+ r.UserId = m.UserId
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *IdentitySpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *Identity) CloneVT() *Identity {
+ if m == nil {
+ return (*Identity)(nil)
+ }
+ r := new(Identity)
+ r.Email = m.Email
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *Identity) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *PublicKeySpec) CloneVT() *PublicKeySpec {
+ if m == nil {
+ return (*PublicKeySpec)(nil)
+ }
+ r := new(PublicKeySpec)
+ r.Expiration = (*timestamppb.Timestamp)((*timestamppb1.Timestamp)(m.Expiration).CloneVT())
+ r.Confirmed = m.Confirmed
+ r.Identity = m.Identity.CloneVT()
+ r.Role = m.Role
+ if rhs := m.PublicKey; rhs != nil {
+ tmpBytes := make([]byte, len(rhs))
+ copy(tmpBytes, rhs)
+ r.PublicKey = tmpBytes
+ }
+ if rhs := m.Scopes; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.Scopes = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *PublicKeySpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AccessPolicyUserGroup_User) CloneVT() *AccessPolicyUserGroup_User {
+ if m == nil {
+ return (*AccessPolicyUserGroup_User)(nil)
+ }
+ r := new(AccessPolicyUserGroup_User)
+ r.Name = m.Name
+ r.Match = m.Match
+ if rhs := m.LabelSelectors; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.LabelSelectors = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AccessPolicyUserGroup_User) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AccessPolicyUserGroup) CloneVT() *AccessPolicyUserGroup {
+ if m == nil {
+ return (*AccessPolicyUserGroup)(nil)
+ }
+ r := new(AccessPolicyUserGroup)
+ if rhs := m.Users; rhs != nil {
+ tmpContainer := make([]*AccessPolicyUserGroup_User, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.Users = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AccessPolicyUserGroup) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AccessPolicyClusterGroup_Cluster) CloneVT() *AccessPolicyClusterGroup_Cluster {
+ if m == nil {
+ return (*AccessPolicyClusterGroup_Cluster)(nil)
+ }
+ r := new(AccessPolicyClusterGroup_Cluster)
+ r.Name = m.Name
+ r.Match = m.Match
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AccessPolicyClusterGroup_Cluster) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AccessPolicyClusterGroup) CloneVT() *AccessPolicyClusterGroup {
+ if m == nil {
+ return (*AccessPolicyClusterGroup)(nil)
+ }
+ r := new(AccessPolicyClusterGroup)
+ if rhs := m.Clusters; rhs != nil {
+ tmpContainer := make([]*AccessPolicyClusterGroup_Cluster, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.Clusters = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AccessPolicyClusterGroup) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AccessPolicyRule_Kubernetes_Impersonate) CloneVT() *AccessPolicyRule_Kubernetes_Impersonate {
+ if m == nil {
+ return (*AccessPolicyRule_Kubernetes_Impersonate)(nil)
+ }
+ r := new(AccessPolicyRule_Kubernetes_Impersonate)
+ if rhs := m.Groups; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.Groups = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AccessPolicyRule_Kubernetes_Impersonate) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AccessPolicyRule_Kubernetes) CloneVT() *AccessPolicyRule_Kubernetes {
+ if m == nil {
+ return (*AccessPolicyRule_Kubernetes)(nil)
+ }
+ r := new(AccessPolicyRule_Kubernetes)
+ r.Impersonate = m.Impersonate.CloneVT()
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AccessPolicyRule_Kubernetes) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AccessPolicyRule) CloneVT() *AccessPolicyRule {
+ if m == nil {
+ return (*AccessPolicyRule)(nil)
+ }
+ r := new(AccessPolicyRule)
+ r.Kubernetes = m.Kubernetes.CloneVT()
+ r.Role = m.Role
+ if rhs := m.Users; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.Users = tmpContainer
+ }
+ if rhs := m.Clusters; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.Clusters = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AccessPolicyRule) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AccessPolicyTest_Expected_Kubernetes_Impersonate) CloneVT() *AccessPolicyTest_Expected_Kubernetes_Impersonate {
+ if m == nil {
+ return (*AccessPolicyTest_Expected_Kubernetes_Impersonate)(nil)
+ }
+ r := new(AccessPolicyTest_Expected_Kubernetes_Impersonate)
+ if rhs := m.Groups; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.Groups = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AccessPolicyTest_Expected_Kubernetes_Impersonate) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AccessPolicyTest_Expected_Kubernetes) CloneVT() *AccessPolicyTest_Expected_Kubernetes {
+ if m == nil {
+ return (*AccessPolicyTest_Expected_Kubernetes)(nil)
+ }
+ r := new(AccessPolicyTest_Expected_Kubernetes)
+ r.Impersonate = m.Impersonate.CloneVT()
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AccessPolicyTest_Expected_Kubernetes) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AccessPolicyTest_Expected) CloneVT() *AccessPolicyTest_Expected {
+ if m == nil {
+ return (*AccessPolicyTest_Expected)(nil)
+ }
+ r := new(AccessPolicyTest_Expected)
+ r.Kubernetes = m.Kubernetes.CloneVT()
+ r.Role = m.Role
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AccessPolicyTest_Expected) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AccessPolicyTest_User) CloneVT() *AccessPolicyTest_User {
+ if m == nil {
+ return (*AccessPolicyTest_User)(nil)
+ }
+ r := new(AccessPolicyTest_User)
+ r.Name = m.Name
+ if rhs := m.Labels; rhs != nil {
+ tmpContainer := make(map[string]string, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v
+ }
+ r.Labels = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AccessPolicyTest_User) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AccessPolicyTest_Cluster) CloneVT() *AccessPolicyTest_Cluster {
+ if m == nil {
+ return (*AccessPolicyTest_Cluster)(nil)
+ }
+ r := new(AccessPolicyTest_Cluster)
+ r.Name = m.Name
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AccessPolicyTest_Cluster) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AccessPolicyTest) CloneVT() *AccessPolicyTest {
+ if m == nil {
+ return (*AccessPolicyTest)(nil)
+ }
+ r := new(AccessPolicyTest)
+ r.Name = m.Name
+ r.User = m.User.CloneVT()
+ r.Cluster = m.Cluster.CloneVT()
+ r.Expected = m.Expected.CloneVT()
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AccessPolicyTest) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *AccessPolicySpec) CloneVT() *AccessPolicySpec {
+ if m == nil {
+ return (*AccessPolicySpec)(nil)
+ }
+ r := new(AccessPolicySpec)
+ if rhs := m.UserGroups; rhs != nil {
+ tmpContainer := make(map[string]*AccessPolicyUserGroup, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.UserGroups = tmpContainer
+ }
+ if rhs := m.ClusterGroups; rhs != nil {
+ tmpContainer := make(map[string]*AccessPolicyClusterGroup, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.ClusterGroups = tmpContainer
+ }
+ if rhs := m.Rules; rhs != nil {
+ tmpContainer := make([]*AccessPolicyRule, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.Rules = tmpContainer
+ }
+ if rhs := m.Tests; rhs != nil {
+ tmpContainer := make([]*AccessPolicyTest, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.Tests = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *AccessPolicySpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *SAMLLabelRuleSpec) CloneVT() *SAMLLabelRuleSpec {
+ if m == nil {
+ return (*SAMLLabelRuleSpec)(nil)
+ }
+ r := new(SAMLLabelRuleSpec)
+ r.AssignRoleOnRegistration = m.AssignRoleOnRegistration
+ if rhs := m.MatchLabels; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.MatchLabels = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *SAMLLabelRuleSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (this *AuthConfigSpec_Auth0) EqualVT(that *AuthConfigSpec_Auth0) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Enabled != that.Enabled {
+ return false
+ }
+ if this.Domain != that.Domain {
+ return false
+ }
+ if this.ClientId != that.ClientId {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AuthConfigSpec_Auth0) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AuthConfigSpec_Auth0)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AuthConfigSpec_Webauthn) EqualVT(that *AuthConfigSpec_Webauthn) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Enabled != that.Enabled {
+ return false
+ }
+ if this.Required != that.Required {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AuthConfigSpec_Webauthn) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AuthConfigSpec_Webauthn)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AuthConfigSpec_SAML) EqualVT(that *AuthConfigSpec_SAML) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Enabled != that.Enabled {
+ return false
+ }
+ if this.Url != that.Url {
+ return false
+ }
+ if this.Metadata != that.Metadata {
+ return false
+ }
+ if len(this.LabelRules) != len(that.LabelRules) {
+ return false
+ }
+ for i, vx := range this.LabelRules {
+ vy, ok := that.LabelRules[i]
+ if !ok {
+ return false
+ }
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AuthConfigSpec_SAML) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AuthConfigSpec_SAML)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AuthConfigSpec) EqualVT(that *AuthConfigSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if !this.Auth0.EqualVT(that.Auth0) {
+ return false
+ }
+ if !this.Webauthn.EqualVT(that.Webauthn) {
+ return false
+ }
+ if this.Suspended != that.Suspended {
+ return false
+ }
+ if !this.Saml.EqualVT(that.Saml) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AuthConfigSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AuthConfigSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *SAMLAssertionSpec) EqualVT(that *SAMLAssertionSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if string(this.Data) != string(that.Data) {
+ return false
+ }
+ if this.Email != that.Email {
+ return false
+ }
+ if this.Used != that.Used {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *SAMLAssertionSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*SAMLAssertionSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *UserSpec) EqualVT(that *UserSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.Scopes) != len(that.Scopes) {
+ return false
+ }
+ for i, vx := range this.Scopes {
+ vy := that.Scopes[i]
+ if vx != vy {
+ return false
+ }
+ }
+ if this.Role != that.Role {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *UserSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*UserSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *IdentitySpec) EqualVT(that *IdentitySpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.UserId != that.UserId {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *IdentitySpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*IdentitySpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *Identity) EqualVT(that *Identity) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Email != that.Email {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *Identity) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*Identity)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *PublicKeySpec) EqualVT(that *PublicKeySpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if string(this.PublicKey) != string(that.PublicKey) {
+ return false
+ }
+ if len(this.Scopes) != len(that.Scopes) {
+ return false
+ }
+ for i, vx := range this.Scopes {
+ vy := that.Scopes[i]
+ if vx != vy {
+ return false
+ }
+ }
+ if !(*timestamppb1.Timestamp)(this.Expiration).EqualVT((*timestamppb1.Timestamp)(that.Expiration)) {
+ return false
+ }
+ if this.Confirmed != that.Confirmed {
+ return false
+ }
+ if !this.Identity.EqualVT(that.Identity) {
+ return false
+ }
+ if this.Role != that.Role {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *PublicKeySpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*PublicKeySpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AccessPolicyUserGroup_User) EqualVT(that *AccessPolicyUserGroup_User) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Name != that.Name {
+ return false
+ }
+ if this.Match != that.Match {
+ return false
+ }
+ if len(this.LabelSelectors) != len(that.LabelSelectors) {
+ return false
+ }
+ for i, vx := range this.LabelSelectors {
+ vy := that.LabelSelectors[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AccessPolicyUserGroup_User) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AccessPolicyUserGroup_User)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AccessPolicyUserGroup) EqualVT(that *AccessPolicyUserGroup) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.Users) != len(that.Users) {
+ return false
+ }
+ for i, vx := range this.Users {
+ vy := that.Users[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &AccessPolicyUserGroup_User{}
+ }
+ if q == nil {
+ q = &AccessPolicyUserGroup_User{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AccessPolicyUserGroup) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AccessPolicyUserGroup)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AccessPolicyClusterGroup_Cluster) EqualVT(that *AccessPolicyClusterGroup_Cluster) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Name != that.Name {
+ return false
+ }
+ if this.Match != that.Match {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AccessPolicyClusterGroup_Cluster) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AccessPolicyClusterGroup_Cluster)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AccessPolicyClusterGroup) EqualVT(that *AccessPolicyClusterGroup) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.Clusters) != len(that.Clusters) {
+ return false
+ }
+ for i, vx := range this.Clusters {
+ vy := that.Clusters[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &AccessPolicyClusterGroup_Cluster{}
+ }
+ if q == nil {
+ q = &AccessPolicyClusterGroup_Cluster{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AccessPolicyClusterGroup) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AccessPolicyClusterGroup)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AccessPolicyRule_Kubernetes_Impersonate) EqualVT(that *AccessPolicyRule_Kubernetes_Impersonate) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.Groups) != len(that.Groups) {
+ return false
+ }
+ for i, vx := range this.Groups {
+ vy := that.Groups[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AccessPolicyRule_Kubernetes_Impersonate) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AccessPolicyRule_Kubernetes_Impersonate)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AccessPolicyRule_Kubernetes) EqualVT(that *AccessPolicyRule_Kubernetes) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if !this.Impersonate.EqualVT(that.Impersonate) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AccessPolicyRule_Kubernetes) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AccessPolicyRule_Kubernetes)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AccessPolicyRule) EqualVT(that *AccessPolicyRule) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.Users) != len(that.Users) {
+ return false
+ }
+ for i, vx := range this.Users {
+ vy := that.Users[i]
+ if vx != vy {
+ return false
+ }
+ }
+ if len(this.Clusters) != len(that.Clusters) {
+ return false
+ }
+ for i, vx := range this.Clusters {
+ vy := that.Clusters[i]
+ if vx != vy {
+ return false
+ }
+ }
+ if !this.Kubernetes.EqualVT(that.Kubernetes) {
+ return false
+ }
+ if this.Role != that.Role {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AccessPolicyRule) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AccessPolicyRule)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AccessPolicyTest_Expected_Kubernetes_Impersonate) EqualVT(that *AccessPolicyTest_Expected_Kubernetes_Impersonate) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.Groups) != len(that.Groups) {
+ return false
+ }
+ for i, vx := range this.Groups {
+ vy := that.Groups[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AccessPolicyTest_Expected_Kubernetes_Impersonate) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AccessPolicyTest_Expected_Kubernetes_Impersonate)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AccessPolicyTest_Expected_Kubernetes) EqualVT(that *AccessPolicyTest_Expected_Kubernetes) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if !this.Impersonate.EqualVT(that.Impersonate) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AccessPolicyTest_Expected_Kubernetes) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AccessPolicyTest_Expected_Kubernetes)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AccessPolicyTest_Expected) EqualVT(that *AccessPolicyTest_Expected) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if !this.Kubernetes.EqualVT(that.Kubernetes) {
+ return false
+ }
+ if this.Role != that.Role {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AccessPolicyTest_Expected) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AccessPolicyTest_Expected)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AccessPolicyTest_User) EqualVT(that *AccessPolicyTest_User) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Name != that.Name {
+ return false
+ }
+ if len(this.Labels) != len(that.Labels) {
+ return false
+ }
+ for i, vx := range this.Labels {
+ vy, ok := that.Labels[i]
+ if !ok {
+ return false
+ }
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AccessPolicyTest_User) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AccessPolicyTest_User)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AccessPolicyTest_Cluster) EqualVT(that *AccessPolicyTest_Cluster) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Name != that.Name {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AccessPolicyTest_Cluster) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AccessPolicyTest_Cluster)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AccessPolicyTest) EqualVT(that *AccessPolicyTest) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Name != that.Name {
+ return false
+ }
+ if !this.User.EqualVT(that.User) {
+ return false
+ }
+ if !this.Cluster.EqualVT(that.Cluster) {
+ return false
+ }
+ if !this.Expected.EqualVT(that.Expected) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AccessPolicyTest) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AccessPolicyTest)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *AccessPolicySpec) EqualVT(that *AccessPolicySpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.UserGroups) != len(that.UserGroups) {
+ return false
+ }
+ for i, vx := range this.UserGroups {
+ vy, ok := that.UserGroups[i]
+ if !ok {
+ return false
+ }
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &AccessPolicyUserGroup{}
+ }
+ if q == nil {
+ q = &AccessPolicyUserGroup{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ if len(this.ClusterGroups) != len(that.ClusterGroups) {
+ return false
+ }
+ for i, vx := range this.ClusterGroups {
+ vy, ok := that.ClusterGroups[i]
+ if !ok {
+ return false
+ }
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &AccessPolicyClusterGroup{}
+ }
+ if q == nil {
+ q = &AccessPolicyClusterGroup{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ if len(this.Rules) != len(that.Rules) {
+ return false
+ }
+ for i, vx := range this.Rules {
+ vy := that.Rules[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &AccessPolicyRule{}
+ }
+ if q == nil {
+ q = &AccessPolicyRule{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ if len(this.Tests) != len(that.Tests) {
+ return false
+ }
+ for i, vx := range this.Tests {
+ vy := that.Tests[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &AccessPolicyTest{}
+ }
+ if q == nil {
+ q = &AccessPolicyTest{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *AccessPolicySpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*AccessPolicySpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *SAMLLabelRuleSpec) EqualVT(that *SAMLLabelRuleSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.MatchLabels) != len(that.MatchLabels) {
+ return false
+ }
+ for i, vx := range this.MatchLabels {
+ vy := that.MatchLabels[i]
+ if vx != vy {
+ return false
+ }
+ }
+ if this.AssignRoleOnRegistration != that.AssignRoleOnRegistration {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *SAMLLabelRuleSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*SAMLLabelRuleSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (m *AuthConfigSpec_Auth0) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AuthConfigSpec_Auth0) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AuthConfigSpec_Auth0) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.ClientId) > 0 {
+ i -= len(m.ClientId)
+ copy(dAtA[i:], m.ClientId)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClientId)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Domain) > 0 {
+ i -= len(m.Domain)
+ copy(dAtA[i:], m.Domain)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Domain)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Enabled {
+ i--
+ if m.Enabled {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AuthConfigSpec_Webauthn) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AuthConfigSpec_Webauthn) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AuthConfigSpec_Webauthn) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Required {
+ i--
+ if m.Required {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Enabled {
+ i--
+ if m.Enabled {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AuthConfigSpec_SAML) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AuthConfigSpec_SAML) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AuthConfigSpec_SAML) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.LabelRules) > 0 {
+ for k := range m.LabelRules {
+ v := m.LabelRules[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.Metadata) > 0 {
+ i -= len(m.Metadata)
+ copy(dAtA[i:], m.Metadata)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Metadata)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Url) > 0 {
+ i -= len(m.Url)
+ copy(dAtA[i:], m.Url)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Url)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Enabled {
+ i--
+ if m.Enabled {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AuthConfigSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AuthConfigSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AuthConfigSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Saml != nil {
+ size, err := m.Saml.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Suspended {
+ i--
+ if m.Suspended {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Webauthn != nil {
+ size, err := m.Webauthn.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Auth0 != nil {
+ size, err := m.Auth0.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SAMLAssertionSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SAMLAssertionSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *SAMLAssertionSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Used {
+ i--
+ if m.Used {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.Email) > 0 {
+ i -= len(m.Email)
+ copy(dAtA[i:], m.Email)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Email)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Data) > 0 {
+ i -= len(m.Data)
+ copy(dAtA[i:], m.Data)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Data)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *UserSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UserSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *UserSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Role) > 0 {
+ i -= len(m.Role)
+ copy(dAtA[i:], m.Role)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Role)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Scopes) > 0 {
+ for iNdEx := len(m.Scopes) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Scopes[iNdEx])
+ copy(dAtA[i:], m.Scopes[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Scopes[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *IdentitySpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *IdentitySpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *IdentitySpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.UserId) > 0 {
+ i -= len(m.UserId)
+ copy(dAtA[i:], m.UserId)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.UserId)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Identity) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Identity) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *Identity) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Email) > 0 {
+ i -= len(m.Email)
+ copy(dAtA[i:], m.Email)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Email)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *PublicKeySpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PublicKeySpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *PublicKeySpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Role) > 0 {
+ i -= len(m.Role)
+ copy(dAtA[i:], m.Role)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Role)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if m.Identity != nil {
+ size, err := m.Identity.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.Confirmed {
+ i--
+ if m.Confirmed {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Expiration != nil {
+ size, err := (*timestamppb1.Timestamp)(m.Expiration).MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Scopes) > 0 {
+ for iNdEx := len(m.Scopes) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Scopes[iNdEx])
+ copy(dAtA[i:], m.Scopes[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Scopes[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.PublicKey) > 0 {
+ i -= len(m.PublicKey)
+ copy(dAtA[i:], m.PublicKey)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PublicKey)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AccessPolicyUserGroup_User) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AccessPolicyUserGroup_User) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AccessPolicyUserGroup_User) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.LabelSelectors) > 0 {
+ for iNdEx := len(m.LabelSelectors) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.LabelSelectors[iNdEx])
+ copy(dAtA[i:], m.LabelSelectors[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.LabelSelectors[iNdEx])))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.Match) > 0 {
+ i -= len(m.Match)
+ copy(dAtA[i:], m.Match)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Match)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AccessPolicyUserGroup) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AccessPolicyUserGroup) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AccessPolicyUserGroup) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Users) > 0 {
+ for iNdEx := len(m.Users) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.Users[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AccessPolicyClusterGroup_Cluster) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AccessPolicyClusterGroup_Cluster) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AccessPolicyClusterGroup_Cluster) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Match) > 0 {
+ i -= len(m.Match)
+ copy(dAtA[i:], m.Match)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Match)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AccessPolicyClusterGroup) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AccessPolicyClusterGroup) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AccessPolicyClusterGroup) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Clusters) > 0 {
+ for iNdEx := len(m.Clusters) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.Clusters[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AccessPolicyRule_Kubernetes_Impersonate) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AccessPolicyRule_Kubernetes_Impersonate) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AccessPolicyRule_Kubernetes_Impersonate) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Groups) > 0 {
+ for iNdEx := len(m.Groups) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Groups[iNdEx])
+ copy(dAtA[i:], m.Groups[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Groups[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AccessPolicyRule_Kubernetes) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AccessPolicyRule_Kubernetes) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AccessPolicyRule_Kubernetes) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Impersonate != nil {
+ size, err := m.Impersonate.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AccessPolicyRule) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AccessPolicyRule) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AccessPolicyRule) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Role) > 0 {
+ i -= len(m.Role)
+ copy(dAtA[i:], m.Role)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Role)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Kubernetes != nil {
+ size, err := m.Kubernetes.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Clusters) > 0 {
+ for iNdEx := len(m.Clusters) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Clusters[iNdEx])
+ copy(dAtA[i:], m.Clusters[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Clusters[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Users) > 0 {
+ for iNdEx := len(m.Users) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Users[iNdEx])
+ copy(dAtA[i:], m.Users[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Users[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AccessPolicyTest_Expected_Kubernetes_Impersonate) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AccessPolicyTest_Expected_Kubernetes_Impersonate) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AccessPolicyTest_Expected_Kubernetes_Impersonate) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Groups) > 0 {
+ for iNdEx := len(m.Groups) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Groups[iNdEx])
+ copy(dAtA[i:], m.Groups[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Groups[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AccessPolicyTest_Expected_Kubernetes) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AccessPolicyTest_Expected_Kubernetes) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AccessPolicyTest_Expected_Kubernetes) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Impersonate != nil {
+ size, err := m.Impersonate.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AccessPolicyTest_Expected) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AccessPolicyTest_Expected) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AccessPolicyTest_Expected) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Role) > 0 {
+ i -= len(m.Role)
+ copy(dAtA[i:], m.Role)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Role)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Kubernetes != nil {
+ size, err := m.Kubernetes.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AccessPolicyTest_User) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AccessPolicyTest_User) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AccessPolicyTest_User) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Labels) > 0 {
+ for k := range m.Labels {
+ v := m.Labels[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AccessPolicyTest_Cluster) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AccessPolicyTest_Cluster) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AccessPolicyTest_Cluster) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AccessPolicyTest) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AccessPolicyTest) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AccessPolicyTest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Expected != nil {
+ size, err := m.Expected.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Cluster != nil {
+ size, err := m.Cluster.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.User != nil {
+ size, err := m.User.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AccessPolicySpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AccessPolicySpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *AccessPolicySpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Tests) > 0 {
+ for iNdEx := len(m.Tests) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.Tests[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.Rules) > 0 {
+ for iNdEx := len(m.Rules) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.Rules[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.ClusterGroups) > 0 {
+ for k := range m.ClusterGroups {
+ v := m.ClusterGroups[k]
+ baseI := i
+ size, err := v.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.UserGroups) > 0 {
+ for k := range m.UserGroups {
+ v := m.UserGroups[k]
+ baseI := i
+ size, err := v.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SAMLLabelRuleSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SAMLLabelRuleSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *SAMLLabelRuleSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.AssignRoleOnRegistration) > 0 {
+ i -= len(m.AssignRoleOnRegistration)
+ copy(dAtA[i:], m.AssignRoleOnRegistration)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.AssignRoleOnRegistration)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.MatchLabels) > 0 {
+ for iNdEx := len(m.MatchLabels) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.MatchLabels[iNdEx])
+ copy(dAtA[i:], m.MatchLabels[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.MatchLabels[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AuthConfigSpec_Auth0) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Enabled {
+ n += 2
+ }
+ l = len(m.Domain)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ClientId)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AuthConfigSpec_Webauthn) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Enabled {
+ n += 2
+ }
+ if m.Required {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AuthConfigSpec_SAML) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Enabled {
+ n += 2
+ }
+ l = len(m.Url)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Metadata)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.LabelRules) > 0 {
+ for k, v := range m.LabelRules {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + 1 + len(v) + protohelpers.SizeOfVarint(uint64(len(v)))
+ n += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AuthConfigSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Auth0 != nil {
+ l = m.Auth0.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Webauthn != nil {
+ l = m.Webauthn.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Suspended {
+ n += 2
+ }
+ if m.Saml != nil {
+ l = m.Saml.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *SAMLAssertionSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Data)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Email)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Used {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *UserSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Scopes) > 0 {
+ for _, s := range m.Scopes {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ l = len(m.Role)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *IdentitySpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.UserId)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *Identity) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Email)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *PublicKeySpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.PublicKey)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.Scopes) > 0 {
+ for _, s := range m.Scopes {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ if m.Expiration != nil {
+ l = (*timestamppb1.Timestamp)(m.Expiration).SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Confirmed {
+ n += 2
+ }
+ if m.Identity != nil {
+ l = m.Identity.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Role)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AccessPolicyUserGroup_User) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Match)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.LabelSelectors) > 0 {
+ for _, s := range m.LabelSelectors {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AccessPolicyUserGroup) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Users) > 0 {
+ for _, e := range m.Users {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AccessPolicyClusterGroup_Cluster) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Match)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AccessPolicyClusterGroup) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Clusters) > 0 {
+ for _, e := range m.Clusters {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AccessPolicyRule_Kubernetes_Impersonate) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Groups) > 0 {
+ for _, s := range m.Groups {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AccessPolicyRule_Kubernetes) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Impersonate != nil {
+ l = m.Impersonate.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AccessPolicyRule) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Users) > 0 {
+ for _, s := range m.Users {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ if len(m.Clusters) > 0 {
+ for _, s := range m.Clusters {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ if m.Kubernetes != nil {
+ l = m.Kubernetes.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Role)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AccessPolicyTest_Expected_Kubernetes_Impersonate) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Groups) > 0 {
+ for _, s := range m.Groups {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AccessPolicyTest_Expected_Kubernetes) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Impersonate != nil {
+ l = m.Impersonate.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AccessPolicyTest_Expected) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Kubernetes != nil {
+ l = m.Kubernetes.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Role)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AccessPolicyTest_User) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.Labels) > 0 {
+ for k, v := range m.Labels {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + 1 + len(v) + protohelpers.SizeOfVarint(uint64(len(v)))
+ n += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AccessPolicyTest_Cluster) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AccessPolicyTest) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.User != nil {
+ l = m.User.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Cluster != nil {
+ l = m.Cluster.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Expected != nil {
+ l = m.Expected.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AccessPolicySpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.UserGroups) > 0 {
+ for k, v := range m.UserGroups {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.SizeVT()
+ }
+ l += 1 + protohelpers.SizeOfVarint(uint64(l))
+ mapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + l
+ n += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))
+ }
+ }
+ if len(m.ClusterGroups) > 0 {
+ for k, v := range m.ClusterGroups {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.SizeVT()
+ }
+ l += 1 + protohelpers.SizeOfVarint(uint64(l))
+ mapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + l
+ n += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Rules) > 0 {
+ for _, e := range m.Rules {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ if len(m.Tests) > 0 {
+ for _, e := range m.Tests {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *SAMLLabelRuleSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.MatchLabels) > 0 {
+ for _, s := range m.MatchLabels {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ l = len(m.AssignRoleOnRegistration)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *AuthConfigSpec_Auth0) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AuthConfigSpec_Auth0: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AuthConfigSpec_Auth0: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Enabled = bool(v != 0)
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Domain", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Domain = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClientId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClientId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AuthConfigSpec_Webauthn) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AuthConfigSpec_Webauthn: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AuthConfigSpec_Webauthn: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Enabled = bool(v != 0)
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Required", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Required = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AuthConfigSpec_SAML) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AuthConfigSpec_SAML: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AuthConfigSpec_SAML: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Enabled = bool(v != 0)
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Url", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Url = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Metadata = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LabelRules", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.LabelRules == nil {
+ m.LabelRules = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.LabelRules[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AuthConfigSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AuthConfigSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AuthConfigSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Auth0", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Auth0 == nil {
+ m.Auth0 = &AuthConfigSpec_Auth0{}
+ }
+ if err := m.Auth0.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Webauthn", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Webauthn == nil {
+ m.Webauthn = &AuthConfigSpec_Webauthn{}
+ }
+ if err := m.Webauthn.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Suspended", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Suspended = bool(v != 0)
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Saml", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Saml == nil {
+ m.Saml = &AuthConfigSpec_SAML{}
+ }
+ if err := m.Saml.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SAMLAssertionSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SAMLAssertionSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SAMLAssertionSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...)
+ if m.Data == nil {
+ m.Data = []byte{}
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Email", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Email = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Used", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Used = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UserSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UserSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UserSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Scopes", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Scopes = append(m.Scopes, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Role = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *IdentitySpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: IdentitySpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: IdentitySpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field UserId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.UserId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Identity) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Identity: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Identity: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Email", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Email = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PublicKeySpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PublicKeySpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PublicKeySpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PublicKey", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PublicKey = append(m.PublicKey[:0], dAtA[iNdEx:postIndex]...)
+ if m.PublicKey == nil {
+ m.PublicKey = []byte{}
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Scopes", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Scopes = append(m.Scopes, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Expiration", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Expiration == nil {
+ m.Expiration = ×tamppb.Timestamp{}
+ }
+ if err := (*timestamppb1.Timestamp)(m.Expiration).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Confirmed", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Confirmed = bool(v != 0)
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Identity", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Identity == nil {
+ m.Identity = &Identity{}
+ }
+ if err := m.Identity.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Role = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AccessPolicyUserGroup_User) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AccessPolicyUserGroup_User: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AccessPolicyUserGroup_User: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Match", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Match = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LabelSelectors", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LabelSelectors = append(m.LabelSelectors, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AccessPolicyUserGroup) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AccessPolicyUserGroup: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AccessPolicyUserGroup: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Users", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Users = append(m.Users, &AccessPolicyUserGroup_User{})
+ if err := m.Users[len(m.Users)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AccessPolicyClusterGroup_Cluster) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AccessPolicyClusterGroup_Cluster: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AccessPolicyClusterGroup_Cluster: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Match", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Match = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AccessPolicyClusterGroup) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AccessPolicyClusterGroup: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AccessPolicyClusterGroup: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Clusters", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Clusters = append(m.Clusters, &AccessPolicyClusterGroup_Cluster{})
+ if err := m.Clusters[len(m.Clusters)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AccessPolicyRule_Kubernetes_Impersonate) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AccessPolicyRule_Kubernetes_Impersonate: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AccessPolicyRule_Kubernetes_Impersonate: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Groups", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Groups = append(m.Groups, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AccessPolicyRule_Kubernetes) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AccessPolicyRule_Kubernetes: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AccessPolicyRule_Kubernetes: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Impersonate", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Impersonate == nil {
+ m.Impersonate = &AccessPolicyRule_Kubernetes_Impersonate{}
+ }
+ if err := m.Impersonate.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AccessPolicyRule) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AccessPolicyRule: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AccessPolicyRule: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Users", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Users = append(m.Users, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Clusters", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Clusters = append(m.Clusters, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Kubernetes", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Kubernetes == nil {
+ m.Kubernetes = &AccessPolicyRule_Kubernetes{}
+ }
+ if err := m.Kubernetes.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Role = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AccessPolicyTest_Expected_Kubernetes_Impersonate) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AccessPolicyTest_Expected_Kubernetes_Impersonate: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AccessPolicyTest_Expected_Kubernetes_Impersonate: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Groups", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Groups = append(m.Groups, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AccessPolicyTest_Expected_Kubernetes) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AccessPolicyTest_Expected_Kubernetes: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AccessPolicyTest_Expected_Kubernetes: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Impersonate", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Impersonate == nil {
+ m.Impersonate = &AccessPolicyTest_Expected_Kubernetes_Impersonate{}
+ }
+ if err := m.Impersonate.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AccessPolicyTest_Expected) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AccessPolicyTest_Expected: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AccessPolicyTest_Expected: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Kubernetes", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Kubernetes == nil {
+ m.Kubernetes = &AccessPolicyTest_Expected_Kubernetes{}
+ }
+ if err := m.Kubernetes.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Role = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AccessPolicyTest_User) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AccessPolicyTest_User: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AccessPolicyTest_User: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Labels == nil {
+ m.Labels = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Labels[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AccessPolicyTest_Cluster) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AccessPolicyTest_Cluster: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AccessPolicyTest_Cluster: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AccessPolicyTest) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AccessPolicyTest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AccessPolicyTest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field User", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.User == nil {
+ m.User = &AccessPolicyTest_User{}
+ }
+ if err := m.User.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Cluster == nil {
+ m.Cluster = &AccessPolicyTest_Cluster{}
+ }
+ if err := m.Cluster.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Expected", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Expected == nil {
+ m.Expected = &AccessPolicyTest_Expected{}
+ }
+ if err := m.Expected.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AccessPolicySpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AccessPolicySpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AccessPolicySpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field UserGroups", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.UserGroups == nil {
+ m.UserGroups = make(map[string]*AccessPolicyUserGroup)
+ }
+ var mapkey string
+ var mapvalue *AccessPolicyUserGroup
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &AccessPolicyUserGroup{}
+ if err := mapvalue.UnmarshalVT(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.UserGroups[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterGroups", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ClusterGroups == nil {
+ m.ClusterGroups = make(map[string]*AccessPolicyClusterGroup)
+ }
+ var mapkey string
+ var mapvalue *AccessPolicyClusterGroup
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &AccessPolicyClusterGroup{}
+ if err := mapvalue.UnmarshalVT(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.ClusterGroups[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Rules = append(m.Rules, &AccessPolicyRule{})
+ if err := m.Rules[len(m.Rules)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tests", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Tests = append(m.Tests, &AccessPolicyTest{})
+ if err := m.Tests[len(m.Tests)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SAMLLabelRuleSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SAMLLabelRuleSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SAMLLabelRuleSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MatchLabels", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.MatchLabels = append(m.MatchLabels, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AssignRoleOnRegistration", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.AssignRoleOnRegistration = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
diff --git a/client/api/omni/specs/control_plane_status.go b/client/api/omni/specs/control_plane_status.go
new file mode 100644
index 000000000..3fe7f8fb6
--- /dev/null
+++ b/client/api/omni/specs/control_plane_status.go
@@ -0,0 +1,40 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package specs contains all resource specs of the service.
+package specs
+
+// GetCondition returns condition from the list of conditions of the status if it's set.
+func (x *ControlPlaneStatusSpec) GetCondition(condition ConditionType) *ControlPlaneStatusSpec_Condition {
+ for _, c := range x.Conditions {
+ if c.Type == condition {
+ return c
+ }
+ }
+
+ return &ControlPlaneStatusSpec_Condition{
+ Status: ControlPlaneStatusSpec_Condition_Unknown,
+ Severity: ControlPlaneStatusSpec_Condition_Info,
+ }
+}
+
+// SetCondition updates the conditions: adds new condition if it's not set, or updates the existing one.
+func (x *ControlPlaneStatusSpec) SetCondition(condition ConditionType, status ControlPlaneStatusSpec_Condition_Status, severity ControlPlaneStatusSpec_Condition_Severity, reason string) {
+ c := &ControlPlaneStatusSpec_Condition{
+ Type: condition,
+ Status: status,
+ Severity: severity,
+ Reason: reason,
+ }
+
+ for i, cond := range x.Conditions {
+ if cond.Type == condition {
+ x.Conditions[i] = c
+
+ return
+ }
+ }
+
+ x.Conditions = append(x.Conditions, c)
+}
diff --git a/client/api/omni/specs/ephemeral.pb.go b/client/api/omni/specs/ephemeral.pb.go
new file mode 100644
index 000000000..7f0ea691d
--- /dev/null
+++ b/client/api/omni/specs/ephemeral.pb.go
@@ -0,0 +1,183 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.32.0
+// protoc v4.24.4
+// source: omni/specs/ephemeral.proto
+
+package specs
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// MachineStatusLinkSpec describes the combination of MessageStatusSpec and SideroLinkSpec and SiderolinkCounterSpec
+type MachineStatusLinkSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ MessageStatus *MachineStatusSpec `protobuf:"bytes,1,opt,name=message_status,json=messageStatus,proto3" json:"message_status,omitempty"`
+ SiderolinkCounter *SiderolinkCounterSpec `protobuf:"bytes,2,opt,name=siderolink_counter,json=siderolinkCounter,proto3" json:"siderolink_counter,omitempty"`
+ MachineCreatedAt int64 `protobuf:"varint,3,opt,name=machine_created_at,json=machineCreatedAt,proto3" json:"machine_created_at,omitempty"`
+}
+
+func (x *MachineStatusLinkSpec) Reset() {
+ *x = MachineStatusLinkSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_ephemeral_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineStatusLinkSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineStatusLinkSpec) ProtoMessage() {}
+
+func (x *MachineStatusLinkSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_ephemeral_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineStatusLinkSpec.ProtoReflect.Descriptor instead.
+func (*MachineStatusLinkSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_ephemeral_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *MachineStatusLinkSpec) GetMessageStatus() *MachineStatusSpec {
+ if x != nil {
+ return x.MessageStatus
+ }
+ return nil
+}
+
+func (x *MachineStatusLinkSpec) GetSiderolinkCounter() *SiderolinkCounterSpec {
+ if x != nil {
+ return x.SiderolinkCounter
+ }
+ return nil
+}
+
+func (x *MachineStatusLinkSpec) GetMachineCreatedAt() int64 {
+ if x != nil {
+ return x.MachineCreatedAt
+ }
+ return 0
+}
+
+var File_omni_specs_ephemeral_proto protoreflect.FileDescriptor
+
+var file_omni_specs_ephemeral_proto_rawDesc = []byte{
+ 0x0a, 0x1a, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2f, 0x65, 0x70, 0x68,
+ 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x73, 0x70,
+ 0x65, 0x63, 0x73, 0x1a, 0x15, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2f,
+ 0x6f, 0x6d, 0x6e, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x6f, 0x6d, 0x6e, 0x69,
+ 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x69, 0x6e,
+ 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd3, 0x01, 0x0a, 0x15, 0x4d, 0x61, 0x63, 0x68,
+ 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x70, 0x65,
+ 0x63, 0x12, 0x3f, 0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x70, 0x65, 0x63,
+ 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53,
+ 0x70, 0x65, 0x63, 0x52, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x69, 0x6e, 0x6b,
+ 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
+ 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x53, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x69, 0x6e,
+ 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x11, 0x73, 0x69,
+ 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12,
+ 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6d, 0x61, 0x63,
+ 0x68, 0x69, 0x6e, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x32, 0x5a,
+ 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x64, 0x65,
+ 0x72, 0x6f, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65,
+ 0x6e, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x73, 0x70, 0x65, 0x63,
+ 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_omni_specs_ephemeral_proto_rawDescOnce sync.Once
+ file_omni_specs_ephemeral_proto_rawDescData = file_omni_specs_ephemeral_proto_rawDesc
+)
+
+func file_omni_specs_ephemeral_proto_rawDescGZIP() []byte {
+ file_omni_specs_ephemeral_proto_rawDescOnce.Do(func() {
+ file_omni_specs_ephemeral_proto_rawDescData = protoimpl.X.CompressGZIP(file_omni_specs_ephemeral_proto_rawDescData)
+ })
+ return file_omni_specs_ephemeral_proto_rawDescData
+}
+
+var file_omni_specs_ephemeral_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_omni_specs_ephemeral_proto_goTypes = []interface{}{
+ (*MachineStatusLinkSpec)(nil), // 0: specs.MachineStatusLinkSpec
+ (*MachineStatusSpec)(nil), // 1: specs.MachineStatusSpec
+ (*SiderolinkCounterSpec)(nil), // 2: specs.SiderolinkCounterSpec
+}
+var file_omni_specs_ephemeral_proto_depIdxs = []int32{
+ 1, // 0: specs.MachineStatusLinkSpec.message_status:type_name -> specs.MachineStatusSpec
+ 2, // 1: specs.MachineStatusLinkSpec.siderolink_counter:type_name -> specs.SiderolinkCounterSpec
+ 2, // [2:2] is the sub-list for method output_type
+ 2, // [2:2] is the sub-list for method input_type
+ 2, // [2:2] is the sub-list for extension type_name
+ 2, // [2:2] is the sub-list for extension extendee
+ 0, // [0:2] is the sub-list for field type_name
+}
+
+func init() { file_omni_specs_ephemeral_proto_init() }
+func file_omni_specs_ephemeral_proto_init() {
+ if File_omni_specs_ephemeral_proto != nil {
+ return
+ }
+ file_omni_specs_omni_proto_init()
+ file_omni_specs_siderolink_proto_init()
+ if !protoimpl.UnsafeEnabled {
+ file_omni_specs_ephemeral_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineStatusLinkSpec); 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{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_omni_specs_ephemeral_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 1,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_omni_specs_ephemeral_proto_goTypes,
+ DependencyIndexes: file_omni_specs_ephemeral_proto_depIdxs,
+ MessageInfos: file_omni_specs_ephemeral_proto_msgTypes,
+ }.Build()
+ File_omni_specs_ephemeral_proto = out.File
+ file_omni_specs_ephemeral_proto_rawDesc = nil
+ file_omni_specs_ephemeral_proto_goTypes = nil
+ file_omni_specs_ephemeral_proto_depIdxs = nil
+}
diff --git a/client/api/omni/specs/ephemeral.proto b/client/api/omni/specs/ephemeral.proto
new file mode 100644
index 000000000..16b932249
--- /dev/null
+++ b/client/api/omni/specs/ephemeral.proto
@@ -0,0 +1,16 @@
+syntax = "proto3";
+package specs;
+
+option go_package = "github.com/siderolabs/omni/client/api/omni/specs";
+
+import "omni/specs/omni.proto";
+import "omni/specs/siderolink.proto";
+
+
+// MachineStatusLinkSpec describes the combination of MessageStatusSpec and SideroLinkSpec and SiderolinkCounterSpec
+message MachineStatusLinkSpec {
+ specs.MachineStatusSpec message_status = 1;
+ specs.SiderolinkCounterSpec siderolink_counter = 2;
+ int64 machine_created_at = 3;
+}
+
diff --git a/client/api/omni/specs/ephemeral_vtproto.pb.go b/client/api/omni/specs/ephemeral_vtproto.pb.go
new file mode 100644
index 000000000..3b4422d76
--- /dev/null
+++ b/client/api/omni/specs/ephemeral_vtproto.pb.go
@@ -0,0 +1,287 @@
+// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.
+// protoc-gen-go-vtproto version: v0.6.0
+// source: omni/specs/ephemeral.proto
+
+package specs
+
+import (
+ fmt "fmt"
+ io "io"
+
+ protohelpers "github.com/planetscale/vtprotobuf/protohelpers"
+ proto "google.golang.org/protobuf/proto"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+func (m *MachineStatusLinkSpec) CloneVT() *MachineStatusLinkSpec {
+ if m == nil {
+ return (*MachineStatusLinkSpec)(nil)
+ }
+ r := new(MachineStatusLinkSpec)
+ r.MessageStatus = m.MessageStatus.CloneVT()
+ r.SiderolinkCounter = m.SiderolinkCounter.CloneVT()
+ r.MachineCreatedAt = m.MachineCreatedAt
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineStatusLinkSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (this *MachineStatusLinkSpec) EqualVT(that *MachineStatusLinkSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if !this.MessageStatus.EqualVT(that.MessageStatus) {
+ return false
+ }
+ if !this.SiderolinkCounter.EqualVT(that.SiderolinkCounter) {
+ return false
+ }
+ if this.MachineCreatedAt != that.MachineCreatedAt {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineStatusLinkSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineStatusLinkSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (m *MachineStatusLinkSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineStatusLinkSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineStatusLinkSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.MachineCreatedAt != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.MachineCreatedAt))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.SiderolinkCounter != nil {
+ size, err := m.SiderolinkCounter.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.MessageStatus != nil {
+ size, err := m.MessageStatus.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineStatusLinkSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.MessageStatus != nil {
+ l = m.MessageStatus.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.SiderolinkCounter != nil {
+ l = m.SiderolinkCounter.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.MachineCreatedAt != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.MachineCreatedAt))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineStatusLinkSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineStatusLinkSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineStatusLinkSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MessageStatus", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.MessageStatus == nil {
+ m.MessageStatus = &MachineStatusSpec{}
+ }
+ if err := m.MessageStatus.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SiderolinkCounter", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.SiderolinkCounter == nil {
+ m.SiderolinkCounter = &SiderolinkCounterSpec{}
+ }
+ if err := m.SiderolinkCounter.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MachineCreatedAt", wireType)
+ }
+ m.MachineCreatedAt = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MachineCreatedAt |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
diff --git a/client/api/omni/specs/oidc.pb.go b/client/api/omni/specs/oidc.pb.go
new file mode 100644
index 000000000..7f578cc3b
--- /dev/null
+++ b/client/api/omni/specs/oidc.pb.go
@@ -0,0 +1,166 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.32.0
+// protoc v4.24.4
+// source: omni/specs/oidc.proto
+
+package specs
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// JWTPublicKeySpec keeps the active set of JWT signing keys.
+type JWTPublicKeySpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // PKCS1 encoded RSA public key.
+ PublicKey []byte `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
+ // Expiration time (when it's ready to be cleaned up).
+ Expiration *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=expiration,proto3" json:"expiration,omitempty"`
+}
+
+func (x *JWTPublicKeySpec) Reset() {
+ *x = JWTPublicKeySpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_oidc_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *JWTPublicKeySpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JWTPublicKeySpec) ProtoMessage() {}
+
+func (x *JWTPublicKeySpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_oidc_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JWTPublicKeySpec.ProtoReflect.Descriptor instead.
+func (*JWTPublicKeySpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_oidc_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *JWTPublicKeySpec) GetPublicKey() []byte {
+ if x != nil {
+ return x.PublicKey
+ }
+ return nil
+}
+
+func (x *JWTPublicKeySpec) GetExpiration() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Expiration
+ }
+ return nil
+}
+
+var File_omni_specs_oidc_proto protoreflect.FileDescriptor
+
+var file_omni_specs_oidc_proto_rawDesc = []byte{
+ 0x0a, 0x15, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2f, 0x6f, 0x69, 0x64,
+ 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x73, 0x70, 0x65, 0x63, 0x73, 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,
+ 0x6d, 0x0a, 0x10, 0x4a, 0x57, 0x54, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x53,
+ 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b,
+ 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x02, 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, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x32,
+ 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x64,
+ 0x65, 0x72, 0x6f, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x63, 0x6c, 0x69,
+ 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x73, 0x70, 0x65,
+ 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_omni_specs_oidc_proto_rawDescOnce sync.Once
+ file_omni_specs_oidc_proto_rawDescData = file_omni_specs_oidc_proto_rawDesc
+)
+
+func file_omni_specs_oidc_proto_rawDescGZIP() []byte {
+ file_omni_specs_oidc_proto_rawDescOnce.Do(func() {
+ file_omni_specs_oidc_proto_rawDescData = protoimpl.X.CompressGZIP(file_omni_specs_oidc_proto_rawDescData)
+ })
+ return file_omni_specs_oidc_proto_rawDescData
+}
+
+var file_omni_specs_oidc_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_omni_specs_oidc_proto_goTypes = []interface{}{
+ (*JWTPublicKeySpec)(nil), // 0: specs.JWTPublicKeySpec
+ (*timestamppb.Timestamp)(nil), // 1: google.protobuf.Timestamp
+}
+var file_omni_specs_oidc_proto_depIdxs = []int32{
+ 1, // 0: specs.JWTPublicKeySpec.expiration:type_name -> google.protobuf.Timestamp
+ 1, // [1:1] is the sub-list for method output_type
+ 1, // [1:1] is the sub-list for method input_type
+ 1, // [1:1] is the sub-list for extension type_name
+ 1, // [1:1] is the sub-list for extension extendee
+ 0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_omni_specs_oidc_proto_init() }
+func file_omni_specs_oidc_proto_init() {
+ if File_omni_specs_oidc_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_omni_specs_oidc_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*JWTPublicKeySpec); 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{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_omni_specs_oidc_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 1,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_omni_specs_oidc_proto_goTypes,
+ DependencyIndexes: file_omni_specs_oidc_proto_depIdxs,
+ MessageInfos: file_omni_specs_oidc_proto_msgTypes,
+ }.Build()
+ File_omni_specs_oidc_proto = out.File
+ file_omni_specs_oidc_proto_rawDesc = nil
+ file_omni_specs_oidc_proto_goTypes = nil
+ file_omni_specs_oidc_proto_depIdxs = nil
+}
diff --git a/client/api/omni/specs/oidc.proto b/client/api/omni/specs/oidc.proto
new file mode 100644
index 000000000..414b45b64
--- /dev/null
+++ b/client/api/omni/specs/oidc.proto
@@ -0,0 +1,14 @@
+syntax = "proto3";
+package specs;
+
+option go_package = "github.com/siderolabs/omni/client/api/omni/specs";
+
+import "google/protobuf/timestamp.proto";
+
+// JWTPublicKeySpec keeps the active set of JWT signing keys.
+message JWTPublicKeySpec {
+ // PKCS1 encoded RSA public key.
+ bytes public_key = 1;
+ // Expiration time (when it's ready to be cleaned up).
+ google.protobuf.Timestamp expiration = 2;
+}
diff --git a/client/api/omni/specs/oidc_vtproto.pb.go b/client/api/omni/specs/oidc_vtproto.pb.go
new file mode 100644
index 000000000..d2e7ea20d
--- /dev/null
+++ b/client/api/omni/specs/oidc_vtproto.pb.go
@@ -0,0 +1,257 @@
+// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.
+// protoc-gen-go-vtproto version: v0.6.0
+// source: omni/specs/oidc.proto
+
+package specs
+
+import (
+ fmt "fmt"
+ io "io"
+
+ protohelpers "github.com/planetscale/vtprotobuf/protohelpers"
+ timestamppb1 "github.com/planetscale/vtprotobuf/types/known/timestamppb"
+ proto "google.golang.org/protobuf/proto"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+func (m *JWTPublicKeySpec) CloneVT() *JWTPublicKeySpec {
+ if m == nil {
+ return (*JWTPublicKeySpec)(nil)
+ }
+ r := new(JWTPublicKeySpec)
+ r.Expiration = (*timestamppb.Timestamp)((*timestamppb1.Timestamp)(m.Expiration).CloneVT())
+ if rhs := m.PublicKey; rhs != nil {
+ tmpBytes := make([]byte, len(rhs))
+ copy(tmpBytes, rhs)
+ r.PublicKey = tmpBytes
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *JWTPublicKeySpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (this *JWTPublicKeySpec) EqualVT(that *JWTPublicKeySpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if string(this.PublicKey) != string(that.PublicKey) {
+ return false
+ }
+ if !(*timestamppb1.Timestamp)(this.Expiration).EqualVT((*timestamppb1.Timestamp)(that.Expiration)) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *JWTPublicKeySpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*JWTPublicKeySpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (m *JWTPublicKeySpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *JWTPublicKeySpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *JWTPublicKeySpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Expiration != nil {
+ size, err := (*timestamppb1.Timestamp)(m.Expiration).MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.PublicKey) > 0 {
+ i -= len(m.PublicKey)
+ copy(dAtA[i:], m.PublicKey)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PublicKey)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *JWTPublicKeySpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.PublicKey)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Expiration != nil {
+ l = (*timestamppb1.Timestamp)(m.Expiration).SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *JWTPublicKeySpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: JWTPublicKeySpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: JWTPublicKeySpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PublicKey", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PublicKey = append(m.PublicKey[:0], dAtA[iNdEx:postIndex]...)
+ if m.PublicKey == nil {
+ m.PublicKey = []byte{}
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Expiration", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Expiration == nil {
+ m.Expiration = ×tamppb.Timestamp{}
+ }
+ if err := (*timestamppb1.Timestamp)(m.Expiration).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
diff --git a/client/api/omni/specs/omni.pb.go b/client/api/omni/specs/omni.pb.go
new file mode 100644
index 000000000..73a63cfa4
--- /dev/null
+++ b/client/api/omni/specs/omni.pb.go
@@ -0,0 +1,8367 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.32.0
+// protoc v4.24.4
+// source: omni/specs/omni.proto
+
+package specs
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ machine "github.com/siderolabs/talos/pkg/machinery/api/machine"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ durationpb "google.golang.org/protobuf/types/known/durationpb"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type ConfigApplyStatus int32
+
+const (
+ ConfigApplyStatus_UNKNOWN ConfigApplyStatus = 0
+ ConfigApplyStatus_PENDING ConfigApplyStatus = 1
+ ConfigApplyStatus_APPLIED ConfigApplyStatus = 2
+ ConfigApplyStatus_FAILED ConfigApplyStatus = 3
+)
+
+// Enum value maps for ConfigApplyStatus.
+var (
+ ConfigApplyStatus_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "PENDING",
+ 2: "APPLIED",
+ 3: "FAILED",
+ }
+ ConfigApplyStatus_value = map[string]int32{
+ "UNKNOWN": 0,
+ "PENDING": 1,
+ "APPLIED": 2,
+ "FAILED": 3,
+ }
+)
+
+func (x ConfigApplyStatus) Enum() *ConfigApplyStatus {
+ p := new(ConfigApplyStatus)
+ *p = x
+ return p
+}
+
+func (x ConfigApplyStatus) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ConfigApplyStatus) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_specs_omni_proto_enumTypes[0].Descriptor()
+}
+
+func (ConfigApplyStatus) Type() protoreflect.EnumType {
+ return &file_omni_specs_omni_proto_enumTypes[0]
+}
+
+func (x ConfigApplyStatus) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ConfigApplyStatus.Descriptor instead.
+func (ConfigApplyStatus) EnumDescriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{0}
+}
+
+// MachineSetPhaseSpec is machine set phase.
+type MachineSetPhase int32
+
+const (
+ MachineSetPhase_Unknown MachineSetPhase = 0
+ MachineSetPhase_ScalingUp MachineSetPhase = 1
+ MachineSetPhase_ScalingDown MachineSetPhase = 2
+ MachineSetPhase_Running MachineSetPhase = 3
+ MachineSetPhase_Destroying MachineSetPhase = 4
+ MachineSetPhase_Failed MachineSetPhase = 5
+ MachineSetPhase_Reconfiguring MachineSetPhase = 6
+)
+
+// Enum value maps for MachineSetPhase.
+var (
+ MachineSetPhase_name = map[int32]string{
+ 0: "Unknown",
+ 1: "ScalingUp",
+ 2: "ScalingDown",
+ 3: "Running",
+ 4: "Destroying",
+ 5: "Failed",
+ 6: "Reconfiguring",
+ }
+ MachineSetPhase_value = map[string]int32{
+ "Unknown": 0,
+ "ScalingUp": 1,
+ "ScalingDown": 2,
+ "Running": 3,
+ "Destroying": 4,
+ "Failed": 5,
+ "Reconfiguring": 6,
+ }
+)
+
+func (x MachineSetPhase) Enum() *MachineSetPhase {
+ p := new(MachineSetPhase)
+ *p = x
+ return p
+}
+
+func (x MachineSetPhase) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (MachineSetPhase) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_specs_omni_proto_enumTypes[1].Descriptor()
+}
+
+func (MachineSetPhase) Type() protoreflect.EnumType {
+ return &file_omni_specs_omni_proto_enumTypes[1]
+}
+
+func (x MachineSetPhase) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use MachineSetPhase.Descriptor instead.
+func (MachineSetPhase) EnumDescriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{1}
+}
+
+type ConditionType int32
+
+const (
+ ConditionType_UnknownCondition ConditionType = 0
+ ConditionType_Etcd ConditionType = 1
+ ConditionType_WireguardConnection ConditionType = 2
+)
+
+// Enum value maps for ConditionType.
+var (
+ ConditionType_name = map[int32]string{
+ 0: "UnknownCondition",
+ 1: "Etcd",
+ 2: "WireguardConnection",
+ }
+ ConditionType_value = map[string]int32{
+ "UnknownCondition": 0,
+ "Etcd": 1,
+ "WireguardConnection": 2,
+ }
+)
+
+func (x ConditionType) Enum() *ConditionType {
+ p := new(ConditionType)
+ *p = x
+ return p
+}
+
+func (x ConditionType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ConditionType) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_specs_omni_proto_enumTypes[2].Descriptor()
+}
+
+func (ConditionType) Type() protoreflect.EnumType {
+ return &file_omni_specs_omni_proto_enumTypes[2]
+}
+
+func (x ConditionType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ConditionType.Descriptor instead.
+func (ConditionType) EnumDescriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{2}
+}
+
+type MachineStatusSpec_Role int32
+
+const (
+ MachineStatusSpec_NONE MachineStatusSpec_Role = 0
+ MachineStatusSpec_CONTROL_PLANE MachineStatusSpec_Role = 1
+ MachineStatusSpec_WORKER MachineStatusSpec_Role = 2
+)
+
+// Enum value maps for MachineStatusSpec_Role.
+var (
+ MachineStatusSpec_Role_name = map[int32]string{
+ 0: "NONE",
+ 1: "CONTROL_PLANE",
+ 2: "WORKER",
+ }
+ MachineStatusSpec_Role_value = map[string]int32{
+ "NONE": 0,
+ "CONTROL_PLANE": 1,
+ "WORKER": 2,
+ }
+)
+
+func (x MachineStatusSpec_Role) Enum() *MachineStatusSpec_Role {
+ p := new(MachineStatusSpec_Role)
+ *p = x
+ return p
+}
+
+func (x MachineStatusSpec_Role) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (MachineStatusSpec_Role) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_specs_omni_proto_enumTypes[3].Descriptor()
+}
+
+func (MachineStatusSpec_Role) Type() protoreflect.EnumType {
+ return &file_omni_specs_omni_proto_enumTypes[3]
+}
+
+func (x MachineStatusSpec_Role) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use MachineStatusSpec_Role.Descriptor instead.
+func (MachineStatusSpec_Role) EnumDescriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{1, 0}
+}
+
+type EtcdBackupStatusSpec_Status int32
+
+const (
+ EtcdBackupStatusSpec_Unknown EtcdBackupStatusSpec_Status = 0
+ EtcdBackupStatusSpec_Ok EtcdBackupStatusSpec_Status = 1
+ EtcdBackupStatusSpec_Error EtcdBackupStatusSpec_Status = 2
+ EtcdBackupStatusSpec_Running EtcdBackupStatusSpec_Status = 3
+)
+
+// Enum value maps for EtcdBackupStatusSpec_Status.
+var (
+ EtcdBackupStatusSpec_Status_name = map[int32]string{
+ 0: "Unknown",
+ 1: "Ok",
+ 2: "Error",
+ 3: "Running",
+ }
+ EtcdBackupStatusSpec_Status_value = map[string]int32{
+ "Unknown": 0,
+ "Ok": 1,
+ "Error": 2,
+ "Running": 3,
+ }
+)
+
+func (x EtcdBackupStatusSpec_Status) Enum() *EtcdBackupStatusSpec_Status {
+ p := new(EtcdBackupStatusSpec_Status)
+ *p = x
+ return p
+}
+
+func (x EtcdBackupStatusSpec_Status) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (EtcdBackupStatusSpec_Status) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_specs_omni_proto_enumTypes[4].Descriptor()
+}
+
+func (EtcdBackupStatusSpec_Status) Type() protoreflect.EnumType {
+ return &file_omni_specs_omni_proto_enumTypes[4]
+}
+
+func (x EtcdBackupStatusSpec_Status) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EtcdBackupStatusSpec_Status.Descriptor instead.
+func (EtcdBackupStatusSpec_Status) EnumDescriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{10, 0}
+}
+
+type ClusterMachineStatusSpec_Stage int32
+
+const (
+ ClusterMachineStatusSpec_UNKNOWN ClusterMachineStatusSpec_Stage = 0
+ ClusterMachineStatusSpec_BOOTING ClusterMachineStatusSpec_Stage = 1
+ ClusterMachineStatusSpec_INSTALLING ClusterMachineStatusSpec_Stage = 2
+ ClusterMachineStatusSpec_UPGRADING ClusterMachineStatusSpec_Stage = 6
+ ClusterMachineStatusSpec_CONFIGURING ClusterMachineStatusSpec_Stage = 3
+ ClusterMachineStatusSpec_RUNNING ClusterMachineStatusSpec_Stage = 4
+ ClusterMachineStatusSpec_REBOOTING ClusterMachineStatusSpec_Stage = 7
+ ClusterMachineStatusSpec_SHUTTING_DOWN ClusterMachineStatusSpec_Stage = 8
+ ClusterMachineStatusSpec_BEFORE_DESTROY ClusterMachineStatusSpec_Stage = 9
+ ClusterMachineStatusSpec_DESTROYING ClusterMachineStatusSpec_Stage = 5
+)
+
+// Enum value maps for ClusterMachineStatusSpec_Stage.
+var (
+ ClusterMachineStatusSpec_Stage_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "BOOTING",
+ 2: "INSTALLING",
+ 6: "UPGRADING",
+ 3: "CONFIGURING",
+ 4: "RUNNING",
+ 7: "REBOOTING",
+ 8: "SHUTTING_DOWN",
+ 9: "BEFORE_DESTROY",
+ 5: "DESTROYING",
+ }
+ ClusterMachineStatusSpec_Stage_value = map[string]int32{
+ "UNKNOWN": 0,
+ "BOOTING": 1,
+ "INSTALLING": 2,
+ "UPGRADING": 6,
+ "CONFIGURING": 3,
+ "RUNNING": 4,
+ "REBOOTING": 7,
+ "SHUTTING_DOWN": 8,
+ "BEFORE_DESTROY": 9,
+ "DESTROYING": 5,
+ }
+)
+
+func (x ClusterMachineStatusSpec_Stage) Enum() *ClusterMachineStatusSpec_Stage {
+ p := new(ClusterMachineStatusSpec_Stage)
+ *p = x
+ return p
+}
+
+func (x ClusterMachineStatusSpec_Stage) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ClusterMachineStatusSpec_Stage) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_specs_omni_proto_enumTypes[5].Descriptor()
+}
+
+func (ClusterMachineStatusSpec_Stage) Type() protoreflect.EnumType {
+ return &file_omni_specs_omni_proto_enumTypes[5]
+}
+
+func (x ClusterMachineStatusSpec_Stage) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ClusterMachineStatusSpec_Stage.Descriptor instead.
+func (ClusterMachineStatusSpec_Stage) EnumDescriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{21, 0}
+}
+
+type ClusterStatusSpec_Phase int32
+
+const (
+ ClusterStatusSpec_UNKNOWN ClusterStatusSpec_Phase = 0
+ ClusterStatusSpec_SCALING_UP ClusterStatusSpec_Phase = 1
+ ClusterStatusSpec_SCALING_DOWN ClusterStatusSpec_Phase = 2
+ ClusterStatusSpec_RUNNING ClusterStatusSpec_Phase = 3
+ ClusterStatusSpec_DESTROYING ClusterStatusSpec_Phase = 4
+)
+
+// Enum value maps for ClusterStatusSpec_Phase.
+var (
+ ClusterStatusSpec_Phase_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "SCALING_UP",
+ 2: "SCALING_DOWN",
+ 3: "RUNNING",
+ 4: "DESTROYING",
+ }
+ ClusterStatusSpec_Phase_value = map[string]int32{
+ "UNKNOWN": 0,
+ "SCALING_UP": 1,
+ "SCALING_DOWN": 2,
+ "RUNNING": 3,
+ "DESTROYING": 4,
+ }
+)
+
+func (x ClusterStatusSpec_Phase) Enum() *ClusterStatusSpec_Phase {
+ p := new(ClusterStatusSpec_Phase)
+ *p = x
+ return p
+}
+
+func (x ClusterStatusSpec_Phase) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ClusterStatusSpec_Phase) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_specs_omni_proto_enumTypes[6].Descriptor()
+}
+
+func (ClusterStatusSpec_Phase) Type() protoreflect.EnumType {
+ return &file_omni_specs_omni_proto_enumTypes[6]
+}
+
+func (x ClusterStatusSpec_Phase) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ClusterStatusSpec_Phase.Descriptor instead.
+func (ClusterStatusSpec_Phase) EnumDescriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{23, 0}
+}
+
+// UpdateStrategy defines the update strategy of the machine set.
+type MachineSetSpec_UpdateStrategy int32
+
+const (
+ MachineSetSpec_Unset MachineSetSpec_UpdateStrategy = 0
+ MachineSetSpec_Rolling MachineSetSpec_UpdateStrategy = 1
+)
+
+// Enum value maps for MachineSetSpec_UpdateStrategy.
+var (
+ MachineSetSpec_UpdateStrategy_name = map[int32]string{
+ 0: "Unset",
+ 1: "Rolling",
+ }
+ MachineSetSpec_UpdateStrategy_value = map[string]int32{
+ "Unset": 0,
+ "Rolling": 1,
+ }
+)
+
+func (x MachineSetSpec_UpdateStrategy) Enum() *MachineSetSpec_UpdateStrategy {
+ p := new(MachineSetSpec_UpdateStrategy)
+ *p = x
+ return p
+}
+
+func (x MachineSetSpec_UpdateStrategy) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (MachineSetSpec_UpdateStrategy) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_specs_omni_proto_enumTypes[7].Descriptor()
+}
+
+func (MachineSetSpec_UpdateStrategy) Type() protoreflect.EnumType {
+ return &file_omni_specs_omni_proto_enumTypes[7]
+}
+
+func (x MachineSetSpec_UpdateStrategy) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use MachineSetSpec_UpdateStrategy.Descriptor instead.
+func (MachineSetSpec_UpdateStrategy) EnumDescriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{35, 0}
+}
+
+type MachineSetSpec_MachineClass_AllocationType int32
+
+const (
+ // Static uses the count defined in the count field.
+ MachineSetSpec_MachineClass_Static MachineSetSpec_MachineClass_AllocationType = 0
+ // Unlimited allocates all available machines from the machine class.
+ MachineSetSpec_MachineClass_Unlimited MachineSetSpec_MachineClass_AllocationType = 1
+)
+
+// Enum value maps for MachineSetSpec_MachineClass_AllocationType.
+var (
+ MachineSetSpec_MachineClass_AllocationType_name = map[int32]string{
+ 0: "Static",
+ 1: "Unlimited",
+ }
+ MachineSetSpec_MachineClass_AllocationType_value = map[string]int32{
+ "Static": 0,
+ "Unlimited": 1,
+ }
+)
+
+func (x MachineSetSpec_MachineClass_AllocationType) Enum() *MachineSetSpec_MachineClass_AllocationType {
+ p := new(MachineSetSpec_MachineClass_AllocationType)
+ *p = x
+ return p
+}
+
+func (x MachineSetSpec_MachineClass_AllocationType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (MachineSetSpec_MachineClass_AllocationType) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_specs_omni_proto_enumTypes[8].Descriptor()
+}
+
+func (MachineSetSpec_MachineClass_AllocationType) Type() protoreflect.EnumType {
+ return &file_omni_specs_omni_proto_enumTypes[8]
+}
+
+func (x MachineSetSpec_MachineClass_AllocationType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use MachineSetSpec_MachineClass_AllocationType.Descriptor instead.
+func (MachineSetSpec_MachineClass_AllocationType) EnumDescriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{35, 0, 0}
+}
+
+type TalosUpgradeStatusSpec_Phase int32
+
+const (
+ TalosUpgradeStatusSpec_Unknown TalosUpgradeStatusSpec_Phase = 0
+ TalosUpgradeStatusSpec_Upgrading TalosUpgradeStatusSpec_Phase = 1
+ TalosUpgradeStatusSpec_Done TalosUpgradeStatusSpec_Phase = 2
+ TalosUpgradeStatusSpec_Failed TalosUpgradeStatusSpec_Phase = 3
+ TalosUpgradeStatusSpec_Reverting TalosUpgradeStatusSpec_Phase = 4
+)
+
+// Enum value maps for TalosUpgradeStatusSpec_Phase.
+var (
+ TalosUpgradeStatusSpec_Phase_name = map[int32]string{
+ 0: "Unknown",
+ 1: "Upgrading",
+ 2: "Done",
+ 3: "Failed",
+ 4: "Reverting",
+ }
+ TalosUpgradeStatusSpec_Phase_value = map[string]int32{
+ "Unknown": 0,
+ "Upgrading": 1,
+ "Done": 2,
+ "Failed": 3,
+ "Reverting": 4,
+ }
+)
+
+func (x TalosUpgradeStatusSpec_Phase) Enum() *TalosUpgradeStatusSpec_Phase {
+ p := new(TalosUpgradeStatusSpec_Phase)
+ *p = x
+ return p
+}
+
+func (x TalosUpgradeStatusSpec_Phase) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (TalosUpgradeStatusSpec_Phase) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_specs_omni_proto_enumTypes[9].Descriptor()
+}
+
+func (TalosUpgradeStatusSpec_Phase) Type() protoreflect.EnumType {
+ return &file_omni_specs_omni_proto_enumTypes[9]
+}
+
+func (x TalosUpgradeStatusSpec_Phase) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use TalosUpgradeStatusSpec_Phase.Descriptor instead.
+func (TalosUpgradeStatusSpec_Phase) EnumDescriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{36, 0}
+}
+
+type ControlPlaneStatusSpec_Condition_Status int32
+
+const (
+ ControlPlaneStatusSpec_Condition_Unknown ControlPlaneStatusSpec_Condition_Status = 0
+ ControlPlaneStatusSpec_Condition_Ready ControlPlaneStatusSpec_Condition_Status = 1
+ ControlPlaneStatusSpec_Condition_NotReady ControlPlaneStatusSpec_Condition_Status = 2
+)
+
+// Enum value maps for ControlPlaneStatusSpec_Condition_Status.
+var (
+ ControlPlaneStatusSpec_Condition_Status_name = map[int32]string{
+ 0: "Unknown",
+ 1: "Ready",
+ 2: "NotReady",
+ }
+ ControlPlaneStatusSpec_Condition_Status_value = map[string]int32{
+ "Unknown": 0,
+ "Ready": 1,
+ "NotReady": 2,
+ }
+)
+
+func (x ControlPlaneStatusSpec_Condition_Status) Enum() *ControlPlaneStatusSpec_Condition_Status {
+ p := new(ControlPlaneStatusSpec_Condition_Status)
+ *p = x
+ return p
+}
+
+func (x ControlPlaneStatusSpec_Condition_Status) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ControlPlaneStatusSpec_Condition_Status) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_specs_omni_proto_enumTypes[10].Descriptor()
+}
+
+func (ControlPlaneStatusSpec_Condition_Status) Type() protoreflect.EnumType {
+ return &file_omni_specs_omni_proto_enumTypes[10]
+}
+
+func (x ControlPlaneStatusSpec_Condition_Status) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ControlPlaneStatusSpec_Condition_Status.Descriptor instead.
+func (ControlPlaneStatusSpec_Condition_Status) EnumDescriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{41, 0, 0}
+}
+
+type ControlPlaneStatusSpec_Condition_Severity int32
+
+const (
+ ControlPlaneStatusSpec_Condition_Info ControlPlaneStatusSpec_Condition_Severity = 0
+ ControlPlaneStatusSpec_Condition_Warning ControlPlaneStatusSpec_Condition_Severity = 1
+ ControlPlaneStatusSpec_Condition_Error ControlPlaneStatusSpec_Condition_Severity = 2
+)
+
+// Enum value maps for ControlPlaneStatusSpec_Condition_Severity.
+var (
+ ControlPlaneStatusSpec_Condition_Severity_name = map[int32]string{
+ 0: "Info",
+ 1: "Warning",
+ 2: "Error",
+ }
+ ControlPlaneStatusSpec_Condition_Severity_value = map[string]int32{
+ "Info": 0,
+ "Warning": 1,
+ "Error": 2,
+ }
+)
+
+func (x ControlPlaneStatusSpec_Condition_Severity) Enum() *ControlPlaneStatusSpec_Condition_Severity {
+ p := new(ControlPlaneStatusSpec_Condition_Severity)
+ *p = x
+ return p
+}
+
+func (x ControlPlaneStatusSpec_Condition_Severity) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ControlPlaneStatusSpec_Condition_Severity) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_specs_omni_proto_enumTypes[11].Descriptor()
+}
+
+func (ControlPlaneStatusSpec_Condition_Severity) Type() protoreflect.EnumType {
+ return &file_omni_specs_omni_proto_enumTypes[11]
+}
+
+func (x ControlPlaneStatusSpec_Condition_Severity) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ControlPlaneStatusSpec_Condition_Severity.Descriptor instead.
+func (ControlPlaneStatusSpec_Condition_Severity) EnumDescriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{41, 0, 1}
+}
+
+type KubernetesUpgradeStatusSpec_Phase int32
+
+const (
+ KubernetesUpgradeStatusSpec_Unknown KubernetesUpgradeStatusSpec_Phase = 0
+ KubernetesUpgradeStatusSpec_Upgrading KubernetesUpgradeStatusSpec_Phase = 1
+ KubernetesUpgradeStatusSpec_Done KubernetesUpgradeStatusSpec_Phase = 2
+ KubernetesUpgradeStatusSpec_Failed KubernetesUpgradeStatusSpec_Phase = 3
+ KubernetesUpgradeStatusSpec_Reverting KubernetesUpgradeStatusSpec_Phase = 4
+)
+
+// Enum value maps for KubernetesUpgradeStatusSpec_Phase.
+var (
+ KubernetesUpgradeStatusSpec_Phase_name = map[int32]string{
+ 0: "Unknown",
+ 1: "Upgrading",
+ 2: "Done",
+ 3: "Failed",
+ 4: "Reverting",
+ }
+ KubernetesUpgradeStatusSpec_Phase_value = map[string]int32{
+ "Unknown": 0,
+ "Upgrading": 1,
+ "Done": 2,
+ "Failed": 3,
+ "Reverting": 4,
+ }
+)
+
+func (x KubernetesUpgradeStatusSpec_Phase) Enum() *KubernetesUpgradeStatusSpec_Phase {
+ p := new(KubernetesUpgradeStatusSpec_Phase)
+ *p = x
+ return p
+}
+
+func (x KubernetesUpgradeStatusSpec_Phase) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (KubernetesUpgradeStatusSpec_Phase) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_specs_omni_proto_enumTypes[12].Descriptor()
+}
+
+func (KubernetesUpgradeStatusSpec_Phase) Type() protoreflect.EnumType {
+ return &file_omni_specs_omni_proto_enumTypes[12]
+}
+
+func (x KubernetesUpgradeStatusSpec_Phase) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use KubernetesUpgradeStatusSpec_Phase.Descriptor instead.
+func (KubernetesUpgradeStatusSpec_Phase) EnumDescriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{44, 0}
+}
+
+type SchematicConfigurationSpec_Target int32
+
+const (
+ SchematicConfigurationSpec_Unknown SchematicConfigurationSpec_Target = 0
+ SchematicConfigurationSpec_ClusterMachine SchematicConfigurationSpec_Target = 1
+ SchematicConfigurationSpec_MachineSet SchematicConfigurationSpec_Target = 2
+ SchematicConfigurationSpec_Cluster SchematicConfigurationSpec_Target = 3
+)
+
+// Enum value maps for SchematicConfigurationSpec_Target.
+var (
+ SchematicConfigurationSpec_Target_name = map[int32]string{
+ 0: "Unknown",
+ 1: "ClusterMachine",
+ 2: "MachineSet",
+ 3: "Cluster",
+ }
+ SchematicConfigurationSpec_Target_value = map[string]int32{
+ "Unknown": 0,
+ "ClusterMachine": 1,
+ "MachineSet": 2,
+ "Cluster": 3,
+ }
+)
+
+func (x SchematicConfigurationSpec_Target) Enum() *SchematicConfigurationSpec_Target {
+ p := new(SchematicConfigurationSpec_Target)
+ *p = x
+ return p
+}
+
+func (x SchematicConfigurationSpec_Target) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (SchematicConfigurationSpec_Target) Descriptor() protoreflect.EnumDescriptor {
+ return file_omni_specs_omni_proto_enumTypes[13].Descriptor()
+}
+
+func (SchematicConfigurationSpec_Target) Type() protoreflect.EnumType {
+ return &file_omni_specs_omni_proto_enumTypes[13]
+}
+
+func (x SchematicConfigurationSpec_Target) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SchematicConfigurationSpec_Target.Descriptor instead.
+func (SchematicConfigurationSpec_Target) EnumDescriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{61, 0}
+}
+
+// MachineSpec describes a Machine.
+type MachineSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // IP which can be used to access Talos API.
+ ManagementAddress string `protobuf:"bytes,1,opt,name=management_address,json=managementAddress,proto3" json:"management_address,omitempty"`
+ // Connected is copied from the corresponding Link resource.
+ Connected bool `protobuf:"varint,2,opt,name=connected,proto3" json:"connected,omitempty"`
+}
+
+func (x *MachineSpec) Reset() {
+ *x = MachineSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineSpec) ProtoMessage() {}
+
+func (x *MachineSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineSpec.ProtoReflect.Descriptor instead.
+func (*MachineSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *MachineSpec) GetManagementAddress() string {
+ if x != nil {
+ return x.ManagementAddress
+ }
+ return ""
+}
+
+func (x *MachineSpec) GetConnected() bool {
+ if x != nil {
+ return x.Connected
+ }
+ return false
+}
+
+// MachineStatusSpec describes state of a Machine.
+type MachineStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Talos version.
+ TalosVersion string `protobuf:"bytes,1,opt,name=talos_version,json=talosVersion,proto3" json:"talos_version,omitempty"`
+ // Hardware-related information.
+ Hardware *MachineStatusSpec_HardwareStatus `protobuf:"bytes,2,opt,name=hardware,proto3" json:"hardware,omitempty"`
+ // Network-related information.
+ Network *MachineStatusSpec_NetworkStatus `protobuf:"bytes,3,opt,name=network,proto3" json:"network,omitempty"`
+ // Set if the last poll resulted in an error.
+ LastError string `protobuf:"bytes,4,opt,name=last_error,json=lastError,proto3" json:"last_error,omitempty"`
+ // Management address is copied from the machine resource.
+ ManagementAddress string `protobuf:"bytes,5,opt,name=management_address,json=managementAddress,proto3" json:"management_address,omitempty"`
+ // Connected is copied from the corresponding Link resource.
+ Connected bool `protobuf:"varint,6,opt,name=connected,proto3" json:"connected,omitempty"`
+ // Maintenance flag means that the node is running in the maintenance mode.
+ Maintenance bool `protobuf:"varint,7,opt,name=maintenance,proto3" json:"maintenance,omitempty"`
+ // Cluster is the name of the cluster the machine belongs to.
+ Cluster string `protobuf:"bytes,9,opt,name=cluster,proto3" json:"cluster,omitempty"`
+ // Role is the role of the machine in the cluster.
+ Role MachineStatusSpec_Role `protobuf:"varint,10,opt,name=role,proto3,enum=specs.MachineStatusSpec_Role" json:"role,omitempty"`
+ // Platform-specific information.
+ PlatformMetadata *MachineStatusSpec_PlatformMetadata `protobuf:"bytes,11,opt,name=platform_metadata,json=platformMetadata,proto3" json:"platform_metadata,omitempty"`
+ ImageLabels map[string]string `protobuf:"bytes,13,rep,name=image_labels,json=imageLabels,proto3" json:"image_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ Schematic *MachineStatusSpec_Schematic `protobuf:"bytes,14,opt,name=schematic,proto3" json:"schematic,omitempty"`
+}
+
+func (x *MachineStatusSpec) Reset() {
+ *x = MachineStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineStatusSpec) ProtoMessage() {}
+
+func (x *MachineStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineStatusSpec.ProtoReflect.Descriptor instead.
+func (*MachineStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *MachineStatusSpec) GetTalosVersion() string {
+ if x != nil {
+ return x.TalosVersion
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec) GetHardware() *MachineStatusSpec_HardwareStatus {
+ if x != nil {
+ return x.Hardware
+ }
+ return nil
+}
+
+func (x *MachineStatusSpec) GetNetwork() *MachineStatusSpec_NetworkStatus {
+ if x != nil {
+ return x.Network
+ }
+ return nil
+}
+
+func (x *MachineStatusSpec) GetLastError() string {
+ if x != nil {
+ return x.LastError
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec) GetManagementAddress() string {
+ if x != nil {
+ return x.ManagementAddress
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec) GetConnected() bool {
+ if x != nil {
+ return x.Connected
+ }
+ return false
+}
+
+func (x *MachineStatusSpec) GetMaintenance() bool {
+ if x != nil {
+ return x.Maintenance
+ }
+ return false
+}
+
+func (x *MachineStatusSpec) GetCluster() string {
+ if x != nil {
+ return x.Cluster
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec) GetRole() MachineStatusSpec_Role {
+ if x != nil {
+ return x.Role
+ }
+ return MachineStatusSpec_NONE
+}
+
+func (x *MachineStatusSpec) GetPlatformMetadata() *MachineStatusSpec_PlatformMetadata {
+ if x != nil {
+ return x.PlatformMetadata
+ }
+ return nil
+}
+
+func (x *MachineStatusSpec) GetImageLabels() map[string]string {
+ if x != nil {
+ return x.ImageLabels
+ }
+ return nil
+}
+
+func (x *MachineStatusSpec) GetSchematic() *MachineStatusSpec_Schematic {
+ if x != nil {
+ return x.Schematic
+ }
+ return nil
+}
+
+// TalosConfigSpec describes a Talos cluster config.
+type TalosConfigSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Ca certificate authority.
+ Ca string `protobuf:"bytes,1,opt,name=ca,proto3" json:"ca,omitempty"`
+ // Crt certificate.
+ Crt string `protobuf:"bytes,2,opt,name=crt,proto3" json:"crt,omitempty"`
+ // Key certificate key.
+ Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"`
+}
+
+func (x *TalosConfigSpec) Reset() {
+ *x = TalosConfigSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TalosConfigSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TalosConfigSpec) ProtoMessage() {}
+
+func (x *TalosConfigSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TalosConfigSpec.ProtoReflect.Descriptor instead.
+func (*TalosConfigSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *TalosConfigSpec) GetCa() string {
+ if x != nil {
+ return x.Ca
+ }
+ return ""
+}
+
+func (x *TalosConfigSpec) GetCrt() string {
+ if x != nil {
+ return x.Crt
+ }
+ return ""
+}
+
+func (x *TalosConfigSpec) GetKey() string {
+ if x != nil {
+ return x.Key
+ }
+ return ""
+}
+
+// Cluster describes a Talos cluster.
+type ClusterSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // InstallImage the installer image to use.
+ //
+ // Deprecated: Marked as deprecated in omni/specs/omni.proto.
+ InstallImage string `protobuf:"bytes,1,opt,name=install_image,json=installImage,proto3" json:"install_image,omitempty"`
+ // KubernetesVersion to use on the node.
+ KubernetesVersion string `protobuf:"bytes,2,opt,name=kubernetes_version,json=kubernetesVersion,proto3" json:"kubernetes_version,omitempty"`
+ // TalosVersion cluster wide Talos version.
+ TalosVersion string `protobuf:"bytes,3,opt,name=talos_version,json=talosVersion,proto3" json:"talos_version,omitempty"`
+ // Features are the cluster features.
+ Features *ClusterSpec_Features `protobuf:"bytes,4,opt,name=features,proto3" json:"features,omitempty"`
+ // Backup describes the backup configuration. If it set to null that means that backups are disabled for this cluster.
+ BackupConfiguration *EtcdBackupConf `protobuf:"bytes,5,opt,name=backup_configuration,json=backupConfiguration,proto3" json:"backup_configuration,omitempty"`
+}
+
+func (x *ClusterSpec) Reset() {
+ *x = ClusterSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterSpec) ProtoMessage() {}
+
+func (x *ClusterSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterSpec.ProtoReflect.Descriptor instead.
+func (*ClusterSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{3}
+}
+
+// Deprecated: Marked as deprecated in omni/specs/omni.proto.
+func (x *ClusterSpec) GetInstallImage() string {
+ if x != nil {
+ return x.InstallImage
+ }
+ return ""
+}
+
+func (x *ClusterSpec) GetKubernetesVersion() string {
+ if x != nil {
+ return x.KubernetesVersion
+ }
+ return ""
+}
+
+func (x *ClusterSpec) GetTalosVersion() string {
+ if x != nil {
+ return x.TalosVersion
+ }
+ return ""
+}
+
+func (x *ClusterSpec) GetFeatures() *ClusterSpec_Features {
+ if x != nil {
+ return x.Features
+ }
+ return nil
+}
+
+func (x *ClusterSpec) GetBackupConfiguration() *EtcdBackupConf {
+ if x != nil {
+ return x.BackupConfiguration
+ }
+ return nil
+}
+
+// EtcdBackupConf describes the backup configuration.
+type EtcdBackupConf struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Interval is the interval between backups. If not set, backups are disabled.
+ Interval *durationpb.Duration `protobuf:"bytes,1,opt,name=interval,proto3" json:"interval,omitempty"`
+ // Enabled etcd backups.
+ Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"`
+}
+
+func (x *EtcdBackupConf) Reset() {
+ *x = EtcdBackupConf{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EtcdBackupConf) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EtcdBackupConf) ProtoMessage() {}
+
+func (x *EtcdBackupConf) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EtcdBackupConf.ProtoReflect.Descriptor instead.
+func (*EtcdBackupConf) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *EtcdBackupConf) GetInterval() *durationpb.Duration {
+ if x != nil {
+ return x.Interval
+ }
+ return nil
+}
+
+func (x *EtcdBackupConf) GetEnabled() bool {
+ if x != nil {
+ return x.Enabled
+ }
+ return false
+}
+
+// EtcdBackupEncryptionSpec describes the backup encryption.
+type EtcdBackupEncryptionSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ EncryptionKey []byte `protobuf:"bytes,1,opt,name=encryption_key,json=encryptionKey,proto3" json:"encryption_key,omitempty"`
+}
+
+func (x *EtcdBackupEncryptionSpec) Reset() {
+ *x = EtcdBackupEncryptionSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EtcdBackupEncryptionSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EtcdBackupEncryptionSpec) ProtoMessage() {}
+
+func (x *EtcdBackupEncryptionSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EtcdBackupEncryptionSpec.ProtoReflect.Descriptor instead.
+func (*EtcdBackupEncryptionSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *EtcdBackupEncryptionSpec) GetEncryptionKey() []byte {
+ if x != nil {
+ return x.EncryptionKey
+ }
+ return nil
+}
+
+// EtcdBackupHeader describes the backup header.
+type EtcdBackupHeader struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Version is the version of the backup creator.
+ Version int64 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
+}
+
+func (x *EtcdBackupHeader) Reset() {
+ *x = EtcdBackupHeader{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EtcdBackupHeader) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EtcdBackupHeader) ProtoMessage() {}
+
+func (x *EtcdBackupHeader) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EtcdBackupHeader.ProtoReflect.Descriptor instead.
+func (*EtcdBackupHeader) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *EtcdBackupHeader) GetVersion() int64 {
+ if x != nil {
+ return x.Version
+ }
+ return 0
+}
+
+// EtcdBackupSpec describes the backup.
+type EtcdBackupSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // CreatedAt is the time when the backup was created.
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ // Snapshot is the snapshot file name.
+ Snapshot string `protobuf:"bytes,2,opt,name=snapshot,proto3" json:"snapshot,omitempty"`
+ // Size specifies the etcd backup size.
+ Size uint64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"`
+}
+
+func (x *EtcdBackupSpec) Reset() {
+ *x = EtcdBackupSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EtcdBackupSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EtcdBackupSpec) ProtoMessage() {}
+
+func (x *EtcdBackupSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EtcdBackupSpec.ProtoReflect.Descriptor instead.
+func (*EtcdBackupSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *EtcdBackupSpec) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *EtcdBackupSpec) GetSnapshot() string {
+ if x != nil {
+ return x.Snapshot
+ }
+ return ""
+}
+
+func (x *EtcdBackupSpec) GetSize() uint64 {
+ if x != nil {
+ return x.Size
+ }
+ return 0
+}
+
+// BackupDataSpec describes the data needed for etcd backup.
+type BackupDataSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Interval *durationpb.Duration `protobuf:"bytes,1,opt,name=interval,proto3" json:"interval,omitempty"`
+ ClusterUuid string `protobuf:"bytes,2,opt,name=cluster_uuid,json=clusterUuid,proto3" json:"cluster_uuid,omitempty"`
+ EncryptionKey []byte `protobuf:"bytes,3,opt,name=encryption_key,json=encryptionKey,proto3" json:"encryption_key,omitempty"`
+ AesCbcEncryptionSecret string `protobuf:"bytes,4,opt,name=aes_cbc_encryption_secret,json=aesCbcEncryptionSecret,proto3" json:"aes_cbc_encryption_secret,omitempty"`
+ SecretboxEncryptionSecret string `protobuf:"bytes,5,opt,name=secretbox_encryption_secret,json=secretboxEncryptionSecret,proto3" json:"secretbox_encryption_secret,omitempty"`
+}
+
+func (x *BackupDataSpec) Reset() {
+ *x = BackupDataSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BackupDataSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BackupDataSpec) ProtoMessage() {}
+
+func (x *BackupDataSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BackupDataSpec.ProtoReflect.Descriptor instead.
+func (*BackupDataSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *BackupDataSpec) GetInterval() *durationpb.Duration {
+ if x != nil {
+ return x.Interval
+ }
+ return nil
+}
+
+func (x *BackupDataSpec) GetClusterUuid() string {
+ if x != nil {
+ return x.ClusterUuid
+ }
+ return ""
+}
+
+func (x *BackupDataSpec) GetEncryptionKey() []byte {
+ if x != nil {
+ return x.EncryptionKey
+ }
+ return nil
+}
+
+func (x *BackupDataSpec) GetAesCbcEncryptionSecret() string {
+ if x != nil {
+ return x.AesCbcEncryptionSecret
+ }
+ return ""
+}
+
+func (x *BackupDataSpec) GetSecretboxEncryptionSecret() string {
+ if x != nil {
+ return x.SecretboxEncryptionSecret
+ }
+ return ""
+}
+
+// EtcdBackupS3ConfSpec describes the S3 configuration for the backup process.
+type EtcdBackupS3ConfSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"`
+ Region string `protobuf:"bytes,2,opt,name=region,proto3" json:"region,omitempty"`
+ Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
+ AccessKeyId string `protobuf:"bytes,4,opt,name=access_key_id,json=accessKeyId,proto3" json:"access_key_id,omitempty"`
+ SecretAccessKey string `protobuf:"bytes,5,opt,name=secret_access_key,json=secretAccessKey,proto3" json:"secret_access_key,omitempty"`
+ SessionToken string `protobuf:"bytes,6,opt,name=session_token,json=sessionToken,proto3" json:"session_token,omitempty"`
+}
+
+func (x *EtcdBackupS3ConfSpec) Reset() {
+ *x = EtcdBackupS3ConfSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EtcdBackupS3ConfSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EtcdBackupS3ConfSpec) ProtoMessage() {}
+
+func (x *EtcdBackupS3ConfSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EtcdBackupS3ConfSpec.ProtoReflect.Descriptor instead.
+func (*EtcdBackupS3ConfSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *EtcdBackupS3ConfSpec) GetBucket() string {
+ if x != nil {
+ return x.Bucket
+ }
+ return ""
+}
+
+func (x *EtcdBackupS3ConfSpec) GetRegion() string {
+ if x != nil {
+ return x.Region
+ }
+ return ""
+}
+
+func (x *EtcdBackupS3ConfSpec) GetEndpoint() string {
+ if x != nil {
+ return x.Endpoint
+ }
+ return ""
+}
+
+func (x *EtcdBackupS3ConfSpec) GetAccessKeyId() string {
+ if x != nil {
+ return x.AccessKeyId
+ }
+ return ""
+}
+
+func (x *EtcdBackupS3ConfSpec) GetSecretAccessKey() string {
+ if x != nil {
+ return x.SecretAccessKey
+ }
+ return ""
+}
+
+func (x *EtcdBackupS3ConfSpec) GetSessionToken() string {
+ if x != nil {
+ return x.SessionToken
+ }
+ return ""
+}
+
+// EtcdBackupStatus describes cluster last backup status.
+type EtcdBackupStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Status is the status of the last backup.
+ Status EtcdBackupStatusSpec_Status `protobuf:"varint,1,opt,name=status,proto3,enum=specs.EtcdBackupStatusSpec_Status" json:"status,omitempty"`
+ // Error is the error message if the backup failed.
+ Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
+ // LastBackupTime is the time of the last backup.
+ LastBackupTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=last_backup_time,json=lastBackupTime,proto3" json:"last_backup_time,omitempty"`
+ // LastBackupAttempt is the time of the last backup attempt.
+ LastBackupAttempt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_backup_attempt,json=lastBackupAttempt,proto3" json:"last_backup_attempt,omitempty"`
+}
+
+func (x *EtcdBackupStatusSpec) Reset() {
+ *x = EtcdBackupStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EtcdBackupStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EtcdBackupStatusSpec) ProtoMessage() {}
+
+func (x *EtcdBackupStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[10]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EtcdBackupStatusSpec.ProtoReflect.Descriptor instead.
+func (*EtcdBackupStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *EtcdBackupStatusSpec) GetStatus() EtcdBackupStatusSpec_Status {
+ if x != nil {
+ return x.Status
+ }
+ return EtcdBackupStatusSpec_Unknown
+}
+
+func (x *EtcdBackupStatusSpec) GetError() string {
+ if x != nil {
+ return x.Error
+ }
+ return ""
+}
+
+func (x *EtcdBackupStatusSpec) GetLastBackupTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastBackupTime
+ }
+ return nil
+}
+
+func (x *EtcdBackupStatusSpec) GetLastBackupAttempt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastBackupAttempt
+ }
+ return nil
+}
+
+// EtcdManualBackupSpec describes the manual backup request.
+type EtcdManualBackupSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // BackupAt is the time when the backup should be created.
+ BackupAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=backup_at,json=backupAt,proto3" json:"backup_at,omitempty"`
+}
+
+func (x *EtcdManualBackupSpec) Reset() {
+ *x = EtcdManualBackupSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EtcdManualBackupSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EtcdManualBackupSpec) ProtoMessage() {}
+
+func (x *EtcdManualBackupSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[11]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EtcdManualBackupSpec.ProtoReflect.Descriptor instead.
+func (*EtcdManualBackupSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *EtcdManualBackupSpec) GetBackupAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.BackupAt
+ }
+ return nil
+}
+
+// EtcdBackupStoreStatusSpec is internal resource that decribes store configuration name and configuration last error.
+type EtcdBackupStoreStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // ConfigurationName is the name of the configuration (disabled|local|s3).
+ ConfigurationName string `protobuf:"bytes,1,opt,name=configuration_name,json=configurationName,proto3" json:"configuration_name,omitempty"`
+ // ConfigurationError is the error message if the configuration is invalid.
+ ConfigurationError string `protobuf:"bytes,2,opt,name=configuration_error,json=configurationError,proto3" json:"configuration_error,omitempty"`
+}
+
+func (x *EtcdBackupStoreStatusSpec) Reset() {
+ *x = EtcdBackupStoreStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EtcdBackupStoreStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EtcdBackupStoreStatusSpec) ProtoMessage() {}
+
+func (x *EtcdBackupStoreStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EtcdBackupStoreStatusSpec.ProtoReflect.Descriptor instead.
+func (*EtcdBackupStoreStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *EtcdBackupStoreStatusSpec) GetConfigurationName() string {
+ if x != nil {
+ return x.ConfigurationName
+ }
+ return ""
+}
+
+func (x *EtcdBackupStoreStatusSpec) GetConfigurationError() string {
+ if x != nil {
+ return x.ConfigurationError
+ }
+ return ""
+}
+
+// EtcdBackupOverallStatusSpec describes the overall etcd backup system status.
+type EtcdBackupOverallStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // ConfigurationName is the name of the configuration (disabled|local|s3).
+ ConfigurationName string `protobuf:"bytes,1,opt,name=configuration_name,json=configurationName,proto3" json:"configuration_name,omitempty"`
+ // ConfigurationError is the error message if the configuration is invalid.
+ ConfigurationError string `protobuf:"bytes,2,opt,name=configuration_error,json=configurationError,proto3" json:"configuration_error,omitempty"`
+ // LastBackupStatus is the status of the last backup.
+ LastBackupStatus *EtcdBackupStatusSpec `protobuf:"bytes,3,opt,name=last_backup_status,json=lastBackupStatus,proto3" json:"last_backup_status,omitempty"`
+}
+
+func (x *EtcdBackupOverallStatusSpec) Reset() {
+ *x = EtcdBackupOverallStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EtcdBackupOverallStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EtcdBackupOverallStatusSpec) ProtoMessage() {}
+
+func (x *EtcdBackupOverallStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[13]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EtcdBackupOverallStatusSpec.ProtoReflect.Descriptor instead.
+func (*EtcdBackupOverallStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *EtcdBackupOverallStatusSpec) GetConfigurationName() string {
+ if x != nil {
+ return x.ConfigurationName
+ }
+ return ""
+}
+
+func (x *EtcdBackupOverallStatusSpec) GetConfigurationError() string {
+ if x != nil {
+ return x.ConfigurationError
+ }
+ return ""
+}
+
+func (x *EtcdBackupOverallStatusSpec) GetLastBackupStatus() *EtcdBackupStatusSpec {
+ if x != nil {
+ return x.LastBackupStatus
+ }
+ return nil
+}
+
+// ClusterMachineSpec describes a machine attached to a Cluster.
+type ClusterMachineSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // KubernetesVersion to use on the machine (copied from Cluster at the moment of creation).
+ KubernetesVersion string `protobuf:"bytes,2,opt,name=kubernetes_version,json=kubernetesVersion,proto3" json:"kubernetes_version,omitempty"`
+}
+
+func (x *ClusterMachineSpec) Reset() {
+ *x = ClusterMachineSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterMachineSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterMachineSpec) ProtoMessage() {}
+
+func (x *ClusterMachineSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[14]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterMachineSpec.ProtoReflect.Descriptor instead.
+func (*ClusterMachineSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *ClusterMachineSpec) GetKubernetesVersion() string {
+ if x != nil {
+ return x.KubernetesVersion
+ }
+ return ""
+}
+
+// ClusterMachineConfigPatchesSpec keeps the list of config patches to be applied on the machine.
+type ClusterMachineConfigPatchesSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // List of patches combined from all sources, as a final list of patches to apply.
+ Patches []string `protobuf:"bytes,1,rep,name=patches,proto3" json:"patches,omitempty"`
+}
+
+func (x *ClusterMachineConfigPatchesSpec) Reset() {
+ *x = ClusterMachineConfigPatchesSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[15]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterMachineConfigPatchesSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterMachineConfigPatchesSpec) ProtoMessage() {}
+
+func (x *ClusterMachineConfigPatchesSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[15]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterMachineConfigPatchesSpec.ProtoReflect.Descriptor instead.
+func (*ClusterMachineConfigPatchesSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *ClusterMachineConfigPatchesSpec) GetPatches() []string {
+ if x != nil {
+ return x.Patches
+ }
+ return nil
+}
+
+// ClusterMachineTalosVersionSpec describes a machine Talos version and schematic.
+type ClusterMachineTalosVersionSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TalosVersion string `protobuf:"bytes,1,opt,name=talos_version,json=talosVersion,proto3" json:"talos_version,omitempty"`
+ SchematicId string `protobuf:"bytes,2,opt,name=schematic_id,json=schematicId,proto3" json:"schematic_id,omitempty"`
+}
+
+func (x *ClusterMachineTalosVersionSpec) Reset() {
+ *x = ClusterMachineTalosVersionSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[16]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterMachineTalosVersionSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterMachineTalosVersionSpec) ProtoMessage() {}
+
+func (x *ClusterMachineTalosVersionSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[16]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterMachineTalosVersionSpec.ProtoReflect.Descriptor instead.
+func (*ClusterMachineTalosVersionSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *ClusterMachineTalosVersionSpec) GetTalosVersion() string {
+ if x != nil {
+ return x.TalosVersion
+ }
+ return ""
+}
+
+func (x *ClusterMachineTalosVersionSpec) GetSchematicId() string {
+ if x != nil {
+ return x.SchematicId
+ }
+ return ""
+}
+
+// ClusterMachineConfigSpec stores generated Talos node machine config.
+type ClusterMachineConfigSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
+ ClusterMachineVersion string `protobuf:"bytes,2,opt,name=cluster_machine_version,json=clusterMachineVersion,proto3" json:"cluster_machine_version,omitempty"`
+ GenerationError string `protobuf:"bytes,3,opt,name=generation_error,json=generationError,proto3" json:"generation_error,omitempty"`
+}
+
+func (x *ClusterMachineConfigSpec) Reset() {
+ *x = ClusterMachineConfigSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[17]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterMachineConfigSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterMachineConfigSpec) ProtoMessage() {}
+
+func (x *ClusterMachineConfigSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[17]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterMachineConfigSpec.ProtoReflect.Descriptor instead.
+func (*ClusterMachineConfigSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *ClusterMachineConfigSpec) GetData() []byte {
+ if x != nil {
+ return x.Data
+ }
+ return nil
+}
+
+func (x *ClusterMachineConfigSpec) GetClusterMachineVersion() string {
+ if x != nil {
+ return x.ClusterMachineVersion
+ }
+ return ""
+}
+
+func (x *ClusterMachineConfigSpec) GetGenerationError() string {
+ if x != nil {
+ return x.GenerationError
+ }
+ return ""
+}
+
+// ClusterMachineConfigSpec stores generated Talos node machine config.
+type RedactedClusterMachineConfigSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Data string `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
+}
+
+func (x *RedactedClusterMachineConfigSpec) Reset() {
+ *x = RedactedClusterMachineConfigSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[18]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RedactedClusterMachineConfigSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RedactedClusterMachineConfigSpec) ProtoMessage() {}
+
+func (x *RedactedClusterMachineConfigSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[18]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RedactedClusterMachineConfigSpec.ProtoReflect.Descriptor instead.
+func (*RedactedClusterMachineConfigSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *RedactedClusterMachineConfigSpec) GetData() string {
+ if x != nil {
+ return x.Data
+ }
+ return ""
+}
+
+// ClusterMachineIdentity keeps ClusterMachine related node information.
+type ClusterMachineIdentitySpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // NodeIdentity is Talos node identity from Identity resource.
+ NodeIdentity string `protobuf:"bytes,1,opt,name=node_identity,json=nodeIdentity,proto3" json:"node_identity,omitempty"`
+ // EtcdMemberId is the id of the node how it's represented in the etcd quorum.
+ EtcdMemberId uint64 `protobuf:"varint,2,opt,name=etcd_member_id,json=etcdMemberId,proto3" json:"etcd_member_id,omitempty"`
+ // Nodename is the Kubernetes node name.
+ Nodename string `protobuf:"bytes,3,opt,name=nodename,proto3" json:"nodename,omitempty"`
+ // NodeIps are the IPs of the Kubernetes node.
+ NodeIps []string `protobuf:"bytes,8,rep,name=node_ips,json=nodeIps,proto3" json:"node_ips,omitempty"`
+}
+
+func (x *ClusterMachineIdentitySpec) Reset() {
+ *x = ClusterMachineIdentitySpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[19]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterMachineIdentitySpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterMachineIdentitySpec) ProtoMessage() {}
+
+func (x *ClusterMachineIdentitySpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[19]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterMachineIdentitySpec.ProtoReflect.Descriptor instead.
+func (*ClusterMachineIdentitySpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{19}
+}
+
+func (x *ClusterMachineIdentitySpec) GetNodeIdentity() string {
+ if x != nil {
+ return x.NodeIdentity
+ }
+ return ""
+}
+
+func (x *ClusterMachineIdentitySpec) GetEtcdMemberId() uint64 {
+ if x != nil {
+ return x.EtcdMemberId
+ }
+ return 0
+}
+
+func (x *ClusterMachineIdentitySpec) GetNodename() string {
+ if x != nil {
+ return x.Nodename
+ }
+ return ""
+}
+
+func (x *ClusterMachineIdentitySpec) GetNodeIps() []string {
+ if x != nil {
+ return x.NodeIps
+ }
+ return nil
+}
+
+// ClusterMachineTemplateSpec
+type ClusterMachineTemplateSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // InstallImage the installer image to use.
+ InstallImage string `protobuf:"bytes,1,opt,name=install_image,json=installImage,proto3" json:"install_image,omitempty"`
+ // KubernetesVersion to use on the node.
+ KubernetesVersion string `protobuf:"bytes,2,opt,name=kubernetes_version,json=kubernetesVersion,proto3" json:"kubernetes_version,omitempty"`
+ // InstallDisk Talos system disk.
+ InstallDisk string `protobuf:"bytes,3,opt,name=install_disk,json=installDisk,proto3" json:"install_disk,omitempty"`
+ // Patch represents machinery config patch.
+ Patch string `protobuf:"bytes,5,opt,name=patch,proto3" json:"patch,omitempty"`
+}
+
+func (x *ClusterMachineTemplateSpec) Reset() {
+ *x = ClusterMachineTemplateSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[20]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterMachineTemplateSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterMachineTemplateSpec) ProtoMessage() {}
+
+func (x *ClusterMachineTemplateSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[20]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterMachineTemplateSpec.ProtoReflect.Descriptor instead.
+func (*ClusterMachineTemplateSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{20}
+}
+
+func (x *ClusterMachineTemplateSpec) GetInstallImage() string {
+ if x != nil {
+ return x.InstallImage
+ }
+ return ""
+}
+
+func (x *ClusterMachineTemplateSpec) GetKubernetesVersion() string {
+ if x != nil {
+ return x.KubernetesVersion
+ }
+ return ""
+}
+
+func (x *ClusterMachineTemplateSpec) GetInstallDisk() string {
+ if x != nil {
+ return x.InstallDisk
+ }
+ return ""
+}
+
+func (x *ClusterMachineTemplateSpec) GetPatch() string {
+ if x != nil {
+ return x.Patch
+ }
+ return ""
+}
+
+// ClusterMachineStatusSpec
+type ClusterMachineStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Ready is true if all services are healthy.
+ Ready bool `protobuf:"varint,1,opt,name=ready,proto3" json:"ready,omitempty"`
+ Stage ClusterMachineStatusSpec_Stage `protobuf:"varint,2,opt,name=stage,proto3,enum=specs.ClusterMachineStatusSpec_Stage" json:"stage,omitempty"`
+ // ApidAvailable is true if the node is a control plane node and the apid service is healthy.
+ ApidAvailable bool `protobuf:"varint,3,opt,name=apid_available,json=apidAvailable,proto3" json:"apid_available,omitempty"`
+ ConfigUpToDate bool `protobuf:"varint,4,opt,name=config_up_to_date,json=configUpToDate,proto3" json:"config_up_to_date,omitempty"`
+ LastConfigError string `protobuf:"bytes,5,opt,name=last_config_error,json=lastConfigError,proto3" json:"last_config_error,omitempty"`
+ // Management address is copied from the machine status resource.
+ ManagementAddress string `protobuf:"bytes,6,opt,name=management_address,json=managementAddress,proto3" json:"management_address,omitempty"`
+ ConfigApplyStatus ConfigApplyStatus `protobuf:"varint,7,opt,name=config_apply_status,json=configApplyStatus,proto3,enum=specs.ConfigApplyStatus" json:"config_apply_status,omitempty"`
+}
+
+func (x *ClusterMachineStatusSpec) Reset() {
+ *x = ClusterMachineStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[21]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterMachineStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterMachineStatusSpec) ProtoMessage() {}
+
+func (x *ClusterMachineStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[21]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterMachineStatusSpec.ProtoReflect.Descriptor instead.
+func (*ClusterMachineStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{21}
+}
+
+func (x *ClusterMachineStatusSpec) GetReady() bool {
+ if x != nil {
+ return x.Ready
+ }
+ return false
+}
+
+func (x *ClusterMachineStatusSpec) GetStage() ClusterMachineStatusSpec_Stage {
+ if x != nil {
+ return x.Stage
+ }
+ return ClusterMachineStatusSpec_UNKNOWN
+}
+
+func (x *ClusterMachineStatusSpec) GetApidAvailable() bool {
+ if x != nil {
+ return x.ApidAvailable
+ }
+ return false
+}
+
+func (x *ClusterMachineStatusSpec) GetConfigUpToDate() bool {
+ if x != nil {
+ return x.ConfigUpToDate
+ }
+ return false
+}
+
+func (x *ClusterMachineStatusSpec) GetLastConfigError() string {
+ if x != nil {
+ return x.LastConfigError
+ }
+ return ""
+}
+
+func (x *ClusterMachineStatusSpec) GetManagementAddress() string {
+ if x != nil {
+ return x.ManagementAddress
+ }
+ return ""
+}
+
+func (x *ClusterMachineStatusSpec) GetConfigApplyStatus() ConfigApplyStatus {
+ if x != nil {
+ return x.ConfigApplyStatus
+ }
+ return ConfigApplyStatus_UNKNOWN
+}
+
+// Machines counts the number of machines in a set including health status.
+type Machines struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Total machines currently allocated.
+ Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"`
+ // Healthy machines.
+ Healthy uint32 `protobuf:"varint,2,opt,name=healthy,proto3" json:"healthy,omitempty"`
+ // Connected represents the number of machines in a machine set connected to the wireguard network.
+ Connected uint32 `protobuf:"varint,3,opt,name=connected,proto3" json:"connected,omitempty"`
+ // Requested machines count, same as total for manual allocation, may differ for machine class mode.
+ Requested uint32 `protobuf:"varint,4,opt,name=requested,proto3" json:"requested,omitempty"`
+}
+
+func (x *Machines) Reset() {
+ *x = Machines{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[22]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Machines) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Machines) ProtoMessage() {}
+
+func (x *Machines) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[22]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Machines.ProtoReflect.Descriptor instead.
+func (*Machines) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{22}
+}
+
+func (x *Machines) GetTotal() uint32 {
+ if x != nil {
+ return x.Total
+ }
+ return 0
+}
+
+func (x *Machines) GetHealthy() uint32 {
+ if x != nil {
+ return x.Healthy
+ }
+ return 0
+}
+
+func (x *Machines) GetConnected() uint32 {
+ if x != nil {
+ return x.Connected
+ }
+ return 0
+}
+
+func (x *Machines) GetRequested() uint32 {
+ if x != nil {
+ return x.Requested
+ }
+ return 0
+}
+
+// ClusterStatusSpec aggregates general information about a cluster.
+type ClusterStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Cluster is available when at least one controlplane node has APId up.
+ Available bool `protobuf:"varint,1,opt,name=available,proto3" json:"available,omitempty"`
+ Machines *Machines `protobuf:"bytes,2,opt,name=machines,proto3" json:"machines,omitempty"`
+ Phase ClusterStatusSpec_Phase `protobuf:"varint,3,opt,name=phase,proto3,enum=specs.ClusterStatusSpec_Phase" json:"phase,omitempty"`
+ Ready bool `protobuf:"varint,4,opt,name=ready,proto3" json:"ready,omitempty"`
+ KubernetesAPIReady bool `protobuf:"varint,5,opt,name=kubernetesAPIReady,proto3" json:"kubernetesAPIReady,omitempty"`
+ ControlplaneReady bool `protobuf:"varint,6,opt,name=controlplaneReady,proto3" json:"controlplaneReady,omitempty"`
+ HasConnectedControlPlanes bool `protobuf:"varint,7,opt,name=has_connected_control_planes,json=hasConnectedControlPlanes,proto3" json:"has_connected_control_planes,omitempty"`
+}
+
+func (x *ClusterStatusSpec) Reset() {
+ *x = ClusterStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[23]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterStatusSpec) ProtoMessage() {}
+
+func (x *ClusterStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[23]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterStatusSpec.ProtoReflect.Descriptor instead.
+func (*ClusterStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *ClusterStatusSpec) GetAvailable() bool {
+ if x != nil {
+ return x.Available
+ }
+ return false
+}
+
+func (x *ClusterStatusSpec) GetMachines() *Machines {
+ if x != nil {
+ return x.Machines
+ }
+ return nil
+}
+
+func (x *ClusterStatusSpec) GetPhase() ClusterStatusSpec_Phase {
+ if x != nil {
+ return x.Phase
+ }
+ return ClusterStatusSpec_UNKNOWN
+}
+
+func (x *ClusterStatusSpec) GetReady() bool {
+ if x != nil {
+ return x.Ready
+ }
+ return false
+}
+
+func (x *ClusterStatusSpec) GetKubernetesAPIReady() bool {
+ if x != nil {
+ return x.KubernetesAPIReady
+ }
+ return false
+}
+
+func (x *ClusterStatusSpec) GetControlplaneReady() bool {
+ if x != nil {
+ return x.ControlplaneReady
+ }
+ return false
+}
+
+func (x *ClusterStatusSpec) GetHasConnectedControlPlanes() bool {
+ if x != nil {
+ return x.HasConnectedControlPlanes
+ }
+ return false
+}
+
+// ClusterUUID keeps the UUID of the cluster.
+type ClusterUUID struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`
+}
+
+func (x *ClusterUUID) Reset() {
+ *x = ClusterUUID{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[24]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterUUID) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterUUID) ProtoMessage() {}
+
+func (x *ClusterUUID) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[24]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterUUID.ProtoReflect.Descriptor instead.
+func (*ClusterUUID) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *ClusterUUID) GetUuid() string {
+ if x != nil {
+ return x.Uuid
+ }
+ return ""
+}
+
+// ClusterConfigVersion keeps the version of Talos which was used for initial config generation.
+type ClusterConfigVersionSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
+}
+
+func (x *ClusterConfigVersionSpec) Reset() {
+ *x = ClusterConfigVersionSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[25]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterConfigVersionSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterConfigVersionSpec) ProtoMessage() {}
+
+func (x *ClusterConfigVersionSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[25]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterConfigVersionSpec.ProtoReflect.Descriptor instead.
+func (*ClusterConfigVersionSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *ClusterConfigVersionSpec) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+// ClusterMachineConfigStatusSpec machine configuration status spec.
+type ClusterMachineConfigStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ClusterMachineConfigVersion string `protobuf:"bytes,3,opt,name=cluster_machine_config_version,json=clusterMachineConfigVersion,proto3" json:"cluster_machine_config_version,omitempty"`
+ ClusterMachineVersion string `protobuf:"bytes,4,opt,name=cluster_machine_version,json=clusterMachineVersion,proto3" json:"cluster_machine_version,omitempty"`
+ ClusterMachineConfigSha256 string `protobuf:"bytes,5,opt,name=cluster_machine_config_sha256,json=clusterMachineConfigSha256,proto3" json:"cluster_machine_config_sha256,omitempty"`
+ LastConfigError string `protobuf:"bytes,6,opt,name=last_config_error,json=lastConfigError,proto3" json:"last_config_error,omitempty"`
+ TalosVersion string `protobuf:"bytes,7,opt,name=talos_version,json=talosVersion,proto3" json:"talos_version,omitempty"`
+ SchematicId string `protobuf:"bytes,8,opt,name=schematic_id,json=schematicId,proto3" json:"schematic_id,omitempty"`
+}
+
+func (x *ClusterMachineConfigStatusSpec) Reset() {
+ *x = ClusterMachineConfigStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[26]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterMachineConfigStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterMachineConfigStatusSpec) ProtoMessage() {}
+
+func (x *ClusterMachineConfigStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[26]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterMachineConfigStatusSpec.ProtoReflect.Descriptor instead.
+func (*ClusterMachineConfigStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *ClusterMachineConfigStatusSpec) GetClusterMachineConfigVersion() string {
+ if x != nil {
+ return x.ClusterMachineConfigVersion
+ }
+ return ""
+}
+
+func (x *ClusterMachineConfigStatusSpec) GetClusterMachineVersion() string {
+ if x != nil {
+ return x.ClusterMachineVersion
+ }
+ return ""
+}
+
+func (x *ClusterMachineConfigStatusSpec) GetClusterMachineConfigSha256() string {
+ if x != nil {
+ return x.ClusterMachineConfigSha256
+ }
+ return ""
+}
+
+func (x *ClusterMachineConfigStatusSpec) GetLastConfigError() string {
+ if x != nil {
+ return x.LastConfigError
+ }
+ return ""
+}
+
+func (x *ClusterMachineConfigStatusSpec) GetTalosVersion() string {
+ if x != nil {
+ return x.TalosVersion
+ }
+ return ""
+}
+
+func (x *ClusterMachineConfigStatusSpec) GetSchematicId() string {
+ if x != nil {
+ return x.SchematicId
+ }
+ return ""
+}
+
+// ClusterBootstrapStatusSpec keeps track of bootstrap calls for a cluster.
+type ClusterBootstrapStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Bootstrapped bool `protobuf:"varint,1,opt,name=bootstrapped,proto3" json:"bootstrapped,omitempty"`
+}
+
+func (x *ClusterBootstrapStatusSpec) Reset() {
+ *x = ClusterBootstrapStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[27]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterBootstrapStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterBootstrapStatusSpec) ProtoMessage() {}
+
+func (x *ClusterBootstrapStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[27]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterBootstrapStatusSpec.ProtoReflect.Descriptor instead.
+func (*ClusterBootstrapStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{27}
+}
+
+func (x *ClusterBootstrapStatusSpec) GetBootstrapped() bool {
+ if x != nil {
+ return x.Bootstrapped
+ }
+ return false
+}
+
+// ClusterSecretsSpec describes cluster secrets.
+type ClusterSecretsSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Bytes holding serialized cluster secrets.
+ Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
+}
+
+func (x *ClusterSecretsSpec) Reset() {
+ *x = ClusterSecretsSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[28]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterSecretsSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterSecretsSpec) ProtoMessage() {}
+
+func (x *ClusterSecretsSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[28]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterSecretsSpec.ProtoReflect.Descriptor instead.
+func (*ClusterSecretsSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{28}
+}
+
+func (x *ClusterSecretsSpec) GetData() []byte {
+ if x != nil {
+ return x.Data
+ }
+ return nil
+}
+
+// LoadBalancerConfigSpec describes the configuration of a load balancer.
+type LoadBalancerConfigSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BindPort string `protobuf:"bytes,2,opt,name=bind_port,json=bindPort,proto3" json:"bind_port,omitempty"`
+ // Full URL of the loadbalancer inside Omni environment.
+ SiderolinkEndpoint string `protobuf:"bytes,4,opt,name=siderolink_endpoint,json=siderolinkEndpoint,proto3" json:"siderolink_endpoint,omitempty"`
+ // IP adresses of the endpoints
+ Endpoints []string `protobuf:"bytes,3,rep,name=endpoints,proto3" json:"endpoints,omitempty"`
+}
+
+func (x *LoadBalancerConfigSpec) Reset() {
+ *x = LoadBalancerConfigSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[29]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *LoadBalancerConfigSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoadBalancerConfigSpec) ProtoMessage() {}
+
+func (x *LoadBalancerConfigSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[29]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use LoadBalancerConfigSpec.ProtoReflect.Descriptor instead.
+func (*LoadBalancerConfigSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{29}
+}
+
+func (x *LoadBalancerConfigSpec) GetBindPort() string {
+ if x != nil {
+ return x.BindPort
+ }
+ return ""
+}
+
+func (x *LoadBalancerConfigSpec) GetSiderolinkEndpoint() string {
+ if x != nil {
+ return x.SiderolinkEndpoint
+ }
+ return ""
+}
+
+func (x *LoadBalancerConfigSpec) GetEndpoints() []string {
+ if x != nil {
+ return x.Endpoints
+ }
+ return nil
+}
+
+// LoadBalancerStatusSpec reflects the status of a load balancer.
+type LoadBalancerStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Healthy bool `protobuf:"varint,3,opt,name=healthy,proto3" json:"healthy,omitempty"`
+ Stopped bool `protobuf:"varint,4,opt,name=stopped,proto3" json:"stopped,omitempty"`
+}
+
+func (x *LoadBalancerStatusSpec) Reset() {
+ *x = LoadBalancerStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[30]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *LoadBalancerStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoadBalancerStatusSpec) ProtoMessage() {}
+
+func (x *LoadBalancerStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[30]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use LoadBalancerStatusSpec.ProtoReflect.Descriptor instead.
+func (*LoadBalancerStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{30}
+}
+
+func (x *LoadBalancerStatusSpec) GetHealthy() bool {
+ if x != nil {
+ return x.Healthy
+ }
+ return false
+}
+
+func (x *LoadBalancerStatusSpec) GetStopped() bool {
+ if x != nil {
+ return x.Stopped
+ }
+ return false
+}
+
+// KubernetesVersionSpec represents an available Kubernetes version.
+type KubernetesVersionSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
+}
+
+func (x *KubernetesVersionSpec) Reset() {
+ *x = KubernetesVersionSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[31]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubernetesVersionSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubernetesVersionSpec) ProtoMessage() {}
+
+func (x *KubernetesVersionSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[31]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubernetesVersionSpec.ProtoReflect.Descriptor instead.
+func (*KubernetesVersionSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{31}
+}
+
+func (x *KubernetesVersionSpec) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+// TalosVersionSpec represents an available Talos version.
+type TalosVersionSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
+ CompatibleKubernetesVersions []string `protobuf:"bytes,2,rep,name=compatible_kubernetes_versions,json=compatibleKubernetesVersions,proto3" json:"compatible_kubernetes_versions,omitempty"`
+}
+
+func (x *TalosVersionSpec) Reset() {
+ *x = TalosVersionSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[32]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TalosVersionSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TalosVersionSpec) ProtoMessage() {}
+
+func (x *TalosVersionSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[32]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TalosVersionSpec.ProtoReflect.Descriptor instead.
+func (*TalosVersionSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{32}
+}
+
+func (x *TalosVersionSpec) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *TalosVersionSpec) GetCompatibleKubernetesVersions() []string {
+ if x != nil {
+ return x.CompatibleKubernetesVersions
+ }
+ return nil
+}
+
+// InstallationMediaSpec resource describes a Talos installation media that can be generated by the image factory. It also describes the necessary parameters to be passed to the image factory.
+type InstallationMediaSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Name is the human readable name of the image.
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Architecture string `protobuf:"bytes,2,opt,name=architecture,proto3" json:"architecture,omitempty"`
+ Profile string `protobuf:"bytes,3,opt,name=profile,proto3" json:"profile,omitempty"`
+ ContentType string `protobuf:"bytes,6,opt,name=contentType,proto3" json:"contentType,omitempty"`
+ // SrcFilePrefix defines the src filename to download the image from.
+ SrcFilePrefix string `protobuf:"bytes,7,opt,name=src_file_prefix,json=srcFilePrefix,proto3" json:"src_file_prefix,omitempty"`
+ // DestFilePrefix defines the dest filename to download the image to.
+ DestFilePrefix string `protobuf:"bytes,8,opt,name=dest_file_prefix,json=destFilePrefix,proto3" json:"dest_file_prefix,omitempty"`
+ // Extension defines the dest filename extension.
+ Extension string `protobuf:"bytes,9,opt,name=extension,proto3" json:"extension,omitempty"`
+ // NoSecureBoot means that the installation media doesn't support SecureBoot generation.
+ NoSecureBoot bool `protobuf:"varint,11,opt,name=no_secure_boot,json=noSecureBoot,proto3" json:"no_secure_boot,omitempty"`
+}
+
+func (x *InstallationMediaSpec) Reset() {
+ *x = InstallationMediaSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[33]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *InstallationMediaSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*InstallationMediaSpec) ProtoMessage() {}
+
+func (x *InstallationMediaSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[33]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use InstallationMediaSpec.ProtoReflect.Descriptor instead.
+func (*InstallationMediaSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{33}
+}
+
+func (x *InstallationMediaSpec) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *InstallationMediaSpec) GetArchitecture() string {
+ if x != nil {
+ return x.Architecture
+ }
+ return ""
+}
+
+func (x *InstallationMediaSpec) GetProfile() string {
+ if x != nil {
+ return x.Profile
+ }
+ return ""
+}
+
+func (x *InstallationMediaSpec) GetContentType() string {
+ if x != nil {
+ return x.ContentType
+ }
+ return ""
+}
+
+func (x *InstallationMediaSpec) GetSrcFilePrefix() string {
+ if x != nil {
+ return x.SrcFilePrefix
+ }
+ return ""
+}
+
+func (x *InstallationMediaSpec) GetDestFilePrefix() string {
+ if x != nil {
+ return x.DestFilePrefix
+ }
+ return ""
+}
+
+func (x *InstallationMediaSpec) GetExtension() string {
+ if x != nil {
+ return x.Extension
+ }
+ return ""
+}
+
+func (x *InstallationMediaSpec) GetNoSecureBoot() bool {
+ if x != nil {
+ return x.NoSecureBoot
+ }
+ return false
+}
+
+// ConfigPatchSpec represents the machine config patch.
+type ConfigPatchSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Data string `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
+}
+
+func (x *ConfigPatchSpec) Reset() {
+ *x = ConfigPatchSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[34]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ConfigPatchSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ConfigPatchSpec) ProtoMessage() {}
+
+func (x *ConfigPatchSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[34]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ConfigPatchSpec.ProtoReflect.Descriptor instead.
+func (*ConfigPatchSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{34}
+}
+
+func (x *ConfigPatchSpec) GetData() string {
+ if x != nil {
+ return x.Data
+ }
+ return ""
+}
+
+// MachineSetSpec describes the cluster machine group.
+type MachineSetSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // UpdateStrategy is the update strategy of the machine set.
+ UpdateStrategy MachineSetSpec_UpdateStrategy `protobuf:"varint,1,opt,name=update_strategy,json=updateStrategy,proto3,enum=specs.MachineSetSpec_UpdateStrategy" json:"update_strategy,omitempty"`
+ // MachineClass is the machine class to pick machines from for the machine set.
+ MachineClass *MachineSetSpec_MachineClass `protobuf:"bytes,2,opt,name=machine_class,json=machineClass,proto3" json:"machine_class,omitempty"`
+ // BootstrapSpec defines the bootstrapping spec of the machine set.
+ // This field is immutable, only valid for the control plane machine set and used only once at the creation time.
+ // When set, the machine set won't be created from scratch, instead, it will be bootstrapped using the given spec.
+ BootstrapSpec *MachineSetSpec_BootstrapSpec `protobuf:"bytes,3,opt,name=bootstrap_spec,json=bootstrapSpec,proto3" json:"bootstrap_spec,omitempty"`
+ // DeleteStrategy defines the delete strategy of the machine set.
+ DeleteStrategy MachineSetSpec_UpdateStrategy `protobuf:"varint,4,opt,name=delete_strategy,json=deleteStrategy,proto3,enum=specs.MachineSetSpec_UpdateStrategy" json:"delete_strategy,omitempty"`
+ // UpdateStrategyConfig defines the update strategy configuration.
+ UpdateStrategyConfig *MachineSetSpec_UpdateStrategyConfig `protobuf:"bytes,5,opt,name=update_strategy_config,json=updateStrategyConfig,proto3" json:"update_strategy_config,omitempty"`
+ // DeleteStrategyConfig defines the delete strategy configuration.
+ DeleteStrategyConfig *MachineSetSpec_UpdateStrategyConfig `protobuf:"bytes,6,opt,name=delete_strategy_config,json=deleteStrategyConfig,proto3" json:"delete_strategy_config,omitempty"`
+}
+
+func (x *MachineSetSpec) Reset() {
+ *x = MachineSetSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[35]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineSetSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineSetSpec) ProtoMessage() {}
+
+func (x *MachineSetSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[35]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineSetSpec.ProtoReflect.Descriptor instead.
+func (*MachineSetSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{35}
+}
+
+func (x *MachineSetSpec) GetUpdateStrategy() MachineSetSpec_UpdateStrategy {
+ if x != nil {
+ return x.UpdateStrategy
+ }
+ return MachineSetSpec_Unset
+}
+
+func (x *MachineSetSpec) GetMachineClass() *MachineSetSpec_MachineClass {
+ if x != nil {
+ return x.MachineClass
+ }
+ return nil
+}
+
+func (x *MachineSetSpec) GetBootstrapSpec() *MachineSetSpec_BootstrapSpec {
+ if x != nil {
+ return x.BootstrapSpec
+ }
+ return nil
+}
+
+func (x *MachineSetSpec) GetDeleteStrategy() MachineSetSpec_UpdateStrategy {
+ if x != nil {
+ return x.DeleteStrategy
+ }
+ return MachineSetSpec_Unset
+}
+
+func (x *MachineSetSpec) GetUpdateStrategyConfig() *MachineSetSpec_UpdateStrategyConfig {
+ if x != nil {
+ return x.UpdateStrategyConfig
+ }
+ return nil
+}
+
+func (x *MachineSetSpec) GetDeleteStrategyConfig() *MachineSetSpec_UpdateStrategyConfig {
+ if x != nil {
+ return x.DeleteStrategyConfig
+ }
+ return nil
+}
+
+// TalosUpgradeStatusSpec contains the status of the Talos upgrade process.
+type TalosUpgradeStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Current upgrade phase.
+ Phase TalosUpgradeStatusSpec_Phase `protobuf:"varint,1,opt,name=phase,proto3,enum=specs.TalosUpgradeStatusSpec_Phase" json:"phase,omitempty"`
+ // If phase is Failed, this contains the error message.
+ Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
+ // If phase is Upgrading, this contains the current upgrade step.
+ Step string `protobuf:"bytes,3,opt,name=step,proto3" json:"step,omitempty"`
+ // If phase is Upgrading, this contains the current upgrade step progress.
+ Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"`
+ // Last successful upgrade version.
+ LastUpgradeVersion string `protobuf:"bytes,5,opt,name=last_upgrade_version,json=lastUpgradeVersion,proto3" json:"last_upgrade_version,omitempty"`
+ // Current version of the upgrade (if phase == Upgrading).
+ CurrentUpgradeVersion string `protobuf:"bytes,6,opt,name=current_upgrade_version,json=currentUpgradeVersion,proto3" json:"current_upgrade_version,omitempty"`
+ // List of versions available for upgrade.
+ UpgradeVersions []string `protobuf:"bytes,7,rep,name=upgrade_versions,json=upgradeVersions,proto3" json:"upgrade_versions,omitempty"`
+}
+
+func (x *TalosUpgradeStatusSpec) Reset() {
+ *x = TalosUpgradeStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[36]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TalosUpgradeStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TalosUpgradeStatusSpec) ProtoMessage() {}
+
+func (x *TalosUpgradeStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[36]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TalosUpgradeStatusSpec.ProtoReflect.Descriptor instead.
+func (*TalosUpgradeStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{36}
+}
+
+func (x *TalosUpgradeStatusSpec) GetPhase() TalosUpgradeStatusSpec_Phase {
+ if x != nil {
+ return x.Phase
+ }
+ return TalosUpgradeStatusSpec_Unknown
+}
+
+func (x *TalosUpgradeStatusSpec) GetError() string {
+ if x != nil {
+ return x.Error
+ }
+ return ""
+}
+
+func (x *TalosUpgradeStatusSpec) GetStep() string {
+ if x != nil {
+ return x.Step
+ }
+ return ""
+}
+
+func (x *TalosUpgradeStatusSpec) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
+
+func (x *TalosUpgradeStatusSpec) GetLastUpgradeVersion() string {
+ if x != nil {
+ return x.LastUpgradeVersion
+ }
+ return ""
+}
+
+func (x *TalosUpgradeStatusSpec) GetCurrentUpgradeVersion() string {
+ if x != nil {
+ return x.CurrentUpgradeVersion
+ }
+ return ""
+}
+
+func (x *TalosUpgradeStatusSpec) GetUpgradeVersions() []string {
+ if x != nil {
+ return x.UpgradeVersions
+ }
+ return nil
+}
+
+// MachineSetStatusSpec describes machine set status.
+type MachineSetStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Phase MachineSetPhase `protobuf:"varint,1,opt,name=phase,proto3,enum=specs.MachineSetPhase" json:"phase,omitempty"`
+ Ready bool `protobuf:"varint,2,opt,name=ready,proto3" json:"ready,omitempty"`
+ Error string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
+ Machines *Machines `protobuf:"bytes,4,opt,name=machines,proto3" json:"machines,omitempty"`
+ // config_hash is the combined hash of all cluster machines which are part of the machine set.
+ ConfigHash string `protobuf:"bytes,5,opt,name=config_hash,json=configHash,proto3" json:"config_hash,omitempty"`
+ // MachineClass is copied from the input MachineSet resource.
+ MachineClass *MachineSetSpec_MachineClass `protobuf:"bytes,6,opt,name=machine_class,json=machineClass,proto3" json:"machine_class,omitempty"`
+}
+
+func (x *MachineSetStatusSpec) Reset() {
+ *x = MachineSetStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[37]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineSetStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineSetStatusSpec) ProtoMessage() {}
+
+func (x *MachineSetStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[37]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineSetStatusSpec.ProtoReflect.Descriptor instead.
+func (*MachineSetStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{37}
+}
+
+func (x *MachineSetStatusSpec) GetPhase() MachineSetPhase {
+ if x != nil {
+ return x.Phase
+ }
+ return MachineSetPhase_Unknown
+}
+
+func (x *MachineSetStatusSpec) GetReady() bool {
+ if x != nil {
+ return x.Ready
+ }
+ return false
+}
+
+func (x *MachineSetStatusSpec) GetError() string {
+ if x != nil {
+ return x.Error
+ }
+ return ""
+}
+
+func (x *MachineSetStatusSpec) GetMachines() *Machines {
+ if x != nil {
+ return x.Machines
+ }
+ return nil
+}
+
+func (x *MachineSetStatusSpec) GetConfigHash() string {
+ if x != nil {
+ return x.ConfigHash
+ }
+ return ""
+}
+
+func (x *MachineSetStatusSpec) GetMachineClass() *MachineSetSpec_MachineClass {
+ if x != nil {
+ return x.MachineClass
+ }
+ return nil
+}
+
+// MachineSetNodeSpec is a binding between ClusterMachine and MachineSet.
+type MachineSetNodeSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *MachineSetNodeSpec) Reset() {
+ *x = MachineSetNodeSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[38]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineSetNodeSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineSetNodeSpec) ProtoMessage() {}
+
+func (x *MachineSetNodeSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[38]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineSetNodeSpec.ProtoReflect.Descriptor instead.
+func (*MachineSetNodeSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{38}
+}
+
+// MachineLabelsSpec is the resource that adds user defined labels to the MachineStatus.
+type MachineLabelsSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *MachineLabelsSpec) Reset() {
+ *x = MachineLabelsSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[39]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineLabelsSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineLabelsSpec) ProtoMessage() {}
+
+func (x *MachineLabelsSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[39]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineLabelsSpec.ProtoReflect.Descriptor instead.
+func (*MachineLabelsSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{39}
+}
+
+// MachineStatusSnapshotSpec describes latest known status of MachineStatus Talos resource.
+type MachineStatusSnapshotSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ MachineStatus *machine.MachineStatusEvent `protobuf:"bytes,1,opt,name=machine_status,json=machineStatus,proto3" json:"machine_status,omitempty"`
+}
+
+func (x *MachineStatusSnapshotSpec) Reset() {
+ *x = MachineStatusSnapshotSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[40]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineStatusSnapshotSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineStatusSnapshotSpec) ProtoMessage() {}
+
+func (x *MachineStatusSnapshotSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[40]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineStatusSnapshotSpec.ProtoReflect.Descriptor instead.
+func (*MachineStatusSnapshotSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{40}
+}
+
+func (x *MachineStatusSnapshotSpec) GetMachineStatus() *machine.MachineStatusEvent {
+ if x != nil {
+ return x.MachineStatus
+ }
+ return nil
+}
+
+// ControlPlaneStatusSpec contains the status of the MachineSets which manage control plane nodes.
+type ControlPlaneStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Conditions []*ControlPlaneStatusSpec_Condition `protobuf:"bytes,1,rep,name=conditions,proto3" json:"conditions,omitempty"`
+}
+
+func (x *ControlPlaneStatusSpec) Reset() {
+ *x = ControlPlaneStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[41]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ControlPlaneStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ControlPlaneStatusSpec) ProtoMessage() {}
+
+func (x *ControlPlaneStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[41]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ControlPlaneStatusSpec.ProtoReflect.Descriptor instead.
+func (*ControlPlaneStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{41}
+}
+
+func (x *ControlPlaneStatusSpec) GetConditions() []*ControlPlaneStatusSpec_Condition {
+ if x != nil {
+ return x.Conditions
+ }
+ return nil
+}
+
+// ClusterEndpointSpec contains a list of SideroLink (management) control plane endpoints.
+type ClusterEndpointSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // List of SideroLink addresses for control plane nodes.
+ ManagementAddresses []string `protobuf:"bytes,1,rep,name=management_addresses,json=managementAddresses,proto3" json:"management_addresses,omitempty"`
+}
+
+func (x *ClusterEndpointSpec) Reset() {
+ *x = ClusterEndpointSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[42]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterEndpointSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterEndpointSpec) ProtoMessage() {}
+
+func (x *ClusterEndpointSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[42]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterEndpointSpec.ProtoReflect.Descriptor instead.
+func (*ClusterEndpointSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{42}
+}
+
+func (x *ClusterEndpointSpec) GetManagementAddresses() []string {
+ if x != nil {
+ return x.ManagementAddresses
+ }
+ return nil
+}
+
+// KubernetesStatusSpec contains the status of the Kubernetes critical resources in the cluster.
+type KubernetesStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // status of each node, sorted by nodename
+ Nodes []*KubernetesStatusSpec_NodeStatus `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"`
+ // status of each static pod on each node, sorted by nodename, then by pod's app
+ StaticPods []*KubernetesStatusSpec_NodeStaticPods `protobuf:"bytes,2,rep,name=static_pods,json=staticPods,proto3" json:"static_pods,omitempty"`
+}
+
+func (x *KubernetesStatusSpec) Reset() {
+ *x = KubernetesStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[43]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubernetesStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubernetesStatusSpec) ProtoMessage() {}
+
+func (x *KubernetesStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[43]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubernetesStatusSpec.ProtoReflect.Descriptor instead.
+func (*KubernetesStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{43}
+}
+
+func (x *KubernetesStatusSpec) GetNodes() []*KubernetesStatusSpec_NodeStatus {
+ if x != nil {
+ return x.Nodes
+ }
+ return nil
+}
+
+func (x *KubernetesStatusSpec) GetStaticPods() []*KubernetesStatusSpec_NodeStaticPods {
+ if x != nil {
+ return x.StaticPods
+ }
+ return nil
+}
+
+// KubernetesUpgradeStatus spec contains the status of the Kubernetes upgrade process.
+type KubernetesUpgradeStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Current upgrade phase.
+ Phase KubernetesUpgradeStatusSpec_Phase `protobuf:"varint,1,opt,name=phase,proto3,enum=specs.KubernetesUpgradeStatusSpec_Phase" json:"phase,omitempty"`
+ // If phase is Failed, this contains the error message.
+ Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
+ // If phase is Upgrading, this contains the current upgrade step.
+ Step string `protobuf:"bytes,3,opt,name=step,proto3" json:"step,omitempty"`
+ // If phase is Upgrading, this contains the current upgrade step progress.
+ Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"`
+ // Last successful upgrade version.
+ LastUpgradeVersion string `protobuf:"bytes,5,opt,name=last_upgrade_version,json=lastUpgradeVersion,proto3" json:"last_upgrade_version,omitempty"`
+ // Current version of the upgrade (if phase == Upgrading).
+ CurrentUpgradeVersion string `protobuf:"bytes,7,opt,name=current_upgrade_version,json=currentUpgradeVersion,proto3" json:"current_upgrade_version,omitempty"`
+ // List of versions available for upgrade.
+ UpgradeVersions []string `protobuf:"bytes,6,rep,name=upgrade_versions,json=upgradeVersions,proto3" json:"upgrade_versions,omitempty"`
+}
+
+func (x *KubernetesUpgradeStatusSpec) Reset() {
+ *x = KubernetesUpgradeStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[44]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubernetesUpgradeStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubernetesUpgradeStatusSpec) ProtoMessage() {}
+
+func (x *KubernetesUpgradeStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[44]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubernetesUpgradeStatusSpec.ProtoReflect.Descriptor instead.
+func (*KubernetesUpgradeStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{44}
+}
+
+func (x *KubernetesUpgradeStatusSpec) GetPhase() KubernetesUpgradeStatusSpec_Phase {
+ if x != nil {
+ return x.Phase
+ }
+ return KubernetesUpgradeStatusSpec_Unknown
+}
+
+func (x *KubernetesUpgradeStatusSpec) GetError() string {
+ if x != nil {
+ return x.Error
+ }
+ return ""
+}
+
+func (x *KubernetesUpgradeStatusSpec) GetStep() string {
+ if x != nil {
+ return x.Step
+ }
+ return ""
+}
+
+func (x *KubernetesUpgradeStatusSpec) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
+
+func (x *KubernetesUpgradeStatusSpec) GetLastUpgradeVersion() string {
+ if x != nil {
+ return x.LastUpgradeVersion
+ }
+ return ""
+}
+
+func (x *KubernetesUpgradeStatusSpec) GetCurrentUpgradeVersion() string {
+ if x != nil {
+ return x.CurrentUpgradeVersion
+ }
+ return ""
+}
+
+func (x *KubernetesUpgradeStatusSpec) GetUpgradeVersions() []string {
+ if x != nil {
+ return x.UpgradeVersions
+ }
+ return nil
+}
+
+// KubernetesUpgradeManifestStatus contains status of Kubernetes upgrade manifest sync.
+type KubernetesUpgradeManifestStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Number of manifests out of sync.
+ OutOfSync int32 `protobuf:"varint,1,opt,name=out_of_sync,json=outOfSync,proto3" json:"out_of_sync,omitempty"`
+ // Last fatal error encountered (which prevented the sync).
+ LastFatalError string `protobuf:"bytes,2,opt,name=last_fatal_error,json=lastFatalError,proto3" json:"last_fatal_error,omitempty"`
+}
+
+func (x *KubernetesUpgradeManifestStatusSpec) Reset() {
+ *x = KubernetesUpgradeManifestStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[45]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubernetesUpgradeManifestStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubernetesUpgradeManifestStatusSpec) ProtoMessage() {}
+
+func (x *KubernetesUpgradeManifestStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[45]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubernetesUpgradeManifestStatusSpec.ProtoReflect.Descriptor instead.
+func (*KubernetesUpgradeManifestStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{45}
+}
+
+func (x *KubernetesUpgradeManifestStatusSpec) GetOutOfSync() int32 {
+ if x != nil {
+ return x.OutOfSync
+ }
+ return 0
+}
+
+func (x *KubernetesUpgradeManifestStatusSpec) GetLastFatalError() string {
+ if x != nil {
+ return x.LastFatalError
+ }
+ return ""
+}
+
+// DestroyStatusSpec describes the state of resource destroy.
+type DestroyStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Phase describes the current destroy phase.
+ Phase string `protobuf:"bytes,1,opt,name=phase,proto3" json:"phase,omitempty"`
+}
+
+func (x *DestroyStatusSpec) Reset() {
+ *x = DestroyStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[46]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DestroyStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DestroyStatusSpec) ProtoMessage() {}
+
+func (x *DestroyStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[46]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DestroyStatusSpec.ProtoReflect.Descriptor instead.
+func (*DestroyStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{46}
+}
+
+func (x *DestroyStatusSpec) GetPhase() string {
+ if x != nil {
+ return x.Phase
+ }
+ return ""
+}
+
+// OngoingTaskSpec describes any ongoing tasks.
+type OngoingTaskSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Title of the ongoing task.
+ Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
+ // Details contains the detailed task description.
+ //
+ // Types that are assignable to Details:
+ //
+ // *OngoingTaskSpec_TalosUpgrade
+ // *OngoingTaskSpec_KubernetesUpgrade
+ // *OngoingTaskSpec_Destroy
+ Details isOngoingTaskSpec_Details `protobuf_oneof:"details"`
+}
+
+func (x *OngoingTaskSpec) Reset() {
+ *x = OngoingTaskSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[47]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *OngoingTaskSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OngoingTaskSpec) ProtoMessage() {}
+
+func (x *OngoingTaskSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[47]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use OngoingTaskSpec.ProtoReflect.Descriptor instead.
+func (*OngoingTaskSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{47}
+}
+
+func (x *OngoingTaskSpec) GetTitle() string {
+ if x != nil {
+ return x.Title
+ }
+ return ""
+}
+
+func (m *OngoingTaskSpec) GetDetails() isOngoingTaskSpec_Details {
+ if m != nil {
+ return m.Details
+ }
+ return nil
+}
+
+func (x *OngoingTaskSpec) GetTalosUpgrade() *TalosUpgradeStatusSpec {
+ if x, ok := x.GetDetails().(*OngoingTaskSpec_TalosUpgrade); ok {
+ return x.TalosUpgrade
+ }
+ return nil
+}
+
+func (x *OngoingTaskSpec) GetKubernetesUpgrade() *KubernetesUpgradeStatusSpec {
+ if x, ok := x.GetDetails().(*OngoingTaskSpec_KubernetesUpgrade); ok {
+ return x.KubernetesUpgrade
+ }
+ return nil
+}
+
+func (x *OngoingTaskSpec) GetDestroy() *DestroyStatusSpec {
+ if x, ok := x.GetDetails().(*OngoingTaskSpec_Destroy); ok {
+ return x.Destroy
+ }
+ return nil
+}
+
+type isOngoingTaskSpec_Details interface {
+ isOngoingTaskSpec_Details()
+}
+
+type OngoingTaskSpec_TalosUpgrade struct {
+ TalosUpgrade *TalosUpgradeStatusSpec `protobuf:"bytes,2,opt,name=talos_upgrade,json=talosUpgrade,proto3,oneof"`
+}
+
+type OngoingTaskSpec_KubernetesUpgrade struct {
+ KubernetesUpgrade *KubernetesUpgradeStatusSpec `protobuf:"bytes,3,opt,name=kubernetes_upgrade,json=kubernetesUpgrade,proto3,oneof"`
+}
+
+type OngoingTaskSpec_Destroy struct {
+ Destroy *DestroyStatusSpec `protobuf:"bytes,4,opt,name=destroy,proto3,oneof"`
+}
+
+func (*OngoingTaskSpec_TalosUpgrade) isOngoingTaskSpec_Details() {}
+
+func (*OngoingTaskSpec_KubernetesUpgrade) isOngoingTaskSpec_Details() {}
+
+func (*OngoingTaskSpec_Destroy) isOngoingTaskSpec_Details() {}
+
+// ClusterMachineEncryptionKeySpec keeps generated encryption key for the machine disk encryption.
+type ClusterMachineEncryptionKeySpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Data stores generated encryption key for the machine.
+ Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
+}
+
+func (x *ClusterMachineEncryptionKeySpec) Reset() {
+ *x = ClusterMachineEncryptionKeySpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[48]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterMachineEncryptionKeySpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterMachineEncryptionKeySpec) ProtoMessage() {}
+
+func (x *ClusterMachineEncryptionKeySpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[48]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterMachineEncryptionKeySpec.ProtoReflect.Descriptor instead.
+func (*ClusterMachineEncryptionKeySpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{48}
+}
+
+func (x *ClusterMachineEncryptionKeySpec) GetData() []byte {
+ if x != nil {
+ return x.Data
+ }
+ return nil
+}
+
+// ExposedServiceSpec describes a Kubernetes service exposed through Omni from a workload cluster.
+type ExposedServiceSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Port is the host port the service is exposed on.
+ Port uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
+ // Label is the human-readable label of the service to be displayed on Omni Web.
+ Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
+ // IconBase64 is the icon of the service to be displayed on Omni Web.
+ IconBase64 string `protobuf:"bytes,3,opt,name=icon_base64,json=iconBase64,proto3" json:"icon_base64,omitempty"`
+}
+
+func (x *ExposedServiceSpec) Reset() {
+ *x = ExposedServiceSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[49]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ExposedServiceSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExposedServiceSpec) ProtoMessage() {}
+
+func (x *ExposedServiceSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[49]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ExposedServiceSpec.ProtoReflect.Descriptor instead.
+func (*ExposedServiceSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{49}
+}
+
+func (x *ExposedServiceSpec) GetPort() uint32 {
+ if x != nil {
+ return x.Port
+ }
+ return 0
+}
+
+func (x *ExposedServiceSpec) GetLabel() string {
+ if x != nil {
+ return x.Label
+ }
+ return ""
+}
+
+func (x *ExposedServiceSpec) GetIconBase64() string {
+ if x != nil {
+ return x.IconBase64
+ }
+ return ""
+}
+
+type FeaturesConfigSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // EnableWorkloadProxying enables workload proxying feature.
+ EnableWorkloadProxying bool `protobuf:"varint,1,opt,name=enable_workload_proxying,json=enableWorkloadProxying,proto3" json:"enable_workload_proxying,omitempty"`
+ // EtcdBackupSettings represents omni etcd backup settings.
+ EtcdBackupSettings *EtcdBackupSettings `protobuf:"bytes,2,opt,name=etcd_backup_settings,json=etcdBackupSettings,proto3" json:"etcd_backup_settings,omitempty"`
+}
+
+func (x *FeaturesConfigSpec) Reset() {
+ *x = FeaturesConfigSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[50]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *FeaturesConfigSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FeaturesConfigSpec) ProtoMessage() {}
+
+func (x *FeaturesConfigSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[50]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use FeaturesConfigSpec.ProtoReflect.Descriptor instead.
+func (*FeaturesConfigSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{50}
+}
+
+func (x *FeaturesConfigSpec) GetEnableWorkloadProxying() bool {
+ if x != nil {
+ return x.EnableWorkloadProxying
+ }
+ return false
+}
+
+func (x *FeaturesConfigSpec) GetEtcdBackupSettings() *EtcdBackupSettings {
+ if x != nil {
+ return x.EtcdBackupSettings
+ }
+ return nil
+}
+
+type EtcdBackupSettings struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // TickInterval is the interval between checking for backups in controller.
+ TickInterval *durationpb.Duration `protobuf:"bytes,1,opt,name=tick_interval,json=tickInterval,proto3" json:"tick_interval,omitempty"`
+ // MinInterval is the minimum interval between backups.
+ MinInterval *durationpb.Duration `protobuf:"bytes,2,opt,name=min_interval,json=minInterval,proto3" json:"min_interval,omitempty"`
+ // MaxInterval is the maximum interval between backups.
+ MaxInterval *durationpb.Duration `protobuf:"bytes,3,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"`
+}
+
+func (x *EtcdBackupSettings) Reset() {
+ *x = EtcdBackupSettings{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[51]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EtcdBackupSettings) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EtcdBackupSettings) ProtoMessage() {}
+
+func (x *EtcdBackupSettings) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[51]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EtcdBackupSettings.ProtoReflect.Descriptor instead.
+func (*EtcdBackupSettings) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{51}
+}
+
+func (x *EtcdBackupSettings) GetTickInterval() *durationpb.Duration {
+ if x != nil {
+ return x.TickInterval
+ }
+ return nil
+}
+
+func (x *EtcdBackupSettings) GetMinInterval() *durationpb.Duration {
+ if x != nil {
+ return x.MinInterval
+ }
+ return nil
+}
+
+func (x *EtcdBackupSettings) GetMaxInterval() *durationpb.Duration {
+ if x != nil {
+ return x.MaxInterval
+ }
+ return nil
+}
+
+// MachineClassSpec describes an Omni MachineClass resource spec.
+type MachineClassSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // MatchLabels is the list of labels to match the machine to make it part of the machine class.
+ MatchLabels []string `protobuf:"bytes,1,rep,name=match_labels,json=matchLabels,proto3" json:"match_labels,omitempty"`
+}
+
+func (x *MachineClassSpec) Reset() {
+ *x = MachineClassSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[52]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineClassSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineClassSpec) ProtoMessage() {}
+
+func (x *MachineClassSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[52]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineClassSpec.ProtoReflect.Descriptor instead.
+func (*MachineClassSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{52}
+}
+
+func (x *MachineClassSpec) GetMatchLabels() []string {
+ if x != nil {
+ return x.MatchLabels
+ }
+ return nil
+}
+
+// MachineConfigGenOptionsSpec describes machine related config generation inputs.
+type MachineConfigGenOptionsSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ InstallDisk string `protobuf:"bytes,1,opt,name=install_disk,json=installDisk,proto3" json:"install_disk,omitempty"`
+}
+
+func (x *MachineConfigGenOptionsSpec) Reset() {
+ *x = MachineConfigGenOptionsSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[53]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineConfigGenOptionsSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineConfigGenOptionsSpec) ProtoMessage() {}
+
+func (x *MachineConfigGenOptionsSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[53]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineConfigGenOptionsSpec.ProtoReflect.Descriptor instead.
+func (*MachineConfigGenOptionsSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{53}
+}
+
+func (x *MachineConfigGenOptionsSpec) GetInstallDisk() string {
+ if x != nil {
+ return x.InstallDisk
+ }
+ return ""
+}
+
+// EtcdAuditResult is updated when the etcd audit removes a member.
+//
+// This resource is used to re-trigger the controlplane status checks when etcd audit removes a member.
+type EtcdAuditResultSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // EtcdMemberIds contains the list of ids of the members that were last removed.
+ // The list is always sorted.
+ EtcdMemberIds []uint64 `protobuf:"varint,1,rep,packed,name=etcd_member_ids,json=etcdMemberIds,proto3" json:"etcd_member_ids,omitempty"`
+}
+
+func (x *EtcdAuditResultSpec) Reset() {
+ *x = EtcdAuditResultSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[54]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EtcdAuditResultSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EtcdAuditResultSpec) ProtoMessage() {}
+
+func (x *EtcdAuditResultSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[54]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EtcdAuditResultSpec.ProtoReflect.Descriptor instead.
+func (*EtcdAuditResultSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{54}
+}
+
+func (x *EtcdAuditResultSpec) GetEtcdMemberIds() []uint64 {
+ if x != nil {
+ return x.EtcdMemberIds
+ }
+ return nil
+}
+
+// KubeconfigSpec describes a Kubernetes client configuraiton for a cluster.
+type KubeconfigSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Marshalled kubeconfig.
+ Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
+}
+
+func (x *KubeconfigSpec) Reset() {
+ *x = KubeconfigSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[55]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubeconfigSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubeconfigSpec) ProtoMessage() {}
+
+func (x *KubeconfigSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[55]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubeconfigSpec.ProtoReflect.Descriptor instead.
+func (*KubeconfigSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{55}
+}
+
+func (x *KubeconfigSpec) GetData() []byte {
+ if x != nil {
+ return x.Data
+ }
+ return nil
+}
+
+// KubernetesUsageSpec represents kubernetes resource usage for a cluster.
+type KubernetesUsageSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Cpu *KubernetesUsageSpec_Quantity `protobuf:"bytes,1,opt,name=cpu,proto3" json:"cpu,omitempty"`
+ Mem *KubernetesUsageSpec_Quantity `protobuf:"bytes,2,opt,name=mem,proto3" json:"mem,omitempty"`
+ Storage *KubernetesUsageSpec_Quantity `protobuf:"bytes,3,opt,name=storage,proto3" json:"storage,omitempty"`
+ Pods *KubernetesUsageSpec_Pod `protobuf:"bytes,4,opt,name=pods,proto3" json:"pods,omitempty"`
+}
+
+func (x *KubernetesUsageSpec) Reset() {
+ *x = KubernetesUsageSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[56]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubernetesUsageSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubernetesUsageSpec) ProtoMessage() {}
+
+func (x *KubernetesUsageSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[56]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubernetesUsageSpec.ProtoReflect.Descriptor instead.
+func (*KubernetesUsageSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{56}
+}
+
+func (x *KubernetesUsageSpec) GetCpu() *KubernetesUsageSpec_Quantity {
+ if x != nil {
+ return x.Cpu
+ }
+ return nil
+}
+
+func (x *KubernetesUsageSpec) GetMem() *KubernetesUsageSpec_Quantity {
+ if x != nil {
+ return x.Mem
+ }
+ return nil
+}
+
+func (x *KubernetesUsageSpec) GetStorage() *KubernetesUsageSpec_Quantity {
+ if x != nil {
+ return x.Storage
+ }
+ return nil
+}
+
+func (x *KubernetesUsageSpec) GetPods() *KubernetesUsageSpec_Pod {
+ if x != nil {
+ return x.Pods
+ }
+ return nil
+}
+
+// ImagePullRequestSpec describes an Omni ImagePullRequest resource spec.
+type ImagePullRequestSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // NodeImageList are the images to be pulled into the node.
+ NodeImageList []*ImagePullRequestSpec_NodeImageList `protobuf:"bytes,1,rep,name=node_image_list,json=nodeImageList,proto3" json:"node_image_list,omitempty"`
+}
+
+func (x *ImagePullRequestSpec) Reset() {
+ *x = ImagePullRequestSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[57]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ImagePullRequestSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImagePullRequestSpec) ProtoMessage() {}
+
+func (x *ImagePullRequestSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[57]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImagePullRequestSpec.ProtoReflect.Descriptor instead.
+func (*ImagePullRequestSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{57}
+}
+
+func (x *ImagePullRequestSpec) GetNodeImageList() []*ImagePullRequestSpec_NodeImageList {
+ if x != nil {
+ return x.NodeImageList
+ }
+ return nil
+}
+
+// ImagePullStatusSpec describes an Omni ImagePullStatus resource spec.
+type ImagePullStatusSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ LastProcessedNode string `protobuf:"bytes,1,opt,name=last_processed_node,json=lastProcessedNode,proto3" json:"last_processed_node,omitempty"`
+ LastProcessedImage string `protobuf:"bytes,2,opt,name=last_processed_image,json=lastProcessedImage,proto3" json:"last_processed_image,omitempty"`
+ LastProcessedError string `protobuf:"bytes,3,opt,name=last_processed_error,json=lastProcessedError,proto3" json:"last_processed_error,omitempty"`
+ ProcessedCount uint32 `protobuf:"varint,4,opt,name=processed_count,json=processedCount,proto3" json:"processed_count,omitempty"`
+ TotalCount uint32 `protobuf:"varint,5,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"`
+ // RequestVersion is the version of the ImagePullRequest that this status is for.
+ RequestVersion string `protobuf:"bytes,6,opt,name=request_version,json=requestVersion,proto3" json:"request_version,omitempty"`
+}
+
+func (x *ImagePullStatusSpec) Reset() {
+ *x = ImagePullStatusSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[58]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ImagePullStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImagePullStatusSpec) ProtoMessage() {}
+
+func (x *ImagePullStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[58]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImagePullStatusSpec.ProtoReflect.Descriptor instead.
+func (*ImagePullStatusSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{58}
+}
+
+func (x *ImagePullStatusSpec) GetLastProcessedNode() string {
+ if x != nil {
+ return x.LastProcessedNode
+ }
+ return ""
+}
+
+func (x *ImagePullStatusSpec) GetLastProcessedImage() string {
+ if x != nil {
+ return x.LastProcessedImage
+ }
+ return ""
+}
+
+func (x *ImagePullStatusSpec) GetLastProcessedError() string {
+ if x != nil {
+ return x.LastProcessedError
+ }
+ return ""
+}
+
+func (x *ImagePullStatusSpec) GetProcessedCount() uint32 {
+ if x != nil {
+ return x.ProcessedCount
+ }
+ return 0
+}
+
+func (x *ImagePullStatusSpec) GetTotalCount() uint32 {
+ if x != nil {
+ return x.TotalCount
+ }
+ return 0
+}
+
+func (x *ImagePullStatusSpec) GetRequestVersion() string {
+ if x != nil {
+ return x.RequestVersion
+ }
+ return ""
+}
+
+// SchematicSpec keeps all schematics generated by Omni.
+// For each schematic it keeps information about the list of extensions.
+type SchematicSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Extensions []string `protobuf:"bytes,1,rep,name=extensions,proto3" json:"extensions,omitempty"`
+}
+
+func (x *SchematicSpec) Reset() {
+ *x = SchematicSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[59]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SchematicSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchematicSpec) ProtoMessage() {}
+
+func (x *SchematicSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[59]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchematicSpec.ProtoReflect.Descriptor instead.
+func (*SchematicSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{59}
+}
+
+func (x *SchematicSpec) GetExtensions() []string {
+ if x != nil {
+ return x.Extensions
+ }
+ return nil
+}
+
+// TalosExtensionsSpec represents all available extensions for a particular Talos version.
+type TalosExtensionsSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*TalosExtensionsSpec_Info `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *TalosExtensionsSpec) Reset() {
+ *x = TalosExtensionsSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[60]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TalosExtensionsSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TalosExtensionsSpec) ProtoMessage() {}
+
+func (x *TalosExtensionsSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[60]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TalosExtensionsSpec.ProtoReflect.Descriptor instead.
+func (*TalosExtensionsSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{60}
+}
+
+func (x *TalosExtensionsSpec) GetItems() []*TalosExtensionsSpec_Info {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+// SchematicConfigurationSpec is the desired Image Factory schematic for a machine, machine set or a cluster.
+type SchematicConfigurationSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ SchematicId string `protobuf:"bytes,1,opt,name=schematic_id,json=schematicId,proto3" json:"schematic_id,omitempty"`
+ Target SchematicConfigurationSpec_Target `protobuf:"varint,2,opt,name=target,proto3,enum=specs.SchematicConfigurationSpec_Target" json:"target,omitempty"`
+}
+
+func (x *SchematicConfigurationSpec) Reset() {
+ *x = SchematicConfigurationSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[61]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SchematicConfigurationSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchematicConfigurationSpec) ProtoMessage() {}
+
+func (x *SchematicConfigurationSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[61]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchematicConfigurationSpec.ProtoReflect.Descriptor instead.
+func (*SchematicConfigurationSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{61}
+}
+
+func (x *SchematicConfigurationSpec) GetSchematicId() string {
+ if x != nil {
+ return x.SchematicId
+ }
+ return ""
+}
+
+func (x *SchematicConfigurationSpec) GetTarget() SchematicConfigurationSpec_Target {
+ if x != nil {
+ return x.Target
+ }
+ return SchematicConfigurationSpec_Unknown
+}
+
+// HardwareStatus describes machine hardware status.
+type MachineStatusSpec_HardwareStatus struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // CPU information.
+ Processors []*MachineStatusSpec_HardwareStatus_Processor `protobuf:"bytes,1,rep,name=processors,proto3" json:"processors,omitempty"`
+ // Memory information.
+ MemoryModules []*MachineStatusSpec_HardwareStatus_MemoryModule `protobuf:"bytes,2,rep,name=memory_modules,json=memoryModules,proto3" json:"memory_modules,omitempty"`
+ // Blockdevice information.
+ Blockdevices []*MachineStatusSpec_HardwareStatus_BlockDevice `protobuf:"bytes,3,rep,name=blockdevices,proto3" json:"blockdevices,omitempty"`
+ // Machine architecture.
+ Arch string `protobuf:"bytes,4,opt,name=arch,proto3" json:"arch,omitempty"`
+}
+
+func (x *MachineStatusSpec_HardwareStatus) Reset() {
+ *x = MachineStatusSpec_HardwareStatus{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[62]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineStatusSpec_HardwareStatus) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineStatusSpec_HardwareStatus) ProtoMessage() {}
+
+func (x *MachineStatusSpec_HardwareStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[62]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineStatusSpec_HardwareStatus.ProtoReflect.Descriptor instead.
+func (*MachineStatusSpec_HardwareStatus) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{1, 0}
+}
+
+func (x *MachineStatusSpec_HardwareStatus) GetProcessors() []*MachineStatusSpec_HardwareStatus_Processor {
+ if x != nil {
+ return x.Processors
+ }
+ return nil
+}
+
+func (x *MachineStatusSpec_HardwareStatus) GetMemoryModules() []*MachineStatusSpec_HardwareStatus_MemoryModule {
+ if x != nil {
+ return x.MemoryModules
+ }
+ return nil
+}
+
+func (x *MachineStatusSpec_HardwareStatus) GetBlockdevices() []*MachineStatusSpec_HardwareStatus_BlockDevice {
+ if x != nil {
+ return x.Blockdevices
+ }
+ return nil
+}
+
+func (x *MachineStatusSpec_HardwareStatus) GetArch() string {
+ if x != nil {
+ return x.Arch
+ }
+ return ""
+}
+
+// NetworkStatus describes the status of a machine network .
+type MachineStatusSpec_NetworkStatus struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Current machine hostname.
+ Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
+ // Current machine domainname.
+ Domainname string `protobuf:"bytes,2,opt,name=domainname,proto3" json:"domainname,omitempty"`
+ // List of machine IPs.
+ Addresses []string `protobuf:"bytes,3,rep,name=addresses,proto3" json:"addresses,omitempty"`
+ // List of default gateway IPs.
+ DefaultGateways []string `protobuf:"bytes,4,rep,name=default_gateways,json=defaultGateways,proto3" json:"default_gateways,omitempty"`
+ // List of physical network interfaces.
+ NetworkLinks []*MachineStatusSpec_NetworkStatus_NetworkLinkStatus `protobuf:"bytes,5,rep,name=network_links,json=networkLinks,proto3" json:"network_links,omitempty"`
+}
+
+func (x *MachineStatusSpec_NetworkStatus) Reset() {
+ *x = MachineStatusSpec_NetworkStatus{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[63]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineStatusSpec_NetworkStatus) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineStatusSpec_NetworkStatus) ProtoMessage() {}
+
+func (x *MachineStatusSpec_NetworkStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[63]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineStatusSpec_NetworkStatus.ProtoReflect.Descriptor instead.
+func (*MachineStatusSpec_NetworkStatus) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{1, 1}
+}
+
+func (x *MachineStatusSpec_NetworkStatus) GetHostname() string {
+ if x != nil {
+ return x.Hostname
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_NetworkStatus) GetDomainname() string {
+ if x != nil {
+ return x.Domainname
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_NetworkStatus) GetAddresses() []string {
+ if x != nil {
+ return x.Addresses
+ }
+ return nil
+}
+
+func (x *MachineStatusSpec_NetworkStatus) GetDefaultGateways() []string {
+ if x != nil {
+ return x.DefaultGateways
+ }
+ return nil
+}
+
+func (x *MachineStatusSpec_NetworkStatus) GetNetworkLinks() []*MachineStatusSpec_NetworkStatus_NetworkLinkStatus {
+ if x != nil {
+ return x.NetworkLinks
+ }
+ return nil
+}
+
+// PlatformMetadata describes platform-specific information.
+type MachineStatusSpec_PlatformMetadata struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Platform is the name of the platform (e.g. `aws`, `gcp`, `azure`).
+ Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"`
+ // Hostname is the hostname of the machine.
+ Hostname string `protobuf:"bytes,2,opt,name=hostname,proto3" json:"hostname,omitempty"`
+ // Region (in the cloud).
+ Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"`
+ // Availability zone (in the cloud).
+ Zone string `protobuf:"bytes,4,opt,name=zone,proto3" json:"zone,omitempty"`
+ // Instance type (in the cloud).
+ InstanceType string `protobuf:"bytes,5,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"`
+ // Instance ID (in the cloud).
+ InstanceId string `protobuf:"bytes,6,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+ // Provider ID (for the Node resource).
+ ProviderId string `protobuf:"bytes,7,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"`
+ // Spot instance flag.
+ Spot bool `protobuf:"varint,8,opt,name=spot,proto3" json:"spot,omitempty"`
+}
+
+func (x *MachineStatusSpec_PlatformMetadata) Reset() {
+ *x = MachineStatusSpec_PlatformMetadata{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[64]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineStatusSpec_PlatformMetadata) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineStatusSpec_PlatformMetadata) ProtoMessage() {}
+
+func (x *MachineStatusSpec_PlatformMetadata) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[64]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineStatusSpec_PlatformMetadata.ProtoReflect.Descriptor instead.
+func (*MachineStatusSpec_PlatformMetadata) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{1, 2}
+}
+
+func (x *MachineStatusSpec_PlatformMetadata) GetPlatform() string {
+ if x != nil {
+ return x.Platform
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_PlatformMetadata) GetHostname() string {
+ if x != nil {
+ return x.Hostname
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_PlatformMetadata) GetRegion() string {
+ if x != nil {
+ return x.Region
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_PlatformMetadata) GetZone() string {
+ if x != nil {
+ return x.Zone
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_PlatformMetadata) GetInstanceType() string {
+ if x != nil {
+ return x.InstanceType
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_PlatformMetadata) GetInstanceId() string {
+ if x != nil {
+ return x.InstanceId
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_PlatformMetadata) GetProviderId() string {
+ if x != nil {
+ return x.ProviderId
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_PlatformMetadata) GetSpot() bool {
+ if x != nil {
+ return x.Spot
+ }
+ return false
+}
+
+type MachineStatusSpec_Schematic struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Id is the image factory schematic id used for the image generation.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Invalid marks the machine as having extensions installed bypassing image factory.
+ // Which makes it impossible to detect schematic id and manage the image generation
+ // using image factory.
+ Invalid bool `protobuf:"varint,2,opt,name=invalid,proto3" json:"invalid,omitempty"`
+}
+
+func (x *MachineStatusSpec_Schematic) Reset() {
+ *x = MachineStatusSpec_Schematic{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[65]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineStatusSpec_Schematic) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineStatusSpec_Schematic) ProtoMessage() {}
+
+func (x *MachineStatusSpec_Schematic) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[65]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineStatusSpec_Schematic.ProtoReflect.Descriptor instead.
+func (*MachineStatusSpec_Schematic) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{1, 3}
+}
+
+func (x *MachineStatusSpec_Schematic) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_Schematic) GetInvalid() bool {
+ if x != nil {
+ return x.Invalid
+ }
+ return false
+}
+
+// Processor describes machine CPU.
+type MachineStatusSpec_HardwareStatus_Processor struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Number of cores.
+ CoreCount uint32 `protobuf:"varint,1,opt,name=core_count,json=coreCount,proto3" json:"core_count,omitempty"`
+ // Number of threads.
+ ThreadCount uint32 `protobuf:"varint,2,opt,name=thread_count,json=threadCount,proto3" json:"thread_count,omitempty"`
+ // CPU frequency in MHz.
+ Frequency uint32 `protobuf:"varint,3,opt,name=frequency,proto3" json:"frequency,omitempty"`
+ // CPU manufacturer and model.
+ Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
+ // CPU manufacturer.
+ Manufacturer string `protobuf:"bytes,5,opt,name=manufacturer,proto3" json:"manufacturer,omitempty"`
+}
+
+func (x *MachineStatusSpec_HardwareStatus_Processor) Reset() {
+ *x = MachineStatusSpec_HardwareStatus_Processor{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[67]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineStatusSpec_HardwareStatus_Processor) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineStatusSpec_HardwareStatus_Processor) ProtoMessage() {}
+
+func (x *MachineStatusSpec_HardwareStatus_Processor) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[67]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineStatusSpec_HardwareStatus_Processor.ProtoReflect.Descriptor instead.
+func (*MachineStatusSpec_HardwareStatus_Processor) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{1, 0, 0}
+}
+
+func (x *MachineStatusSpec_HardwareStatus_Processor) GetCoreCount() uint32 {
+ if x != nil {
+ return x.CoreCount
+ }
+ return 0
+}
+
+func (x *MachineStatusSpec_HardwareStatus_Processor) GetThreadCount() uint32 {
+ if x != nil {
+ return x.ThreadCount
+ }
+ return 0
+}
+
+func (x *MachineStatusSpec_HardwareStatus_Processor) GetFrequency() uint32 {
+ if x != nil {
+ return x.Frequency
+ }
+ return 0
+}
+
+func (x *MachineStatusSpec_HardwareStatus_Processor) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_HardwareStatus_Processor) GetManufacturer() string {
+ if x != nil {
+ return x.Manufacturer
+ }
+ return ""
+}
+
+// MemoryModule describes machine memory.
+type MachineStatusSpec_HardwareStatus_MemoryModule struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Size of memory in MB.
+ SizeMb uint32 `protobuf:"varint,1,opt,name=size_mb,json=sizeMb,proto3" json:"size_mb,omitempty"`
+ // Memory manufacturer and model.
+ Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
+}
+
+func (x *MachineStatusSpec_HardwareStatus_MemoryModule) Reset() {
+ *x = MachineStatusSpec_HardwareStatus_MemoryModule{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[68]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineStatusSpec_HardwareStatus_MemoryModule) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineStatusSpec_HardwareStatus_MemoryModule) ProtoMessage() {}
+
+func (x *MachineStatusSpec_HardwareStatus_MemoryModule) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[68]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineStatusSpec_HardwareStatus_MemoryModule.ProtoReflect.Descriptor instead.
+func (*MachineStatusSpec_HardwareStatus_MemoryModule) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{1, 0, 1}
+}
+
+func (x *MachineStatusSpec_HardwareStatus_MemoryModule) GetSizeMb() uint32 {
+ if x != nil {
+ return x.SizeMb
+ }
+ return 0
+}
+
+func (x *MachineStatusSpec_HardwareStatus_MemoryModule) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+// BlockDevice describes a block device.
+type MachineStatusSpec_HardwareStatus_BlockDevice struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Size indicates the disk size in bytes.
+ Size uint64 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"`
+ // Model idicates the disk model.
+ Model string `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"`
+ // Linux blockdevice name (e.g. `/dev/sda`).
+ LinuxName string `protobuf:"bytes,3,opt,name=linux_name,json=linuxName,proto3" json:"linux_name,omitempty"`
+ // Name as in `/sys/block//device/name`.
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+ // Serial as in `/sys/block//device/serial`.
+ Serial string `protobuf:"bytes,5,opt,name=serial,proto3" json:"serial,omitempty"`
+ // Uuid as in `/sys/block//device/uuid`.
+ Uuid string `protobuf:"bytes,7,opt,name=uuid,proto3" json:"uuid,omitempty"`
+ // Wwid as in `/sys/block//device/wwid`.
+ Wwid string `protobuf:"bytes,8,opt,name=wwid,proto3" json:"wwid,omitempty"`
+ // Type is a type of the disk: nvme, ssd, hdd, sd card.
+ Type string `protobuf:"bytes,9,opt,name=type,proto3" json:"type,omitempty"`
+ // BusPath is the bus path of the disk.
+ BusPath string `protobuf:"bytes,10,opt,name=bus_path,json=busPath,proto3" json:"bus_path,omitempty"`
+ // SystemDisk is the system disk flag.
+ SystemDisk bool `protobuf:"varint,11,opt,name=system_disk,json=systemDisk,proto3" json:"system_disk,omitempty"`
+}
+
+func (x *MachineStatusSpec_HardwareStatus_BlockDevice) Reset() {
+ *x = MachineStatusSpec_HardwareStatus_BlockDevice{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[69]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineStatusSpec_HardwareStatus_BlockDevice) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineStatusSpec_HardwareStatus_BlockDevice) ProtoMessage() {}
+
+func (x *MachineStatusSpec_HardwareStatus_BlockDevice) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[69]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineStatusSpec_HardwareStatus_BlockDevice.ProtoReflect.Descriptor instead.
+func (*MachineStatusSpec_HardwareStatus_BlockDevice) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{1, 0, 2}
+}
+
+func (x *MachineStatusSpec_HardwareStatus_BlockDevice) GetSize() uint64 {
+ if x != nil {
+ return x.Size
+ }
+ return 0
+}
+
+func (x *MachineStatusSpec_HardwareStatus_BlockDevice) GetModel() string {
+ if x != nil {
+ return x.Model
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_HardwareStatus_BlockDevice) GetLinuxName() string {
+ if x != nil {
+ return x.LinuxName
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_HardwareStatus_BlockDevice) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_HardwareStatus_BlockDevice) GetSerial() string {
+ if x != nil {
+ return x.Serial
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_HardwareStatus_BlockDevice) GetUuid() string {
+ if x != nil {
+ return x.Uuid
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_HardwareStatus_BlockDevice) GetWwid() string {
+ if x != nil {
+ return x.Wwid
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_HardwareStatus_BlockDevice) GetType() string {
+ if x != nil {
+ return x.Type
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_HardwareStatus_BlockDevice) GetBusPath() string {
+ if x != nil {
+ return x.BusPath
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_HardwareStatus_BlockDevice) GetSystemDisk() bool {
+ if x != nil {
+ return x.SystemDisk
+ }
+ return false
+}
+
+// Physical network interfaces.
+type MachineStatusSpec_NetworkStatus_NetworkLinkStatus struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Linux interface name.
+ LinuxName string `protobuf:"bytes,1,opt,name=linux_name,json=linuxName,proto3" json:"linux_name,omitempty"`
+ // MAC address.
+ HardwareAddress string `protobuf:"bytes,2,opt,name=hardware_address,json=hardwareAddress,proto3" json:"hardware_address,omitempty"`
+ // Speed in Mbps.
+ SpeedMbps uint32 `protobuf:"varint,3,opt,name=speed_mbps,json=speedMbps,proto3" json:"speed_mbps,omitempty"`
+ // Link status.
+ LinkUp bool `protobuf:"varint,4,opt,name=link_up,json=linkUp,proto3" json:"link_up,omitempty"`
+ // Hardware description.
+ Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
+}
+
+func (x *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) Reset() {
+ *x = MachineStatusSpec_NetworkStatus_NetworkLinkStatus{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[70]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineStatusSpec_NetworkStatus_NetworkLinkStatus) ProtoMessage() {}
+
+func (x *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[70]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineStatusSpec_NetworkStatus_NetworkLinkStatus.ProtoReflect.Descriptor instead.
+func (*MachineStatusSpec_NetworkStatus_NetworkLinkStatus) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{1, 1, 0}
+}
+
+func (x *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) GetLinuxName() string {
+ if x != nil {
+ return x.LinuxName
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) GetHardwareAddress() string {
+ if x != nil {
+ return x.HardwareAddress
+ }
+ return ""
+}
+
+func (x *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) GetSpeedMbps() uint32 {
+ if x != nil {
+ return x.SpeedMbps
+ }
+ return 0
+}
+
+func (x *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) GetLinkUp() bool {
+ if x != nil {
+ return x.LinkUp
+ }
+ return false
+}
+
+func (x *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+type ClusterSpec_Features struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // EnableWorkloadProxy enables workload proxy.
+ EnableWorkloadProxy bool `protobuf:"varint,1,opt,name=enable_workload_proxy,json=enableWorkloadProxy,proto3" json:"enable_workload_proxy,omitempty"`
+ // DiskEncryption enables disk encryption on all nodes.
+ DiskEncryption bool `protobuf:"varint,2,opt,name=disk_encryption,json=diskEncryption,proto3" json:"disk_encryption,omitempty"`
+}
+
+func (x *ClusterSpec_Features) Reset() {
+ *x = ClusterSpec_Features{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[71]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterSpec_Features) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterSpec_Features) ProtoMessage() {}
+
+func (x *ClusterSpec_Features) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[71]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterSpec_Features.ProtoReflect.Descriptor instead.
+func (*ClusterSpec_Features) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{3, 0}
+}
+
+func (x *ClusterSpec_Features) GetEnableWorkloadProxy() bool {
+ if x != nil {
+ return x.EnableWorkloadProxy
+ }
+ return false
+}
+
+func (x *ClusterSpec_Features) GetDiskEncryption() bool {
+ if x != nil {
+ return x.DiskEncryption
+ }
+ return false
+}
+
+// MachineClass defines the machine class configuration.
+type MachineSetSpec_MachineClass struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Name defines the machine class id to select the machines from.
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // MachineCount defines fixed amount of the machines to allocated from the machine class.
+ MachineCount uint32 `protobuf:"varint,2,opt,name=machine_count,json=machineCount,proto3" json:"machine_count,omitempty"`
+ // AllocationType defines special constants for the amount of machines to be allocated.
+ AllocationType MachineSetSpec_MachineClass_AllocationType `protobuf:"varint,3,opt,name=allocation_type,json=allocationType,proto3,enum=specs.MachineSetSpec_MachineClass_AllocationType" json:"allocation_type,omitempty"`
+}
+
+func (x *MachineSetSpec_MachineClass) Reset() {
+ *x = MachineSetSpec_MachineClass{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[72]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineSetSpec_MachineClass) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineSetSpec_MachineClass) ProtoMessage() {}
+
+func (x *MachineSetSpec_MachineClass) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[72]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineSetSpec_MachineClass.ProtoReflect.Descriptor instead.
+func (*MachineSetSpec_MachineClass) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{35, 0}
+}
+
+func (x *MachineSetSpec_MachineClass) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *MachineSetSpec_MachineClass) GetMachineCount() uint32 {
+ if x != nil {
+ return x.MachineCount
+ }
+ return 0
+}
+
+func (x *MachineSetSpec_MachineClass) GetAllocationType() MachineSetSpec_MachineClass_AllocationType {
+ if x != nil {
+ return x.AllocationType
+ }
+ return MachineSetSpec_MachineClass_Static
+}
+
+// BootstrapSpec defines the bootstrap spec for the control plane machine set.
+// It can contain a reference to an etcd backup, which can be used to bootstrap etcd.
+type MachineSetSpec_BootstrapSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // ClusterUuid is the UUID of the cluster to bootstrap. It can be obtained via `omnictl get clusteruuid `
+ ClusterUuid string `protobuf:"bytes,1,opt,name=cluster_uuid,json=clusterUuid,proto3" json:"cluster_uuid,omitempty"`
+ // Snapshot is the file name of the etcd snapshot to restore from. It follows the format similar to `FFFFFFFFFFFFFFFF.snapshot`.
+ Snapshot string `protobuf:"bytes,2,opt,name=snapshot,proto3" json:"snapshot,omitempty"`
+}
+
+func (x *MachineSetSpec_BootstrapSpec) Reset() {
+ *x = MachineSetSpec_BootstrapSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[73]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineSetSpec_BootstrapSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineSetSpec_BootstrapSpec) ProtoMessage() {}
+
+func (x *MachineSetSpec_BootstrapSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[73]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineSetSpec_BootstrapSpec.ProtoReflect.Descriptor instead.
+func (*MachineSetSpec_BootstrapSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{35, 1}
+}
+
+func (x *MachineSetSpec_BootstrapSpec) GetClusterUuid() string {
+ if x != nil {
+ return x.ClusterUuid
+ }
+ return ""
+}
+
+func (x *MachineSetSpec_BootstrapSpec) GetSnapshot() string {
+ if x != nil {
+ return x.Snapshot
+ }
+ return ""
+}
+
+// RollingUpdateStrategyConfig defines the rolling update strategy configuration.
+type MachineSetSpec_RollingUpdateStrategyConfig struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // MaxParallelism is the maximum number of machines that can be processed in parallel.
+ // When unset or set to 0, it defaults to 1.
+ MaxParallelism uint32 `protobuf:"varint,1,opt,name=max_parallelism,json=maxParallelism,proto3" json:"max_parallelism,omitempty"`
+}
+
+func (x *MachineSetSpec_RollingUpdateStrategyConfig) Reset() {
+ *x = MachineSetSpec_RollingUpdateStrategyConfig{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[74]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineSetSpec_RollingUpdateStrategyConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineSetSpec_RollingUpdateStrategyConfig) ProtoMessage() {}
+
+func (x *MachineSetSpec_RollingUpdateStrategyConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[74]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineSetSpec_RollingUpdateStrategyConfig.ProtoReflect.Descriptor instead.
+func (*MachineSetSpec_RollingUpdateStrategyConfig) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{35, 2}
+}
+
+func (x *MachineSetSpec_RollingUpdateStrategyConfig) GetMaxParallelism() uint32 {
+ if x != nil {
+ return x.MaxParallelism
+ }
+ return 0
+}
+
+// UpdateConfig defines the update configuration.
+type MachineSetSpec_UpdateStrategyConfig struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Rolling is the rolling update configuration.
+ // Used only when the UpdateStrategy is set to Rolling.
+ Rolling *MachineSetSpec_RollingUpdateStrategyConfig `protobuf:"bytes,1,opt,name=rolling,proto3" json:"rolling,omitempty"`
+}
+
+func (x *MachineSetSpec_UpdateStrategyConfig) Reset() {
+ *x = MachineSetSpec_UpdateStrategyConfig{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[75]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MachineSetSpec_UpdateStrategyConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MachineSetSpec_UpdateStrategyConfig) ProtoMessage() {}
+
+func (x *MachineSetSpec_UpdateStrategyConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[75]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MachineSetSpec_UpdateStrategyConfig.ProtoReflect.Descriptor instead.
+func (*MachineSetSpec_UpdateStrategyConfig) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{35, 3}
+}
+
+func (x *MachineSetSpec_UpdateStrategyConfig) GetRolling() *MachineSetSpec_RollingUpdateStrategyConfig {
+ if x != nil {
+ return x.Rolling
+ }
+ return nil
+}
+
+type ControlPlaneStatusSpec_Condition struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Type ConditionType `protobuf:"varint,1,opt,name=type,proto3,enum=specs.ConditionType" json:"type,omitempty"`
+ Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
+ Status ControlPlaneStatusSpec_Condition_Status `protobuf:"varint,3,opt,name=status,proto3,enum=specs.ControlPlaneStatusSpec_Condition_Status" json:"status,omitempty"`
+ Severity ControlPlaneStatusSpec_Condition_Severity `protobuf:"varint,4,opt,name=severity,proto3,enum=specs.ControlPlaneStatusSpec_Condition_Severity" json:"severity,omitempty"`
+}
+
+func (x *ControlPlaneStatusSpec_Condition) Reset() {
+ *x = ControlPlaneStatusSpec_Condition{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[76]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ControlPlaneStatusSpec_Condition) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ControlPlaneStatusSpec_Condition) ProtoMessage() {}
+
+func (x *ControlPlaneStatusSpec_Condition) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[76]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ControlPlaneStatusSpec_Condition.ProtoReflect.Descriptor instead.
+func (*ControlPlaneStatusSpec_Condition) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{41, 0}
+}
+
+func (x *ControlPlaneStatusSpec_Condition) GetType() ConditionType {
+ if x != nil {
+ return x.Type
+ }
+ return ConditionType_UnknownCondition
+}
+
+func (x *ControlPlaneStatusSpec_Condition) GetReason() string {
+ if x != nil {
+ return x.Reason
+ }
+ return ""
+}
+
+func (x *ControlPlaneStatusSpec_Condition) GetStatus() ControlPlaneStatusSpec_Condition_Status {
+ if x != nil {
+ return x.Status
+ }
+ return ControlPlaneStatusSpec_Condition_Unknown
+}
+
+func (x *ControlPlaneStatusSpec_Condition) GetSeverity() ControlPlaneStatusSpec_Condition_Severity {
+ if x != nil {
+ return x.Severity
+ }
+ return ControlPlaneStatusSpec_Condition_Info
+}
+
+type KubernetesStatusSpec_NodeStatus struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Nodename string `protobuf:"bytes,1,opt,name=nodename,proto3" json:"nodename,omitempty"`
+ KubeletVersion string `protobuf:"bytes,2,opt,name=kubelet_version,json=kubeletVersion,proto3" json:"kubelet_version,omitempty"`
+ Ready bool `protobuf:"varint,3,opt,name=ready,proto3" json:"ready,omitempty"`
+}
+
+func (x *KubernetesStatusSpec_NodeStatus) Reset() {
+ *x = KubernetesStatusSpec_NodeStatus{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[77]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubernetesStatusSpec_NodeStatus) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubernetesStatusSpec_NodeStatus) ProtoMessage() {}
+
+func (x *KubernetesStatusSpec_NodeStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[77]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubernetesStatusSpec_NodeStatus.ProtoReflect.Descriptor instead.
+func (*KubernetesStatusSpec_NodeStatus) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{43, 0}
+}
+
+func (x *KubernetesStatusSpec_NodeStatus) GetNodename() string {
+ if x != nil {
+ return x.Nodename
+ }
+ return ""
+}
+
+func (x *KubernetesStatusSpec_NodeStatus) GetKubeletVersion() string {
+ if x != nil {
+ return x.KubeletVersion
+ }
+ return ""
+}
+
+func (x *KubernetesStatusSpec_NodeStatus) GetReady() bool {
+ if x != nil {
+ return x.Ready
+ }
+ return false
+}
+
+type KubernetesStatusSpec_StaticPodStatus struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ App string `protobuf:"bytes,1,opt,name=app,proto3" json:"app,omitempty"`
+ Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
+ Ready bool `protobuf:"varint,3,opt,name=ready,proto3" json:"ready,omitempty"`
+}
+
+func (x *KubernetesStatusSpec_StaticPodStatus) Reset() {
+ *x = KubernetesStatusSpec_StaticPodStatus{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[78]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubernetesStatusSpec_StaticPodStatus) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubernetesStatusSpec_StaticPodStatus) ProtoMessage() {}
+
+func (x *KubernetesStatusSpec_StaticPodStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[78]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubernetesStatusSpec_StaticPodStatus.ProtoReflect.Descriptor instead.
+func (*KubernetesStatusSpec_StaticPodStatus) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{43, 1}
+}
+
+func (x *KubernetesStatusSpec_StaticPodStatus) GetApp() string {
+ if x != nil {
+ return x.App
+ }
+ return ""
+}
+
+func (x *KubernetesStatusSpec_StaticPodStatus) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *KubernetesStatusSpec_StaticPodStatus) GetReady() bool {
+ if x != nil {
+ return x.Ready
+ }
+ return false
+}
+
+type KubernetesStatusSpec_NodeStaticPods struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Nodename string `protobuf:"bytes,1,opt,name=nodename,proto3" json:"nodename,omitempty"`
+ StaticPods []*KubernetesStatusSpec_StaticPodStatus `protobuf:"bytes,2,rep,name=static_pods,json=staticPods,proto3" json:"static_pods,omitempty"`
+}
+
+func (x *KubernetesStatusSpec_NodeStaticPods) Reset() {
+ *x = KubernetesStatusSpec_NodeStaticPods{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[79]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubernetesStatusSpec_NodeStaticPods) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubernetesStatusSpec_NodeStaticPods) ProtoMessage() {}
+
+func (x *KubernetesStatusSpec_NodeStaticPods) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[79]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubernetesStatusSpec_NodeStaticPods.ProtoReflect.Descriptor instead.
+func (*KubernetesStatusSpec_NodeStaticPods) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{43, 2}
+}
+
+func (x *KubernetesStatusSpec_NodeStaticPods) GetNodename() string {
+ if x != nil {
+ return x.Nodename
+ }
+ return ""
+}
+
+func (x *KubernetesStatusSpec_NodeStaticPods) GetStaticPods() []*KubernetesStatusSpec_StaticPodStatus {
+ if x != nil {
+ return x.StaticPods
+ }
+ return nil
+}
+
+type KubernetesUsageSpec_Quantity struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Requests float64 `protobuf:"fixed64,1,opt,name=requests,proto3" json:"requests,omitempty"`
+ Limits float64 `protobuf:"fixed64,2,opt,name=limits,proto3" json:"limits,omitempty"`
+ Capacity float64 `protobuf:"fixed64,3,opt,name=capacity,proto3" json:"capacity,omitempty"`
+}
+
+func (x *KubernetesUsageSpec_Quantity) Reset() {
+ *x = KubernetesUsageSpec_Quantity{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[80]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubernetesUsageSpec_Quantity) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubernetesUsageSpec_Quantity) ProtoMessage() {}
+
+func (x *KubernetesUsageSpec_Quantity) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[80]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubernetesUsageSpec_Quantity.ProtoReflect.Descriptor instead.
+func (*KubernetesUsageSpec_Quantity) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{56, 0}
+}
+
+func (x *KubernetesUsageSpec_Quantity) GetRequests() float64 {
+ if x != nil {
+ return x.Requests
+ }
+ return 0
+}
+
+func (x *KubernetesUsageSpec_Quantity) GetLimits() float64 {
+ if x != nil {
+ return x.Limits
+ }
+ return 0
+}
+
+func (x *KubernetesUsageSpec_Quantity) GetCapacity() float64 {
+ if x != nil {
+ return x.Capacity
+ }
+ return 0
+}
+
+type KubernetesUsageSpec_Pod struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Count int32 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"`
+ Capacity int32 `protobuf:"varint,3,opt,name=capacity,proto3" json:"capacity,omitempty"`
+}
+
+func (x *KubernetesUsageSpec_Pod) Reset() {
+ *x = KubernetesUsageSpec_Pod{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[81]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KubernetesUsageSpec_Pod) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KubernetesUsageSpec_Pod) ProtoMessage() {}
+
+func (x *KubernetesUsageSpec_Pod) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[81]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KubernetesUsageSpec_Pod.ProtoReflect.Descriptor instead.
+func (*KubernetesUsageSpec_Pod) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{56, 1}
+}
+
+func (x *KubernetesUsageSpec_Pod) GetCount() int32 {
+ if x != nil {
+ return x.Count
+ }
+ return 0
+}
+
+func (x *KubernetesUsageSpec_Pod) GetCapacity() int32 {
+ if x != nil {
+ return x.Capacity
+ }
+ return 0
+}
+
+type ImagePullRequestSpec_NodeImageList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
+ Images []string `protobuf:"bytes,2,rep,name=images,proto3" json:"images,omitempty"`
+}
+
+func (x *ImagePullRequestSpec_NodeImageList) Reset() {
+ *x = ImagePullRequestSpec_NodeImageList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[82]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ImagePullRequestSpec_NodeImageList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImagePullRequestSpec_NodeImageList) ProtoMessage() {}
+
+func (x *ImagePullRequestSpec_NodeImageList) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[82]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImagePullRequestSpec_NodeImageList.ProtoReflect.Descriptor instead.
+func (*ImagePullRequestSpec_NodeImageList) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{57, 0}
+}
+
+func (x *ImagePullRequestSpec_NodeImageList) GetNode() string {
+ if x != nil {
+ return x.Node
+ }
+ return ""
+}
+
+func (x *ImagePullRequestSpec_NodeImageList) GetImages() []string {
+ if x != nil {
+ return x.Images
+ }
+ return nil
+}
+
+// Info is a merged representation of the extensions manifest and image factory versions response.
+type TalosExtensionsSpec_Info struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Author string `protobuf:"bytes,2,opt,name=author,proto3" json:"author,omitempty"`
+ Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
+ Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
+ Ref string `protobuf:"bytes,5,opt,name=ref,proto3" json:"ref,omitempty"`
+ Digest string `protobuf:"bytes,6,opt,name=digest,proto3" json:"digest,omitempty"`
+}
+
+func (x *TalosExtensionsSpec_Info) Reset() {
+ *x = TalosExtensionsSpec_Info{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_omni_proto_msgTypes[83]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TalosExtensionsSpec_Info) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TalosExtensionsSpec_Info) ProtoMessage() {}
+
+func (x *TalosExtensionsSpec_Info) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_omni_proto_msgTypes[83]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TalosExtensionsSpec_Info.ProtoReflect.Descriptor instead.
+func (*TalosExtensionsSpec_Info) Descriptor() ([]byte, []int) {
+ return file_omni_specs_omni_proto_rawDescGZIP(), []int{60, 0}
+}
+
+func (x *TalosExtensionsSpec_Info) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *TalosExtensionsSpec_Info) GetAuthor() string {
+ if x != nil {
+ return x.Author
+ }
+ return ""
+}
+
+func (x *TalosExtensionsSpec_Info) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *TalosExtensionsSpec_Info) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *TalosExtensionsSpec_Info) GetRef() string {
+ if x != nil {
+ return x.Ref
+ }
+ return ""
+}
+
+func (x *TalosExtensionsSpec_Info) GetDigest() string {
+ if x != nil {
+ return x.Digest
+ }
+ return ""
+}
+
+var File_omni_specs_omni_proto protoreflect.FileDescriptor
+
+var file_omni_specs_omni_proto_rawDesc = []byte{
+ 0x0a, 0x15, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2f, 0x6f, 0x6d, 0x6e,
+ 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x73, 0x70, 0x65, 0x63, 0x73, 0x1a, 0x1b,
+ 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x6d, 0x61,
+ 0x63, 0x68, 0x69, 0x6e, 0x65, 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, 0x1a, 0x1e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x66, 0x0a, 0x0b,
+ 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x12, 0x6d,
+ 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
+ 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,
+ 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04,
+ 0x08, 0x04, 0x10, 0x05, 0x22, 0x86, 0x12, 0x0a, 0x11, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x61,
+ 0x6c, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0c, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
+ 0x43, 0x0a, 0x08, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e,
+ 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x48, 0x61, 0x72, 0x64,
+ 0x77, 0x61, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x08, 0x68, 0x61, 0x72, 0x64,
+ 0x77, 0x61, 0x72, 0x65, 0x12, 0x40, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61,
+ 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e,
+ 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x6e,
+ 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65,
+ 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74,
+ 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2d, 0x0a, 0x12, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,
+ 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x11, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64,
+ 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65,
+ 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
+ 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63,
+ 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e,
+ 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18,
+ 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x31,
+ 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x73,
+ 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c,
+ 0x65, 0x12, 0x56, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x6d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73,
+ 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4c, 0x0a, 0x0c, 0x69, 0x6d, 0x61,
+ 0x67, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x29, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c,
+ 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67,
+ 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x73, 0x63, 0x68, 0x65, 0x6d,
+ 0x61, 0x74, 0x69, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x65,
+ 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x52, 0x09,
+ 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x1a, 0xa9, 0x06, 0x0a, 0x0e, 0x48, 0x61,
+ 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x51, 0x0a, 0x0a,
+ 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x31, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77,
+ 0x61, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73,
+ 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x73, 0x12,
+ 0x5b, 0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
+ 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e,
+ 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65,
+ 0x63, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x0d, 0x6d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x57, 0x0a, 0x0c,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69,
+ 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x48, 0x61, 0x72,
+ 0x64, 0x77, 0x61, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x42, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x64, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x1a, 0xb1, 0x01, 0x0a, 0x09, 0x50, 0x72,
+ 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x72, 0x65, 0x5f,
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x6f, 0x72,
+ 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64,
+ 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x68,
+ 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65,
+ 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x72,
+ 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x61, 0x6e,
+ 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0c, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x1a, 0x49, 0x0a,
+ 0x0c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a,
+ 0x07, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06,
+ 0x73, 0x69, 0x7a, 0x65, 0x4d, 0x62, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xfa, 0x01, 0x0a, 0x0b, 0x42, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05,
+ 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64,
+ 0x65, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x4e, 0x61, 0x6d,
+ 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x12, 0x0a,
+ 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69,
+ 0x64, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x77, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x77, 0x77, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x75, 0x73,
+ 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x73,
+ 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x64,
+ 0x69, 0x73, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x79, 0x73, 0x74, 0x65,
+ 0x6d, 0x44, 0x69, 0x73, 0x6b, 0x1a, 0xad, 0x03, 0x0a, 0x0d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+ 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e,
+ 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x6e,
+ 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73,
+ 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65,
+ 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x67, 0x61, 0x74,
+ 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x66,
+ 0x61, 0x75, 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x5d, 0x0a, 0x0d,
+ 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x05, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68,
+ 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4e, 0x65,
+ 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77,
+ 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x6e,
+ 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x1a, 0xb7, 0x01, 0x0a, 0x11,
+ 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x4e, 0x61, 0x6d, 0x65,
+ 0x12, 0x29, 0x0a, 0x10, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x61, 0x64, 0x64,
+ 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x68, 0x61, 0x72, 0x64,
+ 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73,
+ 0x70, 0x65, 0x65, 0x64, 0x5f, 0x6d, 0x62, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52,
+ 0x09, 0x73, 0x70, 0x65, 0x65, 0x64, 0x4d, 0x62, 0x70, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6c, 0x69,
+ 0x6e, 0x6b, 0x5f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x69, 0x6e,
+ 0x6b, 0x55, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xf1, 0x01, 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f,
+ 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x23,
+ 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54,
+ 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f,
+ 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x76, 0x69,
+ 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x70, 0x6f, 0x74, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x04, 0x73, 0x70, 0x6f, 0x74, 0x1a, 0x35, 0x0a, 0x09, 0x53, 0x63, 0x68,
+ 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64,
+ 0x1a, 0x3e, 0x0a, 0x10, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
+ 0x22, 0x2f, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45,
+ 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x4c,
+ 0x41, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x57, 0x4f, 0x52, 0x4b, 0x45, 0x52, 0x10,
+ 0x02, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x22, 0x45, 0x0a,
+ 0x0f, 0x54, 0x61, 0x6c, 0x6f, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63,
+ 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x63, 0x61,
+ 0x12, 0x10, 0x0a, 0x03, 0x63, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63,
+ 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x6b, 0x65, 0x79, 0x22, 0xf6, 0x02, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x53, 0x70, 0x65, 0x63, 0x12, 0x27, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f,
+ 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52,
+ 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a,
+ 0x12, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x75, 0x62, 0x65, 0x72,
+ 0x6e, 0x65, 0x74, 0x65, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d,
+ 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
+ 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x14, 0x62, 0x61,
+ 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73,
+ 0x2e, 0x45, 0x74, 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x52,
+ 0x13, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x67, 0x0a, 0x08, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
+ 0x12, 0x32, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50,
+ 0x72, 0x6f, 0x78, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x65, 0x6e, 0x63,
+ 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64,
+ 0x69, 0x73, 0x6b, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x61, 0x0a,
+ 0x0e, 0x45, 0x74, 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x12,
+ 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e,
+ 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
+ 0x22, 0x41, 0x0a, 0x18, 0x45, 0x74, 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x45, 0x6e,
+ 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x25, 0x0a, 0x0e,
+ 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x4b, 0x65, 0x79, 0x22, 0x2c, 0x0a, 0x10, 0x45, 0x74, 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75,
+ 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x22, 0x7b, 0x0a, 0x0e, 0x45, 0x74, 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53,
+ 0x70, 0x65, 0x63, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
+ 0x74, 0x18, 0x01, 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, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a,
+ 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69,
+ 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x8c,
+ 0x02, 0x0a, 0x0e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x44, 0x61, 0x74, 0x61, 0x53, 0x70, 0x65,
+ 0x63, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08,
+ 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65,
+ 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b,
+ 0x65, 0x79, 0x12, 0x39, 0x0a, 0x19, 0x61, 0x65, 0x73, 0x5f, 0x63, 0x62, 0x63, 0x5f, 0x65, 0x6e,
+ 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x61, 0x65, 0x73, 0x43, 0x62, 0x63, 0x45, 0x6e, 0x63,
+ 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x3e, 0x0a,
+ 0x1b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x62, 0x6f, 0x78, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x19, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x62, 0x6f, 0x78, 0x45, 0x6e, 0x63,
+ 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0xd7, 0x01,
+ 0x0a, 0x14, 0x45, 0x74, 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x33, 0x43, 0x6f,
+ 0x6e, 0x66, 0x53, 0x70, 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x16,
+ 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79,
+ 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73,
+ 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74,
+ 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b,
+ 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f,
+ 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69,
+ 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xb1, 0x02, 0x0a, 0x14, 0x45, 0x74, 0x63, 0x64,
+ 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63,
+ 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x22, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x42, 0x61, 0x63,
+ 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05,
+ 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72,
+ 0x6f, 0x72, 0x12, 0x44, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75,
+ 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 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, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x61,
+ 0x63, 0x6b, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74,
+ 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x18,
+ 0x04, 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, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x74, 0x74,
+ 0x65, 0x6d, 0x70, 0x74, 0x22, 0x35, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b,
+ 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x4f,
+ 0x6b, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x02, 0x12, 0x0b,
+ 0x0a, 0x07, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x22, 0x4f, 0x0a, 0x14, 0x45,
+ 0x74, 0x63, 0x64, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53,
+ 0x70, 0x65, 0x63, 0x12, 0x37, 0x0a, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x61, 0x74,
+ 0x18, 0x01, 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, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x41, 0x74, 0x22, 0x7b, 0x0a, 0x19,
+ 0x45, 0x74, 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc8, 0x01, 0x0a, 0x1b, 0x45, 0x74,
+ 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x49, 0x0a, 0x12, 0x6c, 0x61, 0x73,
+ 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x45, 0x74,
+ 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70,
+ 0x65, 0x63, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x22, 0x49, 0x0a, 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d,
+ 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x12, 0x6b, 0x75,
+ 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74,
+ 0x65, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22,
+ 0x3b, 0x0a, 0x1f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x53, 0x70,
+ 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x22, 0x68, 0x0a, 0x1e,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x61,
+ 0x6c, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x23,
+ 0x0a, 0x0d, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d,
+ 0x61, 0x74, 0x69, 0x63, 0x49, 0x64, 0x22, 0x91, 0x01, 0x0a, 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53,
+ 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
+ 0x29, 0x0a, 0x10, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72,
+ 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x36, 0x0a, 0x20, 0x52, 0x65,
+ 0x64, 0x61, 0x63, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63,
+ 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12,
+ 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61,
+ 0x74, 0x61, 0x22, 0x9e, 0x01, 0x0a, 0x1a, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61,
+ 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x70, 0x65,
+ 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
+ 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64,
+ 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x65, 0x74, 0x63, 0x64, 0x5f, 0x6d,
+ 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c,
+ 0x65, 0x74, 0x63, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08,
+ 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x69, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x6f, 0x64, 0x65,
+ 0x49, 0x70, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x1a, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d,
+ 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70,
+ 0x65, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x6d,
+ 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61,
+ 0x6c, 0x6c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x6b, 0x75, 0x62, 0x65, 0x72,
+ 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x56,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c,
+ 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e,
+ 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74,
+ 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x22,
+ 0x8b, 0x04, 0x0a, 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69,
+ 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05,
+ 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61,
+ 0x64, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x25, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70,
+ 0x65, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12,
+ 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x69, 0x64, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x70, 0x69, 0x64, 0x41, 0x76, 0x61,
+ 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x5f, 0x75, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x55, 0x70, 0x54, 0x6f, 0x44, 0x61, 0x74,
+ 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x61,
+ 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2d, 0x0a,
+ 0x12, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72,
+ 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x61, 0x6e, 0x61, 0x67,
+ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x48, 0x0a, 0x13,
+ 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x73, 0x70, 0x65, 0x63,
+ 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x70, 0x70, 0x6c, 0x79,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x67, 0x65,
+ 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a,
+ 0x07, 0x42, 0x4f, 0x4f, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4e,
+ 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x50,
+ 0x47, 0x52, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x4e,
+ 0x46, 0x49, 0x47, 0x55, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55,
+ 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x42, 0x4f, 0x4f,
+ 0x54, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x48, 0x55, 0x54, 0x54, 0x49,
+ 0x4e, 0x47, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x45, 0x46,
+ 0x4f, 0x52, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x10, 0x09, 0x12, 0x0e, 0x0a,
+ 0x0a, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x22, 0x76, 0x0a,
+ 0x08, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74,
+ 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12,
+ 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d,
+ 0x52, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x9e, 0x03, 0x0a, 0x11, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x61,
+ 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09,
+ 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x6d, 0x61, 0x63,
+ 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x70,
+ 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x08, 0x6d, 0x61,
+ 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e,
+ 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05,
+ 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61,
+ 0x64, 0x79, 0x12, 0x2e, 0x0a, 0x12, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73,
+ 0x41, 0x50, 0x49, 0x52, 0x65, 0x61, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12,
+ 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x41, 0x50, 0x49, 0x52, 0x65, 0x61,
+ 0x64, 0x79, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61,
+ 0x6e, 0x65, 0x52, 0x65, 0x61, 0x64, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63,
+ 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x52, 0x65, 0x61, 0x64, 0x79,
+ 0x12, 0x3f, 0x0a, 0x1c, 0x68, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65,
+ 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x68, 0x61, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
+ 0x63, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65,
+ 0x73, 0x22, 0x53, 0x0a, 0x05, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e,
+ 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x43, 0x41, 0x4c, 0x49,
+ 0x4e, 0x47, 0x5f, 0x55, 0x50, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x43, 0x41, 0x4c, 0x49,
+ 0x4e, 0x47, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e,
+ 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f,
+ 0x59, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x22, 0x21, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x34, 0x0a, 0x18, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22,
+ 0xe0, 0x02, 0x0a, 0x1e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69,
+ 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70,
+ 0x65, 0x63, 0x12, 0x43, 0x0a, 0x1e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61,
+ 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
+ 0x41, 0x0a, 0x1d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69,
+ 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d,
+ 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x68, 0x61, 0x32,
+ 0x35, 0x36, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c,
+ 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x23,
+ 0x0a, 0x0d, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+ 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63,
+ 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d,
+ 0x61, 0x74, 0x69, 0x63, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02,
+ 0x10, 0x03, 0x22, 0x40, 0x0a, 0x1a, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42, 0x6f, 0x6f,
+ 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63,
+ 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61,
+ 0x70, 0x70, 0x65, 0x64, 0x22, 0x28, 0x0a, 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53,
+ 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61,
+ 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8a,
+ 0x01, 0x0a, 0x16, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x69, 0x6e,
+ 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x69,
+ 0x6e, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x73, 0x69, 0x64, 0x65, 0x72, 0x6f,
+ 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x69, 0x6e, 0x6b, 0x45,
+ 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x70,
+ 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x58, 0x0a, 0x16, 0x4c,
+ 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12,
+ 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a,
+ 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x31, 0x0a, 0x15, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65,
+ 0x74, 0x65, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x18,
+ 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x72, 0x0a, 0x10, 0x54, 0x61, 0x6c, 0x6f,
+ 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07,
+ 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74,
+ 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f,
+ 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1c,
+ 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e,
+ 0x65, 0x74, 0x65, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa1, 0x02, 0x0a,
+ 0x15, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x64,
+ 0x69, 0x61, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72,
+ 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18,
+ 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74,
+ 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63,
+ 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x72,
+ 0x63, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x07, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x72, 0x63, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x72, 0x65, 0x66,
+ 0x69, 0x78, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f,
+ 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65,
+ 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x1c, 0x0a, 0x09,
+ 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f,
+ 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x18, 0x0b, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0c, 0x6e, 0x6f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x42, 0x6f, 0x6f, 0x74,
+ 0x22, 0x25, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x63, 0x68, 0x53,
+ 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x81, 0x08, 0x0a, 0x0e, 0x4d, 0x61, 0x63, 0x68,
+ 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d, 0x0a, 0x0f, 0x75, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68,
+ 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x47, 0x0a, 0x0d, 0x6d, 0x61, 0x63,
+ 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x22, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
+ 0x53, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43,
+ 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6c, 0x61,
+ 0x73, 0x73, 0x12, 0x4a, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x5f,
+ 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x70, 0x65,
+ 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x53, 0x70, 0x65,
+ 0x63, 0x2e, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52,
+ 0x0d, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d,
+ 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67,
+ 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e,
+ 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0e, 0x64,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x60, 0x0a,
+ 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79,
+ 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e,
+ 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74,
+ 0x53, 0x70, 0x65, 0x63, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74,
+ 0x65, 0x67, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x14, 0x75, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
+ 0x60, 0x0a, 0x16, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65,
+ 0x67, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x2a, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53,
+ 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x72,
+ 0x61, 0x74, 0x65, 0x67, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x14, 0x64, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x1a, 0xd0, 0x01, 0x0a, 0x0c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6c, 0x61,
+ 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e,
+ 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d,
+ 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x5a, 0x0a, 0x0f, 0x61,
+ 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63,
+ 0x68, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x61, 0x63, 0x68,
+ 0x69, 0x6e, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x0e, 0x41, 0x6c, 0x6c, 0x6f, 0x63,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x74, 0x61,
+ 0x74, 0x69, 0x63, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x6e, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x65, 0x64, 0x10, 0x01, 0x1a, 0x4e, 0x0a, 0x0d, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61,
+ 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x1a, 0x46, 0x0a, 0x1b, 0x52, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c,
+ 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6d, 0x61,
+ 0x78, 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x1a, 0x63, 0x0a, 0x14,
+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4d, 0x61,
+ 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x6f, 0x6c,
+ 0x6c, 0x69, 0x6e, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65,
+ 0x67, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e,
+ 0x67, 0x22, 0x28, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74,
+ 0x65, 0x67, 0x79, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x6e, 0x73, 0x65, 0x74, 0x10, 0x00, 0x12, 0x0b,
+ 0x0a, 0x07, 0x52, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x22, 0xf4, 0x02, 0x0a, 0x16,
+ 0x54, 0x61, 0x6c, 0x6f, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x39, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x54, 0x61,
+ 0x6c, 0x6f, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73,
+ 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x67, 0x72,
+ 0x61, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x56, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+ 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55,
+ 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a,
+ 0x10, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65,
+ 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x48, 0x0a, 0x05, 0x50, 0x68, 0x61, 0x73,
+ 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0d,
+ 0x0a, 0x09, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x08, 0x0a,
+ 0x04, 0x44, 0x6f, 0x6e, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65,
+ 0x64, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67,
+ 0x10, 0x04, 0x22, 0x87, 0x02, 0x0a, 0x14, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x65,
+ 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2c, 0x0a, 0x05, 0x70,
+ 0x68, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x65,
+ 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x50, 0x68, 0x61,
+ 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61,
+ 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12,
+ 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+ 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2b, 0x0a, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
+ 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e,
+ 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e,
+ 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x68, 0x61, 0x73,
+ 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48,
+ 0x61, 0x73, 0x68, 0x12, 0x47, 0x0a, 0x0d, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x65,
+ 0x63, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x53, 0x70, 0x65,
+ 0x63, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0c,
+ 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x22, 0x14, 0x0a, 0x12,
+ 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x70,
+ 0x65, 0x63, 0x22, 0x13, 0x0a, 0x11, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4c, 0x61, 0x62,
+ 0x65, 0x6c, 0x73, 0x53, 0x70, 0x65, 0x63, 0x22, 0x5f, 0x0a, 0x19, 0x4d, 0x61, 0x63, 0x68, 0x69,
+ 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x53, 0x70, 0x65, 0x63, 0x12, 0x42, 0x0a, 0x0e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f,
+ 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d,
+ 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x6d, 0x61, 0x63, 0x68, 0x69,
+ 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xa5, 0x03, 0x0a, 0x16, 0x43, 0x6f, 0x6e,
+ 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53,
+ 0x70, 0x65, 0x63, 0x12, 0x47, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e,
+ 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xc1, 0x02, 0x0a,
+ 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79,
+ 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73,
+ 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04,
+ 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x06,
+ 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x73,
+ 0x70, 0x65, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e,
+ 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x43,
+ 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
+ 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69,
+ 0x74, 0x79, 0x22, 0x2e, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07,
+ 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x65, 0x61,
+ 0x64, 0x79, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x52, 0x65, 0x61, 0x64, 0x79,
+ 0x10, 0x02, 0x22, 0x2c, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x08,
+ 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e,
+ 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x02,
+ 0x22, 0x48, 0x0a, 0x13, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x14, 0x6d, 0x61, 0x6e, 0x61, 0x67,
+ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0xdb, 0x03, 0x0a, 0x14, 0x4b,
+ 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53,
+ 0x70, 0x65, 0x63, 0x12, 0x3c, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72,
+ 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e,
+ 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65,
+ 0x73, 0x12, 0x4b, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x64, 0x73,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4b,
+ 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53,
+ 0x70, 0x65, 0x63, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x50, 0x6f,
+ 0x64, 0x73, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x50, 0x6f, 0x64, 0x73, 0x1a, 0x67,
+ 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08,
+ 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6b, 0x75, 0x62, 0x65,
+ 0x6c, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0e, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x1a, 0x53, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x74, 0x69,
+ 0x63, 0x50, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70,
+ 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12, 0x18, 0x0a, 0x07,
+ 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x1a, 0x7a, 0x0a, 0x0e,
+ 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x1a,
+ 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x0b, 0x73, 0x74,
+ 0x61, 0x74, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x2b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74,
+ 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x61,
+ 0x74, 0x69, 0x63, 0x50, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x73, 0x74,
+ 0x61, 0x74, 0x69, 0x63, 0x50, 0x6f, 0x64, 0x73, 0x22, 0xfe, 0x02, 0x0a, 0x1b, 0x4b, 0x75, 0x62,
+ 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e,
+ 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64,
+ 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x68, 0x61, 0x73,
+ 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f,
+ 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12,
+ 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x74,
+ 0x65, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61,
+ 0x73, 0x74, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70,
+ 0x67, 0x72, 0x61, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f,
+ 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x56, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f,
+ 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f,
+ 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22,
+ 0x48, 0x0a, 0x05, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e,
+ 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x69,
+ 0x6e, 0x67, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x6f, 0x6e, 0x65, 0x10, 0x02, 0x12, 0x0a,
+ 0x0a, 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x65,
+ 0x76, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x04, 0x22, 0x6f, 0x0a, 0x23, 0x4b, 0x75, 0x62,
+ 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x4d, 0x61,
+ 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63,
+ 0x12, 0x1e, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x4f, 0x66, 0x53, 0x79, 0x6e, 0x63,
+ 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x74, 0x61, 0x6c, 0x5f, 0x65,
+ 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74,
+ 0x46, 0x61, 0x74, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x29, 0x0a, 0x11, 0x44, 0x65,
+ 0x73, 0x74, 0x72, 0x6f, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12,
+ 0x14, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+ 0x70, 0x68, 0x61, 0x73, 0x65, 0x22, 0x83, 0x02, 0x0a, 0x0f, 0x4f, 0x6e, 0x67, 0x6f, 0x69, 0x6e,
+ 0x67, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74,
+ 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12,
+ 0x44, 0x0a, 0x0d, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x54,
+ 0x61, 0x6c, 0x6f, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x55, 0x70,
+ 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x53, 0x0a, 0x12, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65,
+ 0x74, 0x65, 0x73, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e,
+ 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x11, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65,
+ 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x64, 0x65,
+ 0x73, 0x74, 0x72, 0x6f, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x70,
+ 0x65, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79,
+ 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x35, 0x0a, 0x1f, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x45, 0x6e, 0x63,
+ 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12,
+ 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61,
+ 0x74, 0x61, 0x22, 0x5f, 0x0a, 0x12, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x65, 0x72,
+ 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05,
+ 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62,
+ 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x36,
+ 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x73,
+ 0x65, 0x36, 0x34, 0x22, 0x9b, 0x01, 0x0a, 0x12, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x38, 0x0a, 0x18, 0x65, 0x6e,
+ 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72,
+ 0x6f, 0x78, 0x79, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x65, 0x6e,
+ 0x61, 0x62, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x78,
+ 0x79, 0x69, 0x6e, 0x67, 0x12, 0x4b, 0x0a, 0x14, 0x65, 0x74, 0x63, 0x64, 0x5f, 0x62, 0x61, 0x63,
+ 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x42,
+ 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x12, 0x65,
+ 0x74, 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
+ 0x73, 0x22, 0xd6, 0x01, 0x0a, 0x12, 0x45, 0x74, 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70,
+ 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x0d, 0x74, 0x69, 0x63, 0x6b,
+ 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x69, 0x63, 0x6b,
+ 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x3c, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f,
+ 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x49, 0x6e,
+ 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x3c, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e,
+ 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
+ 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65,
+ 0x72, 0x76, 0x61, 0x6c, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x35, 0x0a, 0x10, 0x4d, 0x61,
+ 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21,
+ 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c,
+ 0x73, 0x22, 0x40, 0x0a, 0x1b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x47, 0x65, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x70, 0x65, 0x63,
+ 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x6b,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x44,
+ 0x69, 0x73, 0x6b, 0x22, 0x3d, 0x0a, 0x13, 0x45, 0x74, 0x63, 0x64, 0x41, 0x75, 0x64, 0x69, 0x74,
+ 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0f, 0x65, 0x74,
+ 0x63, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x04, 0x52, 0x0d, 0x65, 0x74, 0x63, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49,
+ 0x64, 0x73, 0x22, 0x24, 0x0a, 0x0e, 0x4b, 0x75, 0x62, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8b, 0x03, 0x0a, 0x13, 0x4b, 0x75, 0x62,
+ 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63,
+ 0x12, 0x35, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e,
+ 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73,
+ 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69,
+ 0x74, 0x79, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x35, 0x0a, 0x03, 0x6d, 0x65, 0x6d, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4b, 0x75, 0x62,
+ 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63,
+ 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x03, 0x6d, 0x65, 0x6d, 0x12, 0x3d,
+ 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x23, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74,
+ 0x65, 0x73, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x51, 0x75, 0x61, 0x6e,
+ 0x74, 0x69, 0x74, 0x79, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a,
+ 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x70,
+ 0x65, 0x63, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x73,
+ 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x6f, 0x64, 0x52, 0x04, 0x70, 0x6f, 0x64,
+ 0x73, 0x1a, 0x5a, 0x0a, 0x08, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a,
+ 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x69, 0x6d,
+ 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x08, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x1a, 0x37, 0x0a,
+ 0x03, 0x50, 0x6f, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61,
+ 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x61,
+ 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x22, 0xa6, 0x01, 0x0a, 0x14, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12,
+ 0x51, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69,
+ 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73,
+ 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c,
+ 0x69, 0x73, 0x74, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69,
+ 0x73, 0x74, 0x1a, 0x3b, 0x0a, 0x0d, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c,
+ 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65,
+ 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x22,
+ 0x9c, 0x02, 0x0a, 0x13, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x75, 0x6c, 0x6c, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f,
+ 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73,
+ 0x73, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f,
+ 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65,
+ 0x73, 0x73, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73,
+ 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x65, 0x72, 0x72, 0x6f,
+ 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f,
+ 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x70,
+ 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x43,
+ 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
+ 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x2f,
+ 0x0a, 0x0d, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12,
+ 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22,
+ 0xe7, 0x01, 0x0a, 0x13, 0x54, 0x61, 0x6c, 0x6f, 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+ 0x6f, 0x6e, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x35, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x54,
+ 0x61, 0x6c, 0x6f, 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x70,
+ 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x98,
+ 0x01, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61,
+ 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x75, 0x74,
+ 0x68, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a,
+ 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x10, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x65,
+ 0x66, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0xc9, 0x01, 0x0a, 0x1a, 0x53, 0x63,
+ 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65,
+ 0x6d, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+ 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x06, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x73, 0x70,
+ 0x65, 0x63, 0x73, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x46, 0x0a,
+ 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f,
+ 0x77, 0x6e, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d,
+ 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x61, 0x63, 0x68,
+ 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x10, 0x03, 0x2a, 0x46, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41,
+ 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e,
+ 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49,
+ 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x10,
+ 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x2a, 0x7a, 0x0a,
+ 0x0f, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x50, 0x68, 0x61, 0x73, 0x65,
+ 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0d, 0x0a,
+ 0x09, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x55, 0x70, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b,
+ 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x12, 0x0b, 0x0a,
+ 0x07, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x65,
+ 0x73, 0x74, 0x72, 0x6f, 0x79, 0x69, 0x6e, 0x67, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x61,
+ 0x69, 0x6c, 0x65, 0x64, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x10, 0x06, 0x2a, 0x48, 0x0a, 0x0d, 0x43, 0x6f, 0x6e,
+ 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x6e,
+ 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x00,
+ 0x12, 0x08, 0x0a, 0x04, 0x45, 0x74, 0x63, 0x64, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x57, 0x69,
+ 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x10, 0x02, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
+ 0x6d, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6f, 0x6d, 0x6e,
+ 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x6d, 0x6e,
+ 0x69, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_omni_specs_omni_proto_rawDescOnce sync.Once
+ file_omni_specs_omni_proto_rawDescData = file_omni_specs_omni_proto_rawDesc
+)
+
+func file_omni_specs_omni_proto_rawDescGZIP() []byte {
+ file_omni_specs_omni_proto_rawDescOnce.Do(func() {
+ file_omni_specs_omni_proto_rawDescData = protoimpl.X.CompressGZIP(file_omni_specs_omni_proto_rawDescData)
+ })
+ return file_omni_specs_omni_proto_rawDescData
+}
+
+var file_omni_specs_omni_proto_enumTypes = make([]protoimpl.EnumInfo, 14)
+var file_omni_specs_omni_proto_msgTypes = make([]protoimpl.MessageInfo, 84)
+var file_omni_specs_omni_proto_goTypes = []interface{}{
+ (ConfigApplyStatus)(0), // 0: specs.ConfigApplyStatus
+ (MachineSetPhase)(0), // 1: specs.MachineSetPhase
+ (ConditionType)(0), // 2: specs.ConditionType
+ (MachineStatusSpec_Role)(0), // 3: specs.MachineStatusSpec.Role
+ (EtcdBackupStatusSpec_Status)(0), // 4: specs.EtcdBackupStatusSpec.Status
+ (ClusterMachineStatusSpec_Stage)(0), // 5: specs.ClusterMachineStatusSpec.Stage
+ (ClusterStatusSpec_Phase)(0), // 6: specs.ClusterStatusSpec.Phase
+ (MachineSetSpec_UpdateStrategy)(0), // 7: specs.MachineSetSpec.UpdateStrategy
+ (MachineSetSpec_MachineClass_AllocationType)(0), // 8: specs.MachineSetSpec.MachineClass.AllocationType
+ (TalosUpgradeStatusSpec_Phase)(0), // 9: specs.TalosUpgradeStatusSpec.Phase
+ (ControlPlaneStatusSpec_Condition_Status)(0), // 10: specs.ControlPlaneStatusSpec.Condition.Status
+ (ControlPlaneStatusSpec_Condition_Severity)(0), // 11: specs.ControlPlaneStatusSpec.Condition.Severity
+ (KubernetesUpgradeStatusSpec_Phase)(0), // 12: specs.KubernetesUpgradeStatusSpec.Phase
+ (SchematicConfigurationSpec_Target)(0), // 13: specs.SchematicConfigurationSpec.Target
+ (*MachineSpec)(nil), // 14: specs.MachineSpec
+ (*MachineStatusSpec)(nil), // 15: specs.MachineStatusSpec
+ (*TalosConfigSpec)(nil), // 16: specs.TalosConfigSpec
+ (*ClusterSpec)(nil), // 17: specs.ClusterSpec
+ (*EtcdBackupConf)(nil), // 18: specs.EtcdBackupConf
+ (*EtcdBackupEncryptionSpec)(nil), // 19: specs.EtcdBackupEncryptionSpec
+ (*EtcdBackupHeader)(nil), // 20: specs.EtcdBackupHeader
+ (*EtcdBackupSpec)(nil), // 21: specs.EtcdBackupSpec
+ (*BackupDataSpec)(nil), // 22: specs.BackupDataSpec
+ (*EtcdBackupS3ConfSpec)(nil), // 23: specs.EtcdBackupS3ConfSpec
+ (*EtcdBackupStatusSpec)(nil), // 24: specs.EtcdBackupStatusSpec
+ (*EtcdManualBackupSpec)(nil), // 25: specs.EtcdManualBackupSpec
+ (*EtcdBackupStoreStatusSpec)(nil), // 26: specs.EtcdBackupStoreStatusSpec
+ (*EtcdBackupOverallStatusSpec)(nil), // 27: specs.EtcdBackupOverallStatusSpec
+ (*ClusterMachineSpec)(nil), // 28: specs.ClusterMachineSpec
+ (*ClusterMachineConfigPatchesSpec)(nil), // 29: specs.ClusterMachineConfigPatchesSpec
+ (*ClusterMachineTalosVersionSpec)(nil), // 30: specs.ClusterMachineTalosVersionSpec
+ (*ClusterMachineConfigSpec)(nil), // 31: specs.ClusterMachineConfigSpec
+ (*RedactedClusterMachineConfigSpec)(nil), // 32: specs.RedactedClusterMachineConfigSpec
+ (*ClusterMachineIdentitySpec)(nil), // 33: specs.ClusterMachineIdentitySpec
+ (*ClusterMachineTemplateSpec)(nil), // 34: specs.ClusterMachineTemplateSpec
+ (*ClusterMachineStatusSpec)(nil), // 35: specs.ClusterMachineStatusSpec
+ (*Machines)(nil), // 36: specs.Machines
+ (*ClusterStatusSpec)(nil), // 37: specs.ClusterStatusSpec
+ (*ClusterUUID)(nil), // 38: specs.ClusterUUID
+ (*ClusterConfigVersionSpec)(nil), // 39: specs.ClusterConfigVersionSpec
+ (*ClusterMachineConfigStatusSpec)(nil), // 40: specs.ClusterMachineConfigStatusSpec
+ (*ClusterBootstrapStatusSpec)(nil), // 41: specs.ClusterBootstrapStatusSpec
+ (*ClusterSecretsSpec)(nil), // 42: specs.ClusterSecretsSpec
+ (*LoadBalancerConfigSpec)(nil), // 43: specs.LoadBalancerConfigSpec
+ (*LoadBalancerStatusSpec)(nil), // 44: specs.LoadBalancerStatusSpec
+ (*KubernetesVersionSpec)(nil), // 45: specs.KubernetesVersionSpec
+ (*TalosVersionSpec)(nil), // 46: specs.TalosVersionSpec
+ (*InstallationMediaSpec)(nil), // 47: specs.InstallationMediaSpec
+ (*ConfigPatchSpec)(nil), // 48: specs.ConfigPatchSpec
+ (*MachineSetSpec)(nil), // 49: specs.MachineSetSpec
+ (*TalosUpgradeStatusSpec)(nil), // 50: specs.TalosUpgradeStatusSpec
+ (*MachineSetStatusSpec)(nil), // 51: specs.MachineSetStatusSpec
+ (*MachineSetNodeSpec)(nil), // 52: specs.MachineSetNodeSpec
+ (*MachineLabelsSpec)(nil), // 53: specs.MachineLabelsSpec
+ (*MachineStatusSnapshotSpec)(nil), // 54: specs.MachineStatusSnapshotSpec
+ (*ControlPlaneStatusSpec)(nil), // 55: specs.ControlPlaneStatusSpec
+ (*ClusterEndpointSpec)(nil), // 56: specs.ClusterEndpointSpec
+ (*KubernetesStatusSpec)(nil), // 57: specs.KubernetesStatusSpec
+ (*KubernetesUpgradeStatusSpec)(nil), // 58: specs.KubernetesUpgradeStatusSpec
+ (*KubernetesUpgradeManifestStatusSpec)(nil), // 59: specs.KubernetesUpgradeManifestStatusSpec
+ (*DestroyStatusSpec)(nil), // 60: specs.DestroyStatusSpec
+ (*OngoingTaskSpec)(nil), // 61: specs.OngoingTaskSpec
+ (*ClusterMachineEncryptionKeySpec)(nil), // 62: specs.ClusterMachineEncryptionKeySpec
+ (*ExposedServiceSpec)(nil), // 63: specs.ExposedServiceSpec
+ (*FeaturesConfigSpec)(nil), // 64: specs.FeaturesConfigSpec
+ (*EtcdBackupSettings)(nil), // 65: specs.EtcdBackupSettings
+ (*MachineClassSpec)(nil), // 66: specs.MachineClassSpec
+ (*MachineConfigGenOptionsSpec)(nil), // 67: specs.MachineConfigGenOptionsSpec
+ (*EtcdAuditResultSpec)(nil), // 68: specs.EtcdAuditResultSpec
+ (*KubeconfigSpec)(nil), // 69: specs.KubeconfigSpec
+ (*KubernetesUsageSpec)(nil), // 70: specs.KubernetesUsageSpec
+ (*ImagePullRequestSpec)(nil), // 71: specs.ImagePullRequestSpec
+ (*ImagePullStatusSpec)(nil), // 72: specs.ImagePullStatusSpec
+ (*SchematicSpec)(nil), // 73: specs.SchematicSpec
+ (*TalosExtensionsSpec)(nil), // 74: specs.TalosExtensionsSpec
+ (*SchematicConfigurationSpec)(nil), // 75: specs.SchematicConfigurationSpec
+ (*MachineStatusSpec_HardwareStatus)(nil), // 76: specs.MachineStatusSpec.HardwareStatus
+ (*MachineStatusSpec_NetworkStatus)(nil), // 77: specs.MachineStatusSpec.NetworkStatus
+ (*MachineStatusSpec_PlatformMetadata)(nil), // 78: specs.MachineStatusSpec.PlatformMetadata
+ (*MachineStatusSpec_Schematic)(nil), // 79: specs.MachineStatusSpec.Schematic
+ nil, // 80: specs.MachineStatusSpec.ImageLabelsEntry
+ (*MachineStatusSpec_HardwareStatus_Processor)(nil), // 81: specs.MachineStatusSpec.HardwareStatus.Processor
+ (*MachineStatusSpec_HardwareStatus_MemoryModule)(nil), // 82: specs.MachineStatusSpec.HardwareStatus.MemoryModule
+ (*MachineStatusSpec_HardwareStatus_BlockDevice)(nil), // 83: specs.MachineStatusSpec.HardwareStatus.BlockDevice
+ (*MachineStatusSpec_NetworkStatus_NetworkLinkStatus)(nil), // 84: specs.MachineStatusSpec.NetworkStatus.NetworkLinkStatus
+ (*ClusterSpec_Features)(nil), // 85: specs.ClusterSpec.Features
+ (*MachineSetSpec_MachineClass)(nil), // 86: specs.MachineSetSpec.MachineClass
+ (*MachineSetSpec_BootstrapSpec)(nil), // 87: specs.MachineSetSpec.BootstrapSpec
+ (*MachineSetSpec_RollingUpdateStrategyConfig)(nil), // 88: specs.MachineSetSpec.RollingUpdateStrategyConfig
+ (*MachineSetSpec_UpdateStrategyConfig)(nil), // 89: specs.MachineSetSpec.UpdateStrategyConfig
+ (*ControlPlaneStatusSpec_Condition)(nil), // 90: specs.ControlPlaneStatusSpec.Condition
+ (*KubernetesStatusSpec_NodeStatus)(nil), // 91: specs.KubernetesStatusSpec.NodeStatus
+ (*KubernetesStatusSpec_StaticPodStatus)(nil), // 92: specs.KubernetesStatusSpec.StaticPodStatus
+ (*KubernetesStatusSpec_NodeStaticPods)(nil), // 93: specs.KubernetesStatusSpec.NodeStaticPods
+ (*KubernetesUsageSpec_Quantity)(nil), // 94: specs.KubernetesUsageSpec.Quantity
+ (*KubernetesUsageSpec_Pod)(nil), // 95: specs.KubernetesUsageSpec.Pod
+ (*ImagePullRequestSpec_NodeImageList)(nil), // 96: specs.ImagePullRequestSpec.NodeImageList
+ (*TalosExtensionsSpec_Info)(nil), // 97: specs.TalosExtensionsSpec.Info
+ (*durationpb.Duration)(nil), // 98: google.protobuf.Duration
+ (*timestamppb.Timestamp)(nil), // 99: google.protobuf.Timestamp
+ (*machine.MachineStatusEvent)(nil), // 100: machine.MachineStatusEvent
+}
+var file_omni_specs_omni_proto_depIdxs = []int32{
+ 76, // 0: specs.MachineStatusSpec.hardware:type_name -> specs.MachineStatusSpec.HardwareStatus
+ 77, // 1: specs.MachineStatusSpec.network:type_name -> specs.MachineStatusSpec.NetworkStatus
+ 3, // 2: specs.MachineStatusSpec.role:type_name -> specs.MachineStatusSpec.Role
+ 78, // 3: specs.MachineStatusSpec.platform_metadata:type_name -> specs.MachineStatusSpec.PlatformMetadata
+ 80, // 4: specs.MachineStatusSpec.image_labels:type_name -> specs.MachineStatusSpec.ImageLabelsEntry
+ 79, // 5: specs.MachineStatusSpec.schematic:type_name -> specs.MachineStatusSpec.Schematic
+ 85, // 6: specs.ClusterSpec.features:type_name -> specs.ClusterSpec.Features
+ 18, // 7: specs.ClusterSpec.backup_configuration:type_name -> specs.EtcdBackupConf
+ 98, // 8: specs.EtcdBackupConf.interval:type_name -> google.protobuf.Duration
+ 99, // 9: specs.EtcdBackupSpec.created_at:type_name -> google.protobuf.Timestamp
+ 98, // 10: specs.BackupDataSpec.interval:type_name -> google.protobuf.Duration
+ 4, // 11: specs.EtcdBackupStatusSpec.status:type_name -> specs.EtcdBackupStatusSpec.Status
+ 99, // 12: specs.EtcdBackupStatusSpec.last_backup_time:type_name -> google.protobuf.Timestamp
+ 99, // 13: specs.EtcdBackupStatusSpec.last_backup_attempt:type_name -> google.protobuf.Timestamp
+ 99, // 14: specs.EtcdManualBackupSpec.backup_at:type_name -> google.protobuf.Timestamp
+ 24, // 15: specs.EtcdBackupOverallStatusSpec.last_backup_status:type_name -> specs.EtcdBackupStatusSpec
+ 5, // 16: specs.ClusterMachineStatusSpec.stage:type_name -> specs.ClusterMachineStatusSpec.Stage
+ 0, // 17: specs.ClusterMachineStatusSpec.config_apply_status:type_name -> specs.ConfigApplyStatus
+ 36, // 18: specs.ClusterStatusSpec.machines:type_name -> specs.Machines
+ 6, // 19: specs.ClusterStatusSpec.phase:type_name -> specs.ClusterStatusSpec.Phase
+ 7, // 20: specs.MachineSetSpec.update_strategy:type_name -> specs.MachineSetSpec.UpdateStrategy
+ 86, // 21: specs.MachineSetSpec.machine_class:type_name -> specs.MachineSetSpec.MachineClass
+ 87, // 22: specs.MachineSetSpec.bootstrap_spec:type_name -> specs.MachineSetSpec.BootstrapSpec
+ 7, // 23: specs.MachineSetSpec.delete_strategy:type_name -> specs.MachineSetSpec.UpdateStrategy
+ 89, // 24: specs.MachineSetSpec.update_strategy_config:type_name -> specs.MachineSetSpec.UpdateStrategyConfig
+ 89, // 25: specs.MachineSetSpec.delete_strategy_config:type_name -> specs.MachineSetSpec.UpdateStrategyConfig
+ 9, // 26: specs.TalosUpgradeStatusSpec.phase:type_name -> specs.TalosUpgradeStatusSpec.Phase
+ 1, // 27: specs.MachineSetStatusSpec.phase:type_name -> specs.MachineSetPhase
+ 36, // 28: specs.MachineSetStatusSpec.machines:type_name -> specs.Machines
+ 86, // 29: specs.MachineSetStatusSpec.machine_class:type_name -> specs.MachineSetSpec.MachineClass
+ 100, // 30: specs.MachineStatusSnapshotSpec.machine_status:type_name -> machine.MachineStatusEvent
+ 90, // 31: specs.ControlPlaneStatusSpec.conditions:type_name -> specs.ControlPlaneStatusSpec.Condition
+ 91, // 32: specs.KubernetesStatusSpec.nodes:type_name -> specs.KubernetesStatusSpec.NodeStatus
+ 93, // 33: specs.KubernetesStatusSpec.static_pods:type_name -> specs.KubernetesStatusSpec.NodeStaticPods
+ 12, // 34: specs.KubernetesUpgradeStatusSpec.phase:type_name -> specs.KubernetesUpgradeStatusSpec.Phase
+ 50, // 35: specs.OngoingTaskSpec.talos_upgrade:type_name -> specs.TalosUpgradeStatusSpec
+ 58, // 36: specs.OngoingTaskSpec.kubernetes_upgrade:type_name -> specs.KubernetesUpgradeStatusSpec
+ 60, // 37: specs.OngoingTaskSpec.destroy:type_name -> specs.DestroyStatusSpec
+ 65, // 38: specs.FeaturesConfigSpec.etcd_backup_settings:type_name -> specs.EtcdBackupSettings
+ 98, // 39: specs.EtcdBackupSettings.tick_interval:type_name -> google.protobuf.Duration
+ 98, // 40: specs.EtcdBackupSettings.min_interval:type_name -> google.protobuf.Duration
+ 98, // 41: specs.EtcdBackupSettings.max_interval:type_name -> google.protobuf.Duration
+ 94, // 42: specs.KubernetesUsageSpec.cpu:type_name -> specs.KubernetesUsageSpec.Quantity
+ 94, // 43: specs.KubernetesUsageSpec.mem:type_name -> specs.KubernetesUsageSpec.Quantity
+ 94, // 44: specs.KubernetesUsageSpec.storage:type_name -> specs.KubernetesUsageSpec.Quantity
+ 95, // 45: specs.KubernetesUsageSpec.pods:type_name -> specs.KubernetesUsageSpec.Pod
+ 96, // 46: specs.ImagePullRequestSpec.node_image_list:type_name -> specs.ImagePullRequestSpec.NodeImageList
+ 97, // 47: specs.TalosExtensionsSpec.items:type_name -> specs.TalosExtensionsSpec.Info
+ 13, // 48: specs.SchematicConfigurationSpec.target:type_name -> specs.SchematicConfigurationSpec.Target
+ 81, // 49: specs.MachineStatusSpec.HardwareStatus.processors:type_name -> specs.MachineStatusSpec.HardwareStatus.Processor
+ 82, // 50: specs.MachineStatusSpec.HardwareStatus.memory_modules:type_name -> specs.MachineStatusSpec.HardwareStatus.MemoryModule
+ 83, // 51: specs.MachineStatusSpec.HardwareStatus.blockdevices:type_name -> specs.MachineStatusSpec.HardwareStatus.BlockDevice
+ 84, // 52: specs.MachineStatusSpec.NetworkStatus.network_links:type_name -> specs.MachineStatusSpec.NetworkStatus.NetworkLinkStatus
+ 8, // 53: specs.MachineSetSpec.MachineClass.allocation_type:type_name -> specs.MachineSetSpec.MachineClass.AllocationType
+ 88, // 54: specs.MachineSetSpec.UpdateStrategyConfig.rolling:type_name -> specs.MachineSetSpec.RollingUpdateStrategyConfig
+ 2, // 55: specs.ControlPlaneStatusSpec.Condition.type:type_name -> specs.ConditionType
+ 10, // 56: specs.ControlPlaneStatusSpec.Condition.status:type_name -> specs.ControlPlaneStatusSpec.Condition.Status
+ 11, // 57: specs.ControlPlaneStatusSpec.Condition.severity:type_name -> specs.ControlPlaneStatusSpec.Condition.Severity
+ 92, // 58: specs.KubernetesStatusSpec.NodeStaticPods.static_pods:type_name -> specs.KubernetesStatusSpec.StaticPodStatus
+ 59, // [59:59] is the sub-list for method output_type
+ 59, // [59:59] is the sub-list for method input_type
+ 59, // [59:59] is the sub-list for extension type_name
+ 59, // [59:59] is the sub-list for extension extendee
+ 0, // [0:59] is the sub-list for field type_name
+}
+
+func init() { file_omni_specs_omni_proto_init() }
+func file_omni_specs_omni_proto_init() {
+ if File_omni_specs_omni_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_omni_specs_omni_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TalosConfigSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EtcdBackupConf); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EtcdBackupEncryptionSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EtcdBackupHeader); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EtcdBackupSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BackupDataSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EtcdBackupS3ConfSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EtcdBackupStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EtcdManualBackupSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EtcdBackupStoreStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EtcdBackupOverallStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterMachineSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterMachineConfigPatchesSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterMachineTalosVersionSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterMachineConfigSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RedactedClusterMachineConfigSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterMachineIdentitySpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterMachineTemplateSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterMachineStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Machines); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterUUID); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterConfigVersionSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterMachineConfigStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterBootstrapStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterSecretsSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*LoadBalancerConfigSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*LoadBalancerStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubernetesVersionSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TalosVersionSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*InstallationMediaSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ConfigPatchSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineSetSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TalosUpgradeStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineSetStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineSetNodeSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineLabelsSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineStatusSnapshotSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ControlPlaneStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterEndpointSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubernetesStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubernetesUpgradeStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubernetesUpgradeManifestStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DestroyStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*OngoingTaskSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterMachineEncryptionKeySpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ExposedServiceSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*FeaturesConfigSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EtcdBackupSettings); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineClassSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineConfigGenOptionsSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EtcdAuditResultSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubeconfigSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubernetesUsageSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ImagePullRequestSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ImagePullStatusSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SchematicSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TalosExtensionsSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SchematicConfigurationSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineStatusSpec_HardwareStatus); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineStatusSpec_NetworkStatus); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineStatusSpec_PlatformMetadata); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineStatusSpec_Schematic); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineStatusSpec_HardwareStatus_Processor); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineStatusSpec_HardwareStatus_MemoryModule); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineStatusSpec_HardwareStatus_BlockDevice); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineStatusSpec_NetworkStatus_NetworkLinkStatus); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterSpec_Features); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineSetSpec_MachineClass); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineSetSpec_BootstrapSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineSetSpec_RollingUpdateStrategyConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MachineSetSpec_UpdateStrategyConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ControlPlaneStatusSpec_Condition); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubernetesStatusSpec_NodeStatus); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubernetesStatusSpec_StaticPodStatus); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubernetesStatusSpec_NodeStaticPods); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubernetesUsageSpec_Quantity); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubernetesUsageSpec_Pod); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ImagePullRequestSpec_NodeImageList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TalosExtensionsSpec_Info); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_omni_specs_omni_proto_msgTypes[47].OneofWrappers = []interface{}{
+ (*OngoingTaskSpec_TalosUpgrade)(nil),
+ (*OngoingTaskSpec_KubernetesUpgrade)(nil),
+ (*OngoingTaskSpec_Destroy)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_omni_specs_omni_proto_rawDesc,
+ NumEnums: 14,
+ NumMessages: 84,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_omni_specs_omni_proto_goTypes,
+ DependencyIndexes: file_omni_specs_omni_proto_depIdxs,
+ EnumInfos: file_omni_specs_omni_proto_enumTypes,
+ MessageInfos: file_omni_specs_omni_proto_msgTypes,
+ }.Build()
+ File_omni_specs_omni_proto = out.File
+ file_omni_specs_omni_proto_rawDesc = nil
+ file_omni_specs_omni_proto_goTypes = nil
+ file_omni_specs_omni_proto_depIdxs = nil
+}
diff --git a/client/api/omni/specs/omni.proto b/client/api/omni/specs/omni.proto
new file mode 100644
index 000000000..9c9b129d8
--- /dev/null
+++ b/client/api/omni/specs/omni.proto
@@ -0,0 +1,933 @@
+syntax = "proto3";
+package specs;
+
+option go_package = "github.com/siderolabs/omni/client/api/omni/specs";
+
+import "talos/machine/machine.proto";
+import "google/protobuf/timestamp.proto";
+import "google/protobuf/duration.proto";
+
+// MachineSpec describes a Machine.
+message MachineSpec {
+ // IP which can be used to access Talos API.
+ string management_address = 1;
+ // Connected is copied from the corresponding Link resource.
+ bool connected = 2;
+ reserved 3;
+ reserved 4;
+}
+
+// MachineStatusSpec describes state of a Machine.
+message MachineStatusSpec {
+ // HardwareStatus describes machine hardware status.
+ message HardwareStatus {
+ // Processor describes machine CPU.
+ message Processor {
+ // Number of cores.
+ uint32 core_count = 1;
+ // Number of threads.
+ uint32 thread_count = 2;
+ // CPU frequency in MHz.
+ uint32 frequency = 3;
+ // CPU manufacturer and model.
+ string description = 4;
+ // CPU manufacturer.
+ string manufacturer = 5;
+ }
+
+ // MemoryModule describes machine memory.
+ message MemoryModule {
+ // Size of memory in MB.
+ uint32 size_mb = 1;
+ // Memory manufacturer and model.
+ string description = 2;
+ }
+
+ // BlockDevice describes a block device.
+ message BlockDevice {
+ // Size indicates the disk size in bytes.
+ uint64 size = 1;
+ // Model idicates the disk model.
+ string model = 2;
+ // Linux blockdevice name (e.g. `/dev/sda`).
+ string linux_name = 3;
+ // Name as in `/sys/block//device/name`.
+ string name = 4;
+ // Serial as in `/sys/block//device/serial`.
+ string serial = 5;
+ // Uuid as in `/sys/block//device/uuid`.
+ string uuid = 7;
+ // Wwid as in `/sys/block//device/wwid`.
+ string wwid = 8;
+ // Type is a type of the disk: nvme, ssd, hdd, sd card.
+ string type = 9;
+ // BusPath is the bus path of the disk.
+ string bus_path = 10;
+ // SystemDisk is the system disk flag.
+ bool system_disk = 11;
+ }
+
+ // CPU information.
+ repeated Processor processors = 1;
+ // Memory information.
+ repeated MemoryModule memory_modules = 2;
+ // Blockdevice information.
+ repeated BlockDevice blockdevices = 3;
+ // Machine architecture.
+ string arch = 4;
+ }
+
+ // NetworkStatus describes the status of a machine network .
+ message NetworkStatus {
+ // Physical network interfaces.
+ message NetworkLinkStatus {
+ // Linux interface name.
+ string linux_name = 1;
+ // MAC address.
+ string hardware_address = 2;
+ // Speed in Mbps.
+ uint32 speed_mbps = 3;
+ // Link status.
+ bool link_up = 4;
+ // Hardware description.
+ string description = 5;
+ };
+
+ // Current machine hostname.
+ string hostname = 1;
+ // Current machine domainname.
+ string domainname = 2;
+ // List of machine IPs.
+ repeated string addresses = 3;
+ // List of default gateway IPs.
+ repeated string default_gateways = 4;
+ // List of physical network interfaces.
+ repeated NetworkLinkStatus network_links = 5;
+ }
+
+ // PlatformMetadata describes platform-specific information.
+ message PlatformMetadata {
+ // Platform is the name of the platform (e.g. `aws`, `gcp`, `azure`).
+ string platform = 1;
+ // Hostname is the hostname of the machine.
+ string hostname = 2;
+ // Region (in the cloud).
+ string region = 3;
+ // Availability zone (in the cloud).
+ string zone = 4;
+ // Instance type (in the cloud).
+ string instance_type = 5;
+ // Instance ID (in the cloud).
+ string instance_id = 6;
+ // Provider ID (for the Node resource).
+ string provider_id = 7;
+ // Spot instance flag.
+ bool spot = 8;
+ }
+
+ message Schematic {
+ // Id is the image factory schematic id used for the image generation.
+ string id = 1;
+
+ // Invalid marks the machine as having extensions installed bypassing image factory.
+ // Which makes it impossible to detect schematic id and manage the image generation
+ // using image factory.
+ bool invalid = 2;
+ }
+
+ // Talos version.
+ string talos_version = 1;
+
+ // Hardware-related information.
+ HardwareStatus hardware = 2;
+
+ // Network-related information.
+ NetworkStatus network = 3;
+
+ // Set if the last poll resulted in an error.
+ string last_error = 4;
+
+ // Management address is copied from the machine resource.
+ string management_address = 5;
+
+ // Connected is copied from the corresponding Link resource.
+ bool connected = 6;
+
+ // Maintenance flag means that the node is running in the maintenance mode.
+ bool maintenance = 7;
+
+ reserved 8;
+
+ // Cluster is the name of the cluster the machine belongs to.
+ string cluster = 9;
+
+ enum Role {
+ NONE = 0;
+ CONTROL_PLANE = 1;
+ WORKER = 2;
+ }
+
+ // Role is the role of the machine in the cluster.
+ Role role = 10;
+
+ // Platform-specific information.
+ PlatformMetadata platform_metadata = 11;
+
+ reserved 12;
+
+ map image_labels = 13;
+
+ Schematic schematic = 14;
+}
+
+// TalosConfigSpec describes a Talos cluster config.
+message TalosConfigSpec {
+ // Ca certificate authority.
+ string ca = 1;
+
+ // Crt certificate.
+ string crt = 2;
+
+ // Key certificate key.
+ string key = 3;
+}
+
+// Cluster describes a Talos cluster.
+message ClusterSpec {
+ message Features {
+ // EnableWorkloadProxy enables workload proxy.
+ bool enable_workload_proxy = 1;
+ // DiskEncryption enables disk encryption on all nodes.
+ bool disk_encryption = 2;
+ }
+
+ // InstallImage the installer image to use.
+ string install_image = 1 [deprecated = true];
+
+ // KubernetesVersion to use on the node.
+ string kubernetes_version = 2;
+
+ // TalosVersion cluster wide Talos version.
+ string talos_version = 3;
+
+ // Features are the cluster features.
+ Features features = 4;
+
+ // Backup describes the backup configuration. If it set to null that means that backups are disabled for this cluster.
+ EtcdBackupConf backup_configuration = 5;
+}
+
+// EtcdBackupConf describes the backup configuration.
+message EtcdBackupConf {
+ // Interval is the interval between backups. If not set, backups are disabled.
+ google.protobuf.Duration interval = 1;
+ // Enabled etcd backups.
+ bool enabled = 2;
+}
+
+// EtcdBackupEncryptionSpec describes the backup encryption.
+message EtcdBackupEncryptionSpec {
+ bytes encryption_key = 1;
+}
+
+// EtcdBackupHeader describes the backup header.
+message EtcdBackupHeader {
+ // Version is the version of the backup creator.
+ int64 version = 1;
+}
+
+// EtcdBackupSpec describes the backup.
+message EtcdBackupSpec {
+ // CreatedAt is the time when the backup was created.
+ google.protobuf.Timestamp created_at = 1;
+
+ // Snapshot is the snapshot file name.
+ string snapshot = 2;
+
+ // Size specifies the etcd backup size.
+ uint64 size = 3;
+}
+
+// BackupDataSpec describes the data needed for etcd backup.
+message BackupDataSpec {
+ google.protobuf.Duration interval = 1;
+ string cluster_uuid = 2;
+ bytes encryption_key = 3;
+ string aes_cbc_encryption_secret = 4;
+ string secretbox_encryption_secret = 5;
+}
+
+// EtcdBackupS3ConfSpec describes the S3 configuration for the backup process.
+message EtcdBackupS3ConfSpec {
+ string bucket = 1;
+ string region = 2;
+ string endpoint = 3;
+ string access_key_id = 4;
+ string secret_access_key = 5;
+ string session_token = 6;
+}
+
+// EtcdBackupStatus describes cluster last backup status.
+message EtcdBackupStatusSpec {
+ enum Status {
+ Unknown = 0;
+ Ok = 1;
+ Error = 2;
+ Running = 3;
+ }
+
+ // Status is the status of the last backup.
+ Status status = 1;
+
+ // Error is the error message if the backup failed.
+ string error = 2;
+
+ // LastBackupTime is the time of the last backup.
+ google.protobuf.Timestamp last_backup_time = 3;
+
+ // LastBackupAttempt is the time of the last backup attempt.
+ google.protobuf.Timestamp last_backup_attempt = 4;
+}
+
+// EtcdManualBackupSpec describes the manual backup request.
+message EtcdManualBackupSpec {
+ // BackupAt is the time when the backup should be created.
+ google.protobuf.Timestamp backup_at = 1;
+}
+
+// EtcdBackupStoreStatusSpec is internal resource that decribes store configuration name and configuration last error.
+message EtcdBackupStoreStatusSpec {
+ // ConfigurationName is the name of the configuration (disabled|local|s3).
+ string configuration_name = 1;
+
+ // ConfigurationError is the error message if the configuration is invalid.
+ string configuration_error = 2;
+}
+
+// EtcdBackupOverallStatusSpec describes the overall etcd backup system status.
+message EtcdBackupOverallStatusSpec {
+ // ConfigurationName is the name of the configuration (disabled|local|s3).
+ string configuration_name = 1;
+
+ // ConfigurationError is the error message if the configuration is invalid.
+ string configuration_error = 2;
+
+ // LastBackupStatus is the status of the last backup.
+ EtcdBackupStatusSpec last_backup_status = 3;
+}
+
+// ClusterMachineSpec describes a machine attached to a Cluster.
+message ClusterMachineSpec {
+ reserved 1;
+ // KubernetesVersion to use on the machine (copied from Cluster at the moment of creation).
+ string kubernetes_version = 2;
+}
+
+// ClusterMachineConfigPatchesSpec keeps the list of config patches to be applied on the machine.
+message ClusterMachineConfigPatchesSpec {
+ // List of patches combined from all sources, as a final list of patches to apply.
+ repeated string patches = 1;
+}
+
+// ClusterMachineTalosVersionSpec describes a machine Talos version and schematic.
+message ClusterMachineTalosVersionSpec {
+ string talos_version = 1;
+ string schematic_id = 2;
+}
+
+// ClusterMachineConfigSpec stores generated Talos node machine config.
+message ClusterMachineConfigSpec {
+ bytes data = 1;
+ string cluster_machine_version = 2;
+ string generation_error = 3;
+}
+
+// ClusterMachineConfigSpec stores generated Talos node machine config.
+message RedactedClusterMachineConfigSpec {
+ string data = 1;
+}
+
+// ClusterMachineIdentity keeps ClusterMachine related node information.
+message ClusterMachineIdentitySpec {
+ // NodeIdentity is Talos node identity from Identity resource.
+ string node_identity = 1;
+ // EtcdMemberId is the id of the node how it's represented in the etcd quorum.
+ uint64 etcd_member_id = 2;
+ // Nodename is the Kubernetes node name.
+ string nodename = 3;
+ // NodeIps are the IPs of the Kubernetes node.
+ repeated string node_ips = 8;
+}
+
+// ClusterMachineTemplateSpec
+message ClusterMachineTemplateSpec {
+ // InstallImage the installer image to use.
+ string install_image = 1;
+
+ // KubernetesVersion to use on the node.
+ string kubernetes_version = 2;
+
+ // InstallDisk Talos system disk.
+ string install_disk = 3;
+
+ // Patch represents machinery config patch.
+ string patch = 5;
+}
+
+enum ConfigApplyStatus {
+ UNKNOWN = 0;
+ PENDING = 1;
+ APPLIED = 2;
+ FAILED = 3;
+}
+
+// ClusterMachineStatusSpec
+message ClusterMachineStatusSpec {
+ // Ready is true if all services are healthy.
+ bool ready = 1;
+
+ enum Stage {
+ UNKNOWN = 0;
+ BOOTING = 1;
+ INSTALLING = 2;
+ UPGRADING = 6;
+ CONFIGURING = 3;
+ RUNNING = 4;
+ REBOOTING = 7;
+ SHUTTING_DOWN = 8;
+ BEFORE_DESTROY = 9;
+ DESTROYING = 5;
+ }
+
+ Stage stage = 2;
+
+ // ApidAvailable is true if the node is a control plane node and the apid service is healthy.
+ bool apid_available = 3;
+
+ bool config_up_to_date = 4;
+ string last_config_error = 5;
+
+ // Management address is copied from the machine status resource.
+ string management_address = 6;
+
+ ConfigApplyStatus config_apply_status = 7;
+}
+
+// Machines counts the number of machines in a set including health status.
+message Machines {
+ // Total machines currently allocated.
+ uint32 total = 1;
+ // Healthy machines.
+ uint32 healthy = 2;
+ // Connected represents the number of machines in a machine set connected to the wireguard network.
+ uint32 connected = 3;
+ // Requested machines count, same as total for manual allocation, may differ for machine class mode.
+ uint32 requested = 4;
+}
+
+// ClusterStatusSpec aggregates general information about a cluster.
+message ClusterStatusSpec {
+ // Cluster is available when at least one controlplane node has APId up.
+ bool available = 1;
+
+ Machines machines = 2;
+
+ enum Phase {
+ UNKNOWN = 0;
+ SCALING_UP = 1;
+ SCALING_DOWN = 2;
+ RUNNING = 3;
+ DESTROYING = 4;
+ }
+
+ Phase phase = 3;
+
+ bool ready = 4;
+ bool kubernetesAPIReady = 5;
+ bool controlplaneReady = 6;
+ bool has_connected_control_planes = 7;
+}
+
+// ClusterUUID keeps the UUID of the cluster.
+message ClusterUUID {
+ string uuid = 1;
+}
+
+// ClusterConfigVersion keeps the version of Talos which was used for initial config generation.
+message ClusterConfigVersionSpec {
+ string version = 1;
+}
+
+// ClusterMachineConfigStatusSpec machine configuration status spec.
+message ClusterMachineConfigStatusSpec {
+ reserved 1;
+ reserved 2;
+
+ string cluster_machine_config_version = 3;
+ string cluster_machine_version = 4;
+ string cluster_machine_config_sha256 = 5;
+ string last_config_error = 6;
+ string talos_version = 7;
+ string schematic_id = 8;
+}
+
+// ClusterBootstrapStatusSpec keeps track of bootstrap calls for a cluster.
+message ClusterBootstrapStatusSpec {
+ bool bootstrapped = 1;
+}
+
+// ClusterSecretsSpec describes cluster secrets.
+message ClusterSecretsSpec {
+ // Bytes holding serialized cluster secrets.
+ bytes data = 1;
+}
+
+// LoadBalancerConfigSpec describes the configuration of a load balancer.
+message LoadBalancerConfigSpec {
+ reserved 1;
+ string bind_port = 2;
+ // Full URL of the loadbalancer inside Omni environment.
+ string siderolink_endpoint = 4;
+ // IP adresses of the endpoints
+ repeated string endpoints = 3;
+}
+
+// LoadBalancerStatusSpec reflects the status of a load balancer.
+message LoadBalancerStatusSpec {
+ reserved 1;
+ reserved 2;
+ bool healthy = 3;
+ bool stopped = 4;
+}
+
+// KubernetesVersionSpec represents an available Kubernetes version.
+message KubernetesVersionSpec {
+ string version = 1;
+}
+
+// TalosVersionSpec represents an available Talos version.
+message TalosVersionSpec {
+ string version = 1;
+ repeated string compatible_kubernetes_versions = 2;
+}
+
+// InstallationMediaSpec resource describes a Talos installation media that can be generated by the image factory. It also describes the necessary parameters to be passed to the image factory.
+message InstallationMediaSpec {
+ // Name is the human readable name of the image.
+ string name = 1;
+ string architecture = 2;
+ string profile = 3;
+ string contentType = 6;
+ // SrcFilePrefix defines the src filename to download the image from.
+ string src_file_prefix = 7;
+ // DestFilePrefix defines the dest filename to download the image to.
+ string dest_file_prefix = 8;
+ // Extension defines the dest filename extension.
+ string extension = 9;
+ // NoSecureBoot means that the installation media doesn't support SecureBoot generation.
+ bool no_secure_boot = 11;
+}
+
+// ConfigPatchSpec represents the machine config patch.
+message ConfigPatchSpec {
+ string data = 1;
+}
+
+// MachineSetPhaseSpec is machine set phase.
+enum MachineSetPhase {
+ Unknown = 0;
+ ScalingUp = 1;
+ ScalingDown = 2;
+ Running = 3;
+ Destroying = 4;
+ Failed = 5;
+ Reconfiguring = 6;
+}
+
+// MachineSetSpec describes the cluster machine group.
+message MachineSetSpec {
+ // MachineClass defines the machine class configuration.
+ message MachineClass {
+ enum AllocationType {
+ // Static uses the count defined in the count field.
+ Static = 0;
+ // Unlimited allocates all available machines from the machine class.
+ Unlimited = 1;
+ }
+
+ // Name defines the machine class id to select the machines from.
+ string name = 1;
+ // MachineCount defines fixed amount of the machines to allocated from the machine class.
+ uint32 machine_count = 2;
+ // AllocationType defines special constants for the amount of machines to be allocated.
+ AllocationType allocation_type = 3;
+ }
+
+ // BootstrapSpec defines the bootstrap spec for the control plane machine set.
+ // It can contain a reference to an etcd backup, which can be used to bootstrap etcd.
+ message BootstrapSpec {
+ // ClusterUuid is the UUID of the cluster to bootstrap. It can be obtained via `omnictl get clusteruuid `
+ string cluster_uuid = 1;
+
+ // Snapshot is the file name of the etcd snapshot to restore from. It follows the format similar to `FFFFFFFFFFFFFFFF.snapshot`.
+ string snapshot = 2;
+ }
+
+ // UpdateStrategy defines the update strategy of the machine set.
+ enum UpdateStrategy {
+ Unset = 0;
+ Rolling = 1;
+ }
+
+ // RollingUpdateStrategyConfig defines the rolling update strategy configuration.
+ message RollingUpdateStrategyConfig {
+ // MaxParallelism is the maximum number of machines that can be processed in parallel.
+ // When unset or set to 0, it defaults to 1.
+ uint32 max_parallelism = 1;
+ }
+
+ // UpdateConfig defines the update configuration.
+ message UpdateStrategyConfig {
+ // Rolling is the rolling update configuration.
+ // Used only when the UpdateStrategy is set to Rolling.
+ RollingUpdateStrategyConfig rolling = 1;
+ }
+
+ // UpdateStrategy is the update strategy of the machine set.
+ UpdateStrategy update_strategy = 1;
+
+ // MachineClass is the machine class to pick machines from for the machine set.
+ MachineClass machine_class = 2;
+
+ // BootstrapSpec defines the bootstrapping spec of the machine set.
+ // This field is immutable, only valid for the control plane machine set and used only once at the creation time.
+ // When set, the machine set won't be created from scratch, instead, it will be bootstrapped using the given spec.
+ BootstrapSpec bootstrap_spec = 3;
+
+ // DeleteStrategy defines the delete strategy of the machine set.
+ UpdateStrategy delete_strategy = 4;
+
+ // UpdateStrategyConfig defines the update strategy configuration.
+ UpdateStrategyConfig update_strategy_config = 5;
+
+ // DeleteStrategyConfig defines the delete strategy configuration.
+ UpdateStrategyConfig delete_strategy_config = 6;
+}
+
+// TalosUpgradeStatusSpec contains the status of the Talos upgrade process.
+message TalosUpgradeStatusSpec {
+ enum Phase {
+ Unknown = 0;
+ Upgrading = 1;
+ Done = 2;
+ Failed = 3;
+ Reverting = 4;
+ }
+
+ // Current upgrade phase.
+ Phase phase = 1;
+
+ // If phase is Failed, this contains the error message.
+ string error = 2;
+
+ // If phase is Upgrading, this contains the current upgrade step.
+ string step = 3;
+
+ // If phase is Upgrading, this contains the current upgrade step progress.
+ string status = 4;
+
+ // Last successful upgrade version.
+ string last_upgrade_version = 5;
+
+ // Current version of the upgrade (if phase == Upgrading).
+ string current_upgrade_version = 6;
+
+ // List of versions available for upgrade.
+ repeated string upgrade_versions = 7;
+}
+
+// MachineSetStatusSpec describes machine set status.
+message MachineSetStatusSpec {
+ MachineSetPhase phase = 1;
+ bool ready = 2;
+ string error = 3;
+ Machines machines = 4;
+ // config_hash is the combined hash of all cluster machines which are part of the machine set.
+ string config_hash = 5;
+ // MachineClass is copied from the input MachineSet resource.
+ MachineSetSpec.MachineClass machine_class = 6;
+}
+
+// MachineSetNodeSpec is a binding between ClusterMachine and MachineSet.
+message MachineSetNodeSpec {}
+
+// MachineLabelsSpec is the resource that adds user defined labels to the MachineStatus.
+message MachineLabelsSpec {}
+
+// MachineStatusSnapshotSpec describes latest known status of MachineStatus Talos resource.
+message MachineStatusSnapshotSpec {
+ machine.MachineStatusEvent machine_status = 1;
+}
+
+enum ConditionType {
+ UnknownCondition = 0;
+ Etcd = 1;
+ WireguardConnection = 2;
+}
+
+// ControlPlaneStatusSpec contains the status of the MachineSets which manage control plane nodes.
+message ControlPlaneStatusSpec {
+ message Condition {
+ enum Status {
+ Unknown = 0;
+ Ready = 1;
+ NotReady = 2;
+ }
+
+ enum Severity {
+ Info = 0;
+ Warning = 1;
+ Error = 2;
+ }
+
+ ConditionType type = 1;
+ string reason = 2;
+ Status status = 3;
+ Severity severity = 4;
+ }
+
+ repeated Condition conditions = 1;
+}
+
+// ClusterEndpointSpec contains a list of SideroLink (management) control plane endpoints.
+message ClusterEndpointSpec {
+ // List of SideroLink addresses for control plane nodes.
+ repeated string management_addresses = 1;
+}
+
+// KubernetesStatusSpec contains the status of the Kubernetes critical resources in the cluster.
+message KubernetesStatusSpec {
+ message NodeStatus {
+ string nodename = 1;
+ string kubelet_version = 2;
+ bool ready = 3;
+ }
+
+ // status of each node, sorted by nodename
+ repeated NodeStatus nodes = 1;
+
+ message StaticPodStatus {
+ string app = 1;
+ string version = 2;
+ bool ready = 3;
+ }
+
+ message NodeStaticPods {
+ string nodename = 1;
+ repeated StaticPodStatus static_pods = 2;
+ }
+
+ // status of each static pod on each node, sorted by nodename, then by pod's app
+ repeated NodeStaticPods static_pods = 2;
+}
+
+// KubernetesUpgradeStatus spec contains the status of the Kubernetes upgrade process.
+message KubernetesUpgradeStatusSpec {
+ enum Phase {
+ Unknown = 0;
+ Upgrading = 1;
+ Done = 2;
+ Failed = 3;
+ Reverting = 4;
+ }
+
+ // Current upgrade phase.
+ Phase phase = 1;
+
+ // If phase is Failed, this contains the error message.
+ string error = 2;
+
+ // If phase is Upgrading, this contains the current upgrade step.
+ string step = 3;
+
+ // If phase is Upgrading, this contains the current upgrade step progress.
+ string status = 4;
+
+ // Last successful upgrade version.
+ string last_upgrade_version = 5;
+
+ // Current version of the upgrade (if phase == Upgrading).
+ string current_upgrade_version = 7;
+
+ // List of versions available for upgrade.
+ repeated string upgrade_versions = 6;
+}
+
+// KubernetesUpgradeManifestStatus contains status of Kubernetes upgrade manifest sync.
+message KubernetesUpgradeManifestStatusSpec {
+ // Number of manifests out of sync.
+ int32 out_of_sync = 1;
+ // Last fatal error encountered (which prevented the sync).
+ string last_fatal_error = 2;
+}
+
+// DestroyStatusSpec describes the state of resource destroy.
+message DestroyStatusSpec {
+ // Phase describes the current destroy phase.
+ string phase = 1;
+}
+
+// OngoingTaskSpec describes any ongoing tasks.
+message OngoingTaskSpec {
+ // Title of the ongoing task.
+ string title = 1;
+
+ // Details contains the detailed task description.
+ oneof details {
+ TalosUpgradeStatusSpec talos_upgrade = 2;
+ KubernetesUpgradeStatusSpec kubernetes_upgrade = 3;
+ DestroyStatusSpec destroy = 4;
+ }
+}
+
+// ClusterMachineEncryptionKeySpec keeps generated encryption key for the machine disk encryption.
+message ClusterMachineEncryptionKeySpec {
+ // Data stores generated encryption key for the machine.
+ bytes data = 1;
+}
+
+// ExposedServiceSpec describes a Kubernetes service exposed through Omni from a workload cluster.
+message ExposedServiceSpec {
+ // Port is the host port the service is exposed on.
+ uint32 port = 1;
+
+ // Label is the human-readable label of the service to be displayed on Omni Web.
+ string label = 2;
+
+ // IconBase64 is the icon of the service to be displayed on Omni Web.
+ string icon_base64 = 3;
+}
+
+message FeaturesConfigSpec {
+ // EnableWorkloadProxying enables workload proxying feature.
+ bool enable_workload_proxying = 1;
+
+ // EtcdBackupSettings represents omni etcd backup settings.
+ EtcdBackupSettings etcd_backup_settings = 2;
+}
+
+message EtcdBackupSettings {
+ // TickInterval is the interval between checking for backups in controller.
+ google.protobuf.Duration tick_interval = 1;
+
+ // MinInterval is the minimum interval between backups.
+ google.protobuf.Duration min_interval = 2;
+
+ // MaxInterval is the maximum interval between backups.
+ google.protobuf.Duration max_interval = 3;
+
+ reserved 4;
+}
+
+// MachineClassSpec describes an Omni MachineClass resource spec.
+message MachineClassSpec {
+ // MatchLabels is the list of labels to match the machine to make it part of the machine class.
+ repeated string match_labels = 1;
+}
+
+// MachineConfigGenOptionsSpec describes machine related config generation inputs.
+message MachineConfigGenOptionsSpec {
+ string install_disk = 1;
+}
+
+// EtcdAuditResult is updated when the etcd audit removes a member.
+//
+// This resource is used to re-trigger the controlplane status checks when etcd audit removes a member.
+message EtcdAuditResultSpec {
+ // EtcdMemberIds contains the list of ids of the members that were last removed.
+ // The list is always sorted.
+ repeated uint64 etcd_member_ids = 1;
+}
+
+// KubeconfigSpec describes a Kubernetes client configuraiton for a cluster.
+message KubeconfigSpec {
+ // Marshalled kubeconfig.
+ bytes data = 1;
+}
+
+// KubernetesUsageSpec represents kubernetes resource usage for a cluster.
+message KubernetesUsageSpec {
+ message Quantity {
+ double requests = 1;
+ double limits = 2;
+ double capacity = 3;
+ }
+
+ message Pod {
+ int32 count = 1;
+ int32 capacity = 3;
+ }
+
+ Quantity cpu = 1;
+ Quantity mem = 2;
+ Quantity storage = 3;
+ Pod pods = 4;
+}
+
+// ImagePullRequestSpec describes an Omni ImagePullRequest resource spec.
+message ImagePullRequestSpec {
+ message NodeImageList {
+ string node = 1;
+ repeated string images = 2;
+ }
+
+ // NodeImageList are the images to be pulled into the node.
+ repeated NodeImageList node_image_list = 1;
+}
+
+// ImagePullStatusSpec describes an Omni ImagePullStatus resource spec.
+message ImagePullStatusSpec {
+ string last_processed_node = 1;
+ string last_processed_image = 2;
+ string last_processed_error = 3;
+ uint32 processed_count = 4;
+ uint32 total_count = 5;
+
+ // RequestVersion is the version of the ImagePullRequest that this status is for.
+ string request_version = 6;
+}
+
+// SchematicSpec keeps all schematics generated by Omni.
+// For each schematic it keeps information about the list of extensions.
+message SchematicSpec {
+ repeated string extensions = 1;
+}
+
+// TalosExtensionsSpec represents all available extensions for a particular Talos version.
+message TalosExtensionsSpec {
+ // Info is a merged representation of the extensions manifest and image factory versions response.
+ message Info {
+ string name = 1;
+ string author = 2;
+ string version = 3;
+ string description = 4;
+ string ref = 5;
+ string digest = 6;
+ }
+
+ repeated Info items = 1;
+}
+
+// SchematicConfigurationSpec is the desired Image Factory schematic for a machine, machine set or a cluster.
+message SchematicConfigurationSpec {
+ enum Target {
+ Unknown = 0;
+ ClusterMachine = 1;
+ MachineSet = 2;
+ Cluster = 3;
+ }
+
+ string schematic_id = 1;
+
+ Target target = 2;
+}
\ No newline at end of file
diff --git a/client/api/omni/specs/omni_vtproto.pb.go b/client/api/omni/specs/omni_vtproto.pb.go
new file mode 100644
index 000000000..60df3acca
--- /dev/null
+++ b/client/api/omni/specs/omni_vtproto.pb.go
@@ -0,0 +1,22572 @@
+// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.
+// protoc-gen-go-vtproto version: v0.6.0
+// source: omni/specs/omni.proto
+
+package specs
+
+import (
+ binary "encoding/binary"
+ fmt "fmt"
+ io "io"
+ math "math"
+
+ protohelpers "github.com/planetscale/vtprotobuf/protohelpers"
+ durationpb1 "github.com/planetscale/vtprotobuf/types/known/durationpb"
+ timestamppb1 "github.com/planetscale/vtprotobuf/types/known/timestamppb"
+ machine "github.com/siderolabs/talos/pkg/machinery/api/machine"
+ proto "google.golang.org/protobuf/proto"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ durationpb "google.golang.org/protobuf/types/known/durationpb"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+func (m *MachineSpec) CloneVT() *MachineSpec {
+ if m == nil {
+ return (*MachineSpec)(nil)
+ }
+ r := new(MachineSpec)
+ r.ManagementAddress = m.ManagementAddress
+ r.Connected = m.Connected
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineStatusSpec_HardwareStatus_Processor) CloneVT() *MachineStatusSpec_HardwareStatus_Processor {
+ if m == nil {
+ return (*MachineStatusSpec_HardwareStatus_Processor)(nil)
+ }
+ r := new(MachineStatusSpec_HardwareStatus_Processor)
+ r.CoreCount = m.CoreCount
+ r.ThreadCount = m.ThreadCount
+ r.Frequency = m.Frequency
+ r.Description = m.Description
+ r.Manufacturer = m.Manufacturer
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineStatusSpec_HardwareStatus_Processor) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineStatusSpec_HardwareStatus_MemoryModule) CloneVT() *MachineStatusSpec_HardwareStatus_MemoryModule {
+ if m == nil {
+ return (*MachineStatusSpec_HardwareStatus_MemoryModule)(nil)
+ }
+ r := new(MachineStatusSpec_HardwareStatus_MemoryModule)
+ r.SizeMb = m.SizeMb
+ r.Description = m.Description
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineStatusSpec_HardwareStatus_MemoryModule) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineStatusSpec_HardwareStatus_BlockDevice) CloneVT() *MachineStatusSpec_HardwareStatus_BlockDevice {
+ if m == nil {
+ return (*MachineStatusSpec_HardwareStatus_BlockDevice)(nil)
+ }
+ r := new(MachineStatusSpec_HardwareStatus_BlockDevice)
+ r.Size = m.Size
+ r.Model = m.Model
+ r.LinuxName = m.LinuxName
+ r.Name = m.Name
+ r.Serial = m.Serial
+ r.Uuid = m.Uuid
+ r.Wwid = m.Wwid
+ r.Type = m.Type
+ r.BusPath = m.BusPath
+ r.SystemDisk = m.SystemDisk
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineStatusSpec_HardwareStatus_BlockDevice) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineStatusSpec_HardwareStatus) CloneVT() *MachineStatusSpec_HardwareStatus {
+ if m == nil {
+ return (*MachineStatusSpec_HardwareStatus)(nil)
+ }
+ r := new(MachineStatusSpec_HardwareStatus)
+ r.Arch = m.Arch
+ if rhs := m.Processors; rhs != nil {
+ tmpContainer := make([]*MachineStatusSpec_HardwareStatus_Processor, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.Processors = tmpContainer
+ }
+ if rhs := m.MemoryModules; rhs != nil {
+ tmpContainer := make([]*MachineStatusSpec_HardwareStatus_MemoryModule, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.MemoryModules = tmpContainer
+ }
+ if rhs := m.Blockdevices; rhs != nil {
+ tmpContainer := make([]*MachineStatusSpec_HardwareStatus_BlockDevice, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.Blockdevices = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineStatusSpec_HardwareStatus) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) CloneVT() *MachineStatusSpec_NetworkStatus_NetworkLinkStatus {
+ if m == nil {
+ return (*MachineStatusSpec_NetworkStatus_NetworkLinkStatus)(nil)
+ }
+ r := new(MachineStatusSpec_NetworkStatus_NetworkLinkStatus)
+ r.LinuxName = m.LinuxName
+ r.HardwareAddress = m.HardwareAddress
+ r.SpeedMbps = m.SpeedMbps
+ r.LinkUp = m.LinkUp
+ r.Description = m.Description
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineStatusSpec_NetworkStatus) CloneVT() *MachineStatusSpec_NetworkStatus {
+ if m == nil {
+ return (*MachineStatusSpec_NetworkStatus)(nil)
+ }
+ r := new(MachineStatusSpec_NetworkStatus)
+ r.Hostname = m.Hostname
+ r.Domainname = m.Domainname
+ if rhs := m.Addresses; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.Addresses = tmpContainer
+ }
+ if rhs := m.DefaultGateways; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.DefaultGateways = tmpContainer
+ }
+ if rhs := m.NetworkLinks; rhs != nil {
+ tmpContainer := make([]*MachineStatusSpec_NetworkStatus_NetworkLinkStatus, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.NetworkLinks = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineStatusSpec_NetworkStatus) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineStatusSpec_PlatformMetadata) CloneVT() *MachineStatusSpec_PlatformMetadata {
+ if m == nil {
+ return (*MachineStatusSpec_PlatformMetadata)(nil)
+ }
+ r := new(MachineStatusSpec_PlatformMetadata)
+ r.Platform = m.Platform
+ r.Hostname = m.Hostname
+ r.Region = m.Region
+ r.Zone = m.Zone
+ r.InstanceType = m.InstanceType
+ r.InstanceId = m.InstanceId
+ r.ProviderId = m.ProviderId
+ r.Spot = m.Spot
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineStatusSpec_PlatformMetadata) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineStatusSpec_Schematic) CloneVT() *MachineStatusSpec_Schematic {
+ if m == nil {
+ return (*MachineStatusSpec_Schematic)(nil)
+ }
+ r := new(MachineStatusSpec_Schematic)
+ r.Id = m.Id
+ r.Invalid = m.Invalid
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineStatusSpec_Schematic) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineStatusSpec) CloneVT() *MachineStatusSpec {
+ if m == nil {
+ return (*MachineStatusSpec)(nil)
+ }
+ r := new(MachineStatusSpec)
+ r.TalosVersion = m.TalosVersion
+ r.Hardware = m.Hardware.CloneVT()
+ r.Network = m.Network.CloneVT()
+ r.LastError = m.LastError
+ r.ManagementAddress = m.ManagementAddress
+ r.Connected = m.Connected
+ r.Maintenance = m.Maintenance
+ r.Cluster = m.Cluster
+ r.Role = m.Role
+ r.PlatformMetadata = m.PlatformMetadata.CloneVT()
+ r.Schematic = m.Schematic.CloneVT()
+ if rhs := m.ImageLabels; rhs != nil {
+ tmpContainer := make(map[string]string, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v
+ }
+ r.ImageLabels = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *TalosConfigSpec) CloneVT() *TalosConfigSpec {
+ if m == nil {
+ return (*TalosConfigSpec)(nil)
+ }
+ r := new(TalosConfigSpec)
+ r.Ca = m.Ca
+ r.Crt = m.Crt
+ r.Key = m.Key
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *TalosConfigSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterSpec_Features) CloneVT() *ClusterSpec_Features {
+ if m == nil {
+ return (*ClusterSpec_Features)(nil)
+ }
+ r := new(ClusterSpec_Features)
+ r.EnableWorkloadProxy = m.EnableWorkloadProxy
+ r.DiskEncryption = m.DiskEncryption
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterSpec_Features) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterSpec) CloneVT() *ClusterSpec {
+ if m == nil {
+ return (*ClusterSpec)(nil)
+ }
+ r := new(ClusterSpec)
+ r.InstallImage = m.InstallImage
+ r.KubernetesVersion = m.KubernetesVersion
+ r.TalosVersion = m.TalosVersion
+ r.Features = m.Features.CloneVT()
+ r.BackupConfiguration = m.BackupConfiguration.CloneVT()
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *EtcdBackupConf) CloneVT() *EtcdBackupConf {
+ if m == nil {
+ return (*EtcdBackupConf)(nil)
+ }
+ r := new(EtcdBackupConf)
+ r.Interval = (*durationpb.Duration)((*durationpb1.Duration)(m.Interval).CloneVT())
+ r.Enabled = m.Enabled
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *EtcdBackupConf) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *EtcdBackupEncryptionSpec) CloneVT() *EtcdBackupEncryptionSpec {
+ if m == nil {
+ return (*EtcdBackupEncryptionSpec)(nil)
+ }
+ r := new(EtcdBackupEncryptionSpec)
+ if rhs := m.EncryptionKey; rhs != nil {
+ tmpBytes := make([]byte, len(rhs))
+ copy(tmpBytes, rhs)
+ r.EncryptionKey = tmpBytes
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *EtcdBackupEncryptionSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *EtcdBackupHeader) CloneVT() *EtcdBackupHeader {
+ if m == nil {
+ return (*EtcdBackupHeader)(nil)
+ }
+ r := new(EtcdBackupHeader)
+ r.Version = m.Version
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *EtcdBackupHeader) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *EtcdBackupSpec) CloneVT() *EtcdBackupSpec {
+ if m == nil {
+ return (*EtcdBackupSpec)(nil)
+ }
+ r := new(EtcdBackupSpec)
+ r.CreatedAt = (*timestamppb.Timestamp)((*timestamppb1.Timestamp)(m.CreatedAt).CloneVT())
+ r.Snapshot = m.Snapshot
+ r.Size = m.Size
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *EtcdBackupSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *BackupDataSpec) CloneVT() *BackupDataSpec {
+ if m == nil {
+ return (*BackupDataSpec)(nil)
+ }
+ r := new(BackupDataSpec)
+ r.Interval = (*durationpb.Duration)((*durationpb1.Duration)(m.Interval).CloneVT())
+ r.ClusterUuid = m.ClusterUuid
+ r.AesCbcEncryptionSecret = m.AesCbcEncryptionSecret
+ r.SecretboxEncryptionSecret = m.SecretboxEncryptionSecret
+ if rhs := m.EncryptionKey; rhs != nil {
+ tmpBytes := make([]byte, len(rhs))
+ copy(tmpBytes, rhs)
+ r.EncryptionKey = tmpBytes
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *BackupDataSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *EtcdBackupS3ConfSpec) CloneVT() *EtcdBackupS3ConfSpec {
+ if m == nil {
+ return (*EtcdBackupS3ConfSpec)(nil)
+ }
+ r := new(EtcdBackupS3ConfSpec)
+ r.Bucket = m.Bucket
+ r.Region = m.Region
+ r.Endpoint = m.Endpoint
+ r.AccessKeyId = m.AccessKeyId
+ r.SecretAccessKey = m.SecretAccessKey
+ r.SessionToken = m.SessionToken
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *EtcdBackupS3ConfSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *EtcdBackupStatusSpec) CloneVT() *EtcdBackupStatusSpec {
+ if m == nil {
+ return (*EtcdBackupStatusSpec)(nil)
+ }
+ r := new(EtcdBackupStatusSpec)
+ r.Status = m.Status
+ r.Error = m.Error
+ r.LastBackupTime = (*timestamppb.Timestamp)((*timestamppb1.Timestamp)(m.LastBackupTime).CloneVT())
+ r.LastBackupAttempt = (*timestamppb.Timestamp)((*timestamppb1.Timestamp)(m.LastBackupAttempt).CloneVT())
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *EtcdBackupStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *EtcdManualBackupSpec) CloneVT() *EtcdManualBackupSpec {
+ if m == nil {
+ return (*EtcdManualBackupSpec)(nil)
+ }
+ r := new(EtcdManualBackupSpec)
+ r.BackupAt = (*timestamppb.Timestamp)((*timestamppb1.Timestamp)(m.BackupAt).CloneVT())
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *EtcdManualBackupSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *EtcdBackupStoreStatusSpec) CloneVT() *EtcdBackupStoreStatusSpec {
+ if m == nil {
+ return (*EtcdBackupStoreStatusSpec)(nil)
+ }
+ r := new(EtcdBackupStoreStatusSpec)
+ r.ConfigurationName = m.ConfigurationName
+ r.ConfigurationError = m.ConfigurationError
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *EtcdBackupStoreStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *EtcdBackupOverallStatusSpec) CloneVT() *EtcdBackupOverallStatusSpec {
+ if m == nil {
+ return (*EtcdBackupOverallStatusSpec)(nil)
+ }
+ r := new(EtcdBackupOverallStatusSpec)
+ r.ConfigurationName = m.ConfigurationName
+ r.ConfigurationError = m.ConfigurationError
+ r.LastBackupStatus = m.LastBackupStatus.CloneVT()
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *EtcdBackupOverallStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterMachineSpec) CloneVT() *ClusterMachineSpec {
+ if m == nil {
+ return (*ClusterMachineSpec)(nil)
+ }
+ r := new(ClusterMachineSpec)
+ r.KubernetesVersion = m.KubernetesVersion
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterMachineSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterMachineConfigPatchesSpec) CloneVT() *ClusterMachineConfigPatchesSpec {
+ if m == nil {
+ return (*ClusterMachineConfigPatchesSpec)(nil)
+ }
+ r := new(ClusterMachineConfigPatchesSpec)
+ if rhs := m.Patches; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.Patches = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterMachineConfigPatchesSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterMachineTalosVersionSpec) CloneVT() *ClusterMachineTalosVersionSpec {
+ if m == nil {
+ return (*ClusterMachineTalosVersionSpec)(nil)
+ }
+ r := new(ClusterMachineTalosVersionSpec)
+ r.TalosVersion = m.TalosVersion
+ r.SchematicId = m.SchematicId
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterMachineTalosVersionSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterMachineConfigSpec) CloneVT() *ClusterMachineConfigSpec {
+ if m == nil {
+ return (*ClusterMachineConfigSpec)(nil)
+ }
+ r := new(ClusterMachineConfigSpec)
+ r.ClusterMachineVersion = m.ClusterMachineVersion
+ r.GenerationError = m.GenerationError
+ if rhs := m.Data; rhs != nil {
+ tmpBytes := make([]byte, len(rhs))
+ copy(tmpBytes, rhs)
+ r.Data = tmpBytes
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterMachineConfigSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *RedactedClusterMachineConfigSpec) CloneVT() *RedactedClusterMachineConfigSpec {
+ if m == nil {
+ return (*RedactedClusterMachineConfigSpec)(nil)
+ }
+ r := new(RedactedClusterMachineConfigSpec)
+ r.Data = m.Data
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *RedactedClusterMachineConfigSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterMachineIdentitySpec) CloneVT() *ClusterMachineIdentitySpec {
+ if m == nil {
+ return (*ClusterMachineIdentitySpec)(nil)
+ }
+ r := new(ClusterMachineIdentitySpec)
+ r.NodeIdentity = m.NodeIdentity
+ r.EtcdMemberId = m.EtcdMemberId
+ r.Nodename = m.Nodename
+ if rhs := m.NodeIps; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.NodeIps = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterMachineIdentitySpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterMachineTemplateSpec) CloneVT() *ClusterMachineTemplateSpec {
+ if m == nil {
+ return (*ClusterMachineTemplateSpec)(nil)
+ }
+ r := new(ClusterMachineTemplateSpec)
+ r.InstallImage = m.InstallImage
+ r.KubernetesVersion = m.KubernetesVersion
+ r.InstallDisk = m.InstallDisk
+ r.Patch = m.Patch
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterMachineTemplateSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterMachineStatusSpec) CloneVT() *ClusterMachineStatusSpec {
+ if m == nil {
+ return (*ClusterMachineStatusSpec)(nil)
+ }
+ r := new(ClusterMachineStatusSpec)
+ r.Ready = m.Ready
+ r.Stage = m.Stage
+ r.ApidAvailable = m.ApidAvailable
+ r.ConfigUpToDate = m.ConfigUpToDate
+ r.LastConfigError = m.LastConfigError
+ r.ManagementAddress = m.ManagementAddress
+ r.ConfigApplyStatus = m.ConfigApplyStatus
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterMachineStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *Machines) CloneVT() *Machines {
+ if m == nil {
+ return (*Machines)(nil)
+ }
+ r := new(Machines)
+ r.Total = m.Total
+ r.Healthy = m.Healthy
+ r.Connected = m.Connected
+ r.Requested = m.Requested
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *Machines) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterStatusSpec) CloneVT() *ClusterStatusSpec {
+ if m == nil {
+ return (*ClusterStatusSpec)(nil)
+ }
+ r := new(ClusterStatusSpec)
+ r.Available = m.Available
+ r.Machines = m.Machines.CloneVT()
+ r.Phase = m.Phase
+ r.Ready = m.Ready
+ r.KubernetesAPIReady = m.KubernetesAPIReady
+ r.ControlplaneReady = m.ControlplaneReady
+ r.HasConnectedControlPlanes = m.HasConnectedControlPlanes
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterUUID) CloneVT() *ClusterUUID {
+ if m == nil {
+ return (*ClusterUUID)(nil)
+ }
+ r := new(ClusterUUID)
+ r.Uuid = m.Uuid
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterUUID) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterConfigVersionSpec) CloneVT() *ClusterConfigVersionSpec {
+ if m == nil {
+ return (*ClusterConfigVersionSpec)(nil)
+ }
+ r := new(ClusterConfigVersionSpec)
+ r.Version = m.Version
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterConfigVersionSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterMachineConfigStatusSpec) CloneVT() *ClusterMachineConfigStatusSpec {
+ if m == nil {
+ return (*ClusterMachineConfigStatusSpec)(nil)
+ }
+ r := new(ClusterMachineConfigStatusSpec)
+ r.ClusterMachineConfigVersion = m.ClusterMachineConfigVersion
+ r.ClusterMachineVersion = m.ClusterMachineVersion
+ r.ClusterMachineConfigSha256 = m.ClusterMachineConfigSha256
+ r.LastConfigError = m.LastConfigError
+ r.TalosVersion = m.TalosVersion
+ r.SchematicId = m.SchematicId
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterMachineConfigStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterBootstrapStatusSpec) CloneVT() *ClusterBootstrapStatusSpec {
+ if m == nil {
+ return (*ClusterBootstrapStatusSpec)(nil)
+ }
+ r := new(ClusterBootstrapStatusSpec)
+ r.Bootstrapped = m.Bootstrapped
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterBootstrapStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterSecretsSpec) CloneVT() *ClusterSecretsSpec {
+ if m == nil {
+ return (*ClusterSecretsSpec)(nil)
+ }
+ r := new(ClusterSecretsSpec)
+ if rhs := m.Data; rhs != nil {
+ tmpBytes := make([]byte, len(rhs))
+ copy(tmpBytes, rhs)
+ r.Data = tmpBytes
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterSecretsSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *LoadBalancerConfigSpec) CloneVT() *LoadBalancerConfigSpec {
+ if m == nil {
+ return (*LoadBalancerConfigSpec)(nil)
+ }
+ r := new(LoadBalancerConfigSpec)
+ r.BindPort = m.BindPort
+ r.SiderolinkEndpoint = m.SiderolinkEndpoint
+ if rhs := m.Endpoints; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.Endpoints = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *LoadBalancerConfigSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *LoadBalancerStatusSpec) CloneVT() *LoadBalancerStatusSpec {
+ if m == nil {
+ return (*LoadBalancerStatusSpec)(nil)
+ }
+ r := new(LoadBalancerStatusSpec)
+ r.Healthy = m.Healthy
+ r.Stopped = m.Stopped
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *LoadBalancerStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubernetesVersionSpec) CloneVT() *KubernetesVersionSpec {
+ if m == nil {
+ return (*KubernetesVersionSpec)(nil)
+ }
+ r := new(KubernetesVersionSpec)
+ r.Version = m.Version
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubernetesVersionSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *TalosVersionSpec) CloneVT() *TalosVersionSpec {
+ if m == nil {
+ return (*TalosVersionSpec)(nil)
+ }
+ r := new(TalosVersionSpec)
+ r.Version = m.Version
+ if rhs := m.CompatibleKubernetesVersions; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.CompatibleKubernetesVersions = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *TalosVersionSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *InstallationMediaSpec) CloneVT() *InstallationMediaSpec {
+ if m == nil {
+ return (*InstallationMediaSpec)(nil)
+ }
+ r := new(InstallationMediaSpec)
+ r.Name = m.Name
+ r.Architecture = m.Architecture
+ r.Profile = m.Profile
+ r.ContentType = m.ContentType
+ r.SrcFilePrefix = m.SrcFilePrefix
+ r.DestFilePrefix = m.DestFilePrefix
+ r.Extension = m.Extension
+ r.NoSecureBoot = m.NoSecureBoot
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *InstallationMediaSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ConfigPatchSpec) CloneVT() *ConfigPatchSpec {
+ if m == nil {
+ return (*ConfigPatchSpec)(nil)
+ }
+ r := new(ConfigPatchSpec)
+ r.Data = m.Data
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ConfigPatchSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineSetSpec_MachineClass) CloneVT() *MachineSetSpec_MachineClass {
+ if m == nil {
+ return (*MachineSetSpec_MachineClass)(nil)
+ }
+ r := new(MachineSetSpec_MachineClass)
+ r.Name = m.Name
+ r.MachineCount = m.MachineCount
+ r.AllocationType = m.AllocationType
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineSetSpec_MachineClass) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineSetSpec_BootstrapSpec) CloneVT() *MachineSetSpec_BootstrapSpec {
+ if m == nil {
+ return (*MachineSetSpec_BootstrapSpec)(nil)
+ }
+ r := new(MachineSetSpec_BootstrapSpec)
+ r.ClusterUuid = m.ClusterUuid
+ r.Snapshot = m.Snapshot
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineSetSpec_BootstrapSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineSetSpec_RollingUpdateStrategyConfig) CloneVT() *MachineSetSpec_RollingUpdateStrategyConfig {
+ if m == nil {
+ return (*MachineSetSpec_RollingUpdateStrategyConfig)(nil)
+ }
+ r := new(MachineSetSpec_RollingUpdateStrategyConfig)
+ r.MaxParallelism = m.MaxParallelism
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineSetSpec_RollingUpdateStrategyConfig) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineSetSpec_UpdateStrategyConfig) CloneVT() *MachineSetSpec_UpdateStrategyConfig {
+ if m == nil {
+ return (*MachineSetSpec_UpdateStrategyConfig)(nil)
+ }
+ r := new(MachineSetSpec_UpdateStrategyConfig)
+ r.Rolling = m.Rolling.CloneVT()
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineSetSpec_UpdateStrategyConfig) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineSetSpec) CloneVT() *MachineSetSpec {
+ if m == nil {
+ return (*MachineSetSpec)(nil)
+ }
+ r := new(MachineSetSpec)
+ r.UpdateStrategy = m.UpdateStrategy
+ r.MachineClass = m.MachineClass.CloneVT()
+ r.BootstrapSpec = m.BootstrapSpec.CloneVT()
+ r.DeleteStrategy = m.DeleteStrategy
+ r.UpdateStrategyConfig = m.UpdateStrategyConfig.CloneVT()
+ r.DeleteStrategyConfig = m.DeleteStrategyConfig.CloneVT()
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineSetSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *TalosUpgradeStatusSpec) CloneVT() *TalosUpgradeStatusSpec {
+ if m == nil {
+ return (*TalosUpgradeStatusSpec)(nil)
+ }
+ r := new(TalosUpgradeStatusSpec)
+ r.Phase = m.Phase
+ r.Error = m.Error
+ r.Step = m.Step
+ r.Status = m.Status
+ r.LastUpgradeVersion = m.LastUpgradeVersion
+ r.CurrentUpgradeVersion = m.CurrentUpgradeVersion
+ if rhs := m.UpgradeVersions; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.UpgradeVersions = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *TalosUpgradeStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineSetStatusSpec) CloneVT() *MachineSetStatusSpec {
+ if m == nil {
+ return (*MachineSetStatusSpec)(nil)
+ }
+ r := new(MachineSetStatusSpec)
+ r.Phase = m.Phase
+ r.Ready = m.Ready
+ r.Error = m.Error
+ r.Machines = m.Machines.CloneVT()
+ r.ConfigHash = m.ConfigHash
+ r.MachineClass = m.MachineClass.CloneVT()
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineSetStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineSetNodeSpec) CloneVT() *MachineSetNodeSpec {
+ if m == nil {
+ return (*MachineSetNodeSpec)(nil)
+ }
+ r := new(MachineSetNodeSpec)
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineSetNodeSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineLabelsSpec) CloneVT() *MachineLabelsSpec {
+ if m == nil {
+ return (*MachineLabelsSpec)(nil)
+ }
+ r := new(MachineLabelsSpec)
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineLabelsSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineStatusSnapshotSpec) CloneVT() *MachineStatusSnapshotSpec {
+ if m == nil {
+ return (*MachineStatusSnapshotSpec)(nil)
+ }
+ r := new(MachineStatusSnapshotSpec)
+ if rhs := m.MachineStatus; rhs != nil {
+ if vtpb, ok := interface{}(rhs).(interface {
+ CloneVT() *machine.MachineStatusEvent
+ }); ok {
+ r.MachineStatus = vtpb.CloneVT()
+ } else {
+ r.MachineStatus = proto.Clone(rhs).(*machine.MachineStatusEvent)
+ }
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineStatusSnapshotSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ControlPlaneStatusSpec_Condition) CloneVT() *ControlPlaneStatusSpec_Condition {
+ if m == nil {
+ return (*ControlPlaneStatusSpec_Condition)(nil)
+ }
+ r := new(ControlPlaneStatusSpec_Condition)
+ r.Type = m.Type
+ r.Reason = m.Reason
+ r.Status = m.Status
+ r.Severity = m.Severity
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ControlPlaneStatusSpec_Condition) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ControlPlaneStatusSpec) CloneVT() *ControlPlaneStatusSpec {
+ if m == nil {
+ return (*ControlPlaneStatusSpec)(nil)
+ }
+ r := new(ControlPlaneStatusSpec)
+ if rhs := m.Conditions; rhs != nil {
+ tmpContainer := make([]*ControlPlaneStatusSpec_Condition, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.Conditions = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ControlPlaneStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterEndpointSpec) CloneVT() *ClusterEndpointSpec {
+ if m == nil {
+ return (*ClusterEndpointSpec)(nil)
+ }
+ r := new(ClusterEndpointSpec)
+ if rhs := m.ManagementAddresses; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.ManagementAddresses = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterEndpointSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubernetesStatusSpec_NodeStatus) CloneVT() *KubernetesStatusSpec_NodeStatus {
+ if m == nil {
+ return (*KubernetesStatusSpec_NodeStatus)(nil)
+ }
+ r := new(KubernetesStatusSpec_NodeStatus)
+ r.Nodename = m.Nodename
+ r.KubeletVersion = m.KubeletVersion
+ r.Ready = m.Ready
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubernetesStatusSpec_NodeStatus) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubernetesStatusSpec_StaticPodStatus) CloneVT() *KubernetesStatusSpec_StaticPodStatus {
+ if m == nil {
+ return (*KubernetesStatusSpec_StaticPodStatus)(nil)
+ }
+ r := new(KubernetesStatusSpec_StaticPodStatus)
+ r.App = m.App
+ r.Version = m.Version
+ r.Ready = m.Ready
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubernetesStatusSpec_StaticPodStatus) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubernetesStatusSpec_NodeStaticPods) CloneVT() *KubernetesStatusSpec_NodeStaticPods {
+ if m == nil {
+ return (*KubernetesStatusSpec_NodeStaticPods)(nil)
+ }
+ r := new(KubernetesStatusSpec_NodeStaticPods)
+ r.Nodename = m.Nodename
+ if rhs := m.StaticPods; rhs != nil {
+ tmpContainer := make([]*KubernetesStatusSpec_StaticPodStatus, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.StaticPods = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubernetesStatusSpec_NodeStaticPods) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubernetesStatusSpec) CloneVT() *KubernetesStatusSpec {
+ if m == nil {
+ return (*KubernetesStatusSpec)(nil)
+ }
+ r := new(KubernetesStatusSpec)
+ if rhs := m.Nodes; rhs != nil {
+ tmpContainer := make([]*KubernetesStatusSpec_NodeStatus, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.Nodes = tmpContainer
+ }
+ if rhs := m.StaticPods; rhs != nil {
+ tmpContainer := make([]*KubernetesStatusSpec_NodeStaticPods, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.StaticPods = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubernetesStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubernetesUpgradeStatusSpec) CloneVT() *KubernetesUpgradeStatusSpec {
+ if m == nil {
+ return (*KubernetesUpgradeStatusSpec)(nil)
+ }
+ r := new(KubernetesUpgradeStatusSpec)
+ r.Phase = m.Phase
+ r.Error = m.Error
+ r.Step = m.Step
+ r.Status = m.Status
+ r.LastUpgradeVersion = m.LastUpgradeVersion
+ r.CurrentUpgradeVersion = m.CurrentUpgradeVersion
+ if rhs := m.UpgradeVersions; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.UpgradeVersions = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubernetesUpgradeStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubernetesUpgradeManifestStatusSpec) CloneVT() *KubernetesUpgradeManifestStatusSpec {
+ if m == nil {
+ return (*KubernetesUpgradeManifestStatusSpec)(nil)
+ }
+ r := new(KubernetesUpgradeManifestStatusSpec)
+ r.OutOfSync = m.OutOfSync
+ r.LastFatalError = m.LastFatalError
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubernetesUpgradeManifestStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *DestroyStatusSpec) CloneVT() *DestroyStatusSpec {
+ if m == nil {
+ return (*DestroyStatusSpec)(nil)
+ }
+ r := new(DestroyStatusSpec)
+ r.Phase = m.Phase
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *DestroyStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *OngoingTaskSpec) CloneVT() *OngoingTaskSpec {
+ if m == nil {
+ return (*OngoingTaskSpec)(nil)
+ }
+ r := new(OngoingTaskSpec)
+ r.Title = m.Title
+ if m.Details != nil {
+ r.Details = m.Details.(interface {
+ CloneVT() isOngoingTaskSpec_Details
+ }).CloneVT()
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *OngoingTaskSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *OngoingTaskSpec_TalosUpgrade) CloneVT() isOngoingTaskSpec_Details {
+ if m == nil {
+ return (*OngoingTaskSpec_TalosUpgrade)(nil)
+ }
+ r := new(OngoingTaskSpec_TalosUpgrade)
+ r.TalosUpgrade = m.TalosUpgrade.CloneVT()
+ return r
+}
+
+func (m *OngoingTaskSpec_KubernetesUpgrade) CloneVT() isOngoingTaskSpec_Details {
+ if m == nil {
+ return (*OngoingTaskSpec_KubernetesUpgrade)(nil)
+ }
+ r := new(OngoingTaskSpec_KubernetesUpgrade)
+ r.KubernetesUpgrade = m.KubernetesUpgrade.CloneVT()
+ return r
+}
+
+func (m *OngoingTaskSpec_Destroy) CloneVT() isOngoingTaskSpec_Details {
+ if m == nil {
+ return (*OngoingTaskSpec_Destroy)(nil)
+ }
+ r := new(OngoingTaskSpec_Destroy)
+ r.Destroy = m.Destroy.CloneVT()
+ return r
+}
+
+func (m *ClusterMachineEncryptionKeySpec) CloneVT() *ClusterMachineEncryptionKeySpec {
+ if m == nil {
+ return (*ClusterMachineEncryptionKeySpec)(nil)
+ }
+ r := new(ClusterMachineEncryptionKeySpec)
+ if rhs := m.Data; rhs != nil {
+ tmpBytes := make([]byte, len(rhs))
+ copy(tmpBytes, rhs)
+ r.Data = tmpBytes
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterMachineEncryptionKeySpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ExposedServiceSpec) CloneVT() *ExposedServiceSpec {
+ if m == nil {
+ return (*ExposedServiceSpec)(nil)
+ }
+ r := new(ExposedServiceSpec)
+ r.Port = m.Port
+ r.Label = m.Label
+ r.IconBase64 = m.IconBase64
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ExposedServiceSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *FeaturesConfigSpec) CloneVT() *FeaturesConfigSpec {
+ if m == nil {
+ return (*FeaturesConfigSpec)(nil)
+ }
+ r := new(FeaturesConfigSpec)
+ r.EnableWorkloadProxying = m.EnableWorkloadProxying
+ r.EtcdBackupSettings = m.EtcdBackupSettings.CloneVT()
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *FeaturesConfigSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *EtcdBackupSettings) CloneVT() *EtcdBackupSettings {
+ if m == nil {
+ return (*EtcdBackupSettings)(nil)
+ }
+ r := new(EtcdBackupSettings)
+ r.TickInterval = (*durationpb.Duration)((*durationpb1.Duration)(m.TickInterval).CloneVT())
+ r.MinInterval = (*durationpb.Duration)((*durationpb1.Duration)(m.MinInterval).CloneVT())
+ r.MaxInterval = (*durationpb.Duration)((*durationpb1.Duration)(m.MaxInterval).CloneVT())
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *EtcdBackupSettings) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineClassSpec) CloneVT() *MachineClassSpec {
+ if m == nil {
+ return (*MachineClassSpec)(nil)
+ }
+ r := new(MachineClassSpec)
+ if rhs := m.MatchLabels; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.MatchLabels = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineClassSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *MachineConfigGenOptionsSpec) CloneVT() *MachineConfigGenOptionsSpec {
+ if m == nil {
+ return (*MachineConfigGenOptionsSpec)(nil)
+ }
+ r := new(MachineConfigGenOptionsSpec)
+ r.InstallDisk = m.InstallDisk
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *MachineConfigGenOptionsSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *EtcdAuditResultSpec) CloneVT() *EtcdAuditResultSpec {
+ if m == nil {
+ return (*EtcdAuditResultSpec)(nil)
+ }
+ r := new(EtcdAuditResultSpec)
+ if rhs := m.EtcdMemberIds; rhs != nil {
+ tmpContainer := make([]uint64, len(rhs))
+ copy(tmpContainer, rhs)
+ r.EtcdMemberIds = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *EtcdAuditResultSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubeconfigSpec) CloneVT() *KubeconfigSpec {
+ if m == nil {
+ return (*KubeconfigSpec)(nil)
+ }
+ r := new(KubeconfigSpec)
+ if rhs := m.Data; rhs != nil {
+ tmpBytes := make([]byte, len(rhs))
+ copy(tmpBytes, rhs)
+ r.Data = tmpBytes
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubeconfigSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubernetesUsageSpec_Quantity) CloneVT() *KubernetesUsageSpec_Quantity {
+ if m == nil {
+ return (*KubernetesUsageSpec_Quantity)(nil)
+ }
+ r := new(KubernetesUsageSpec_Quantity)
+ r.Requests = m.Requests
+ r.Limits = m.Limits
+ r.Capacity = m.Capacity
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubernetesUsageSpec_Quantity) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubernetesUsageSpec_Pod) CloneVT() *KubernetesUsageSpec_Pod {
+ if m == nil {
+ return (*KubernetesUsageSpec_Pod)(nil)
+ }
+ r := new(KubernetesUsageSpec_Pod)
+ r.Count = m.Count
+ r.Capacity = m.Capacity
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubernetesUsageSpec_Pod) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *KubernetesUsageSpec) CloneVT() *KubernetesUsageSpec {
+ if m == nil {
+ return (*KubernetesUsageSpec)(nil)
+ }
+ r := new(KubernetesUsageSpec)
+ r.Cpu = m.Cpu.CloneVT()
+ r.Mem = m.Mem.CloneVT()
+ r.Storage = m.Storage.CloneVT()
+ r.Pods = m.Pods.CloneVT()
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *KubernetesUsageSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ImagePullRequestSpec_NodeImageList) CloneVT() *ImagePullRequestSpec_NodeImageList {
+ if m == nil {
+ return (*ImagePullRequestSpec_NodeImageList)(nil)
+ }
+ r := new(ImagePullRequestSpec_NodeImageList)
+ r.Node = m.Node
+ if rhs := m.Images; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.Images = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ImagePullRequestSpec_NodeImageList) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ImagePullRequestSpec) CloneVT() *ImagePullRequestSpec {
+ if m == nil {
+ return (*ImagePullRequestSpec)(nil)
+ }
+ r := new(ImagePullRequestSpec)
+ if rhs := m.NodeImageList; rhs != nil {
+ tmpContainer := make([]*ImagePullRequestSpec_NodeImageList, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.NodeImageList = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ImagePullRequestSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ImagePullStatusSpec) CloneVT() *ImagePullStatusSpec {
+ if m == nil {
+ return (*ImagePullStatusSpec)(nil)
+ }
+ r := new(ImagePullStatusSpec)
+ r.LastProcessedNode = m.LastProcessedNode
+ r.LastProcessedImage = m.LastProcessedImage
+ r.LastProcessedError = m.LastProcessedError
+ r.ProcessedCount = m.ProcessedCount
+ r.TotalCount = m.TotalCount
+ r.RequestVersion = m.RequestVersion
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ImagePullStatusSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *SchematicSpec) CloneVT() *SchematicSpec {
+ if m == nil {
+ return (*SchematicSpec)(nil)
+ }
+ r := new(SchematicSpec)
+ if rhs := m.Extensions; rhs != nil {
+ tmpContainer := make([]string, len(rhs))
+ copy(tmpContainer, rhs)
+ r.Extensions = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *SchematicSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *TalosExtensionsSpec_Info) CloneVT() *TalosExtensionsSpec_Info {
+ if m == nil {
+ return (*TalosExtensionsSpec_Info)(nil)
+ }
+ r := new(TalosExtensionsSpec_Info)
+ r.Name = m.Name
+ r.Author = m.Author
+ r.Version = m.Version
+ r.Description = m.Description
+ r.Ref = m.Ref
+ r.Digest = m.Digest
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *TalosExtensionsSpec_Info) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *TalosExtensionsSpec) CloneVT() *TalosExtensionsSpec {
+ if m == nil {
+ return (*TalosExtensionsSpec)(nil)
+ }
+ r := new(TalosExtensionsSpec)
+ if rhs := m.Items; rhs != nil {
+ tmpContainer := make([]*TalosExtensionsSpec_Info, len(rhs))
+ for k, v := range rhs {
+ tmpContainer[k] = v.CloneVT()
+ }
+ r.Items = tmpContainer
+ }
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *TalosExtensionsSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *SchematicConfigurationSpec) CloneVT() *SchematicConfigurationSpec {
+ if m == nil {
+ return (*SchematicConfigurationSpec)(nil)
+ }
+ r := new(SchematicConfigurationSpec)
+ r.SchematicId = m.SchematicId
+ r.Target = m.Target
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *SchematicConfigurationSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (this *MachineSpec) EqualVT(that *MachineSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.ManagementAddress != that.ManagementAddress {
+ return false
+ }
+ if this.Connected != that.Connected {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineStatusSpec_HardwareStatus_Processor) EqualVT(that *MachineStatusSpec_HardwareStatus_Processor) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.CoreCount != that.CoreCount {
+ return false
+ }
+ if this.ThreadCount != that.ThreadCount {
+ return false
+ }
+ if this.Frequency != that.Frequency {
+ return false
+ }
+ if this.Description != that.Description {
+ return false
+ }
+ if this.Manufacturer != that.Manufacturer {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineStatusSpec_HardwareStatus_Processor) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineStatusSpec_HardwareStatus_Processor)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineStatusSpec_HardwareStatus_MemoryModule) EqualVT(that *MachineStatusSpec_HardwareStatus_MemoryModule) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.SizeMb != that.SizeMb {
+ return false
+ }
+ if this.Description != that.Description {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineStatusSpec_HardwareStatus_MemoryModule) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineStatusSpec_HardwareStatus_MemoryModule)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineStatusSpec_HardwareStatus_BlockDevice) EqualVT(that *MachineStatusSpec_HardwareStatus_BlockDevice) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Size != that.Size {
+ return false
+ }
+ if this.Model != that.Model {
+ return false
+ }
+ if this.LinuxName != that.LinuxName {
+ return false
+ }
+ if this.Name != that.Name {
+ return false
+ }
+ if this.Serial != that.Serial {
+ return false
+ }
+ if this.Uuid != that.Uuid {
+ return false
+ }
+ if this.Wwid != that.Wwid {
+ return false
+ }
+ if this.Type != that.Type {
+ return false
+ }
+ if this.BusPath != that.BusPath {
+ return false
+ }
+ if this.SystemDisk != that.SystemDisk {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineStatusSpec_HardwareStatus_BlockDevice) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineStatusSpec_HardwareStatus_BlockDevice)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineStatusSpec_HardwareStatus) EqualVT(that *MachineStatusSpec_HardwareStatus) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.Processors) != len(that.Processors) {
+ return false
+ }
+ for i, vx := range this.Processors {
+ vy := that.Processors[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &MachineStatusSpec_HardwareStatus_Processor{}
+ }
+ if q == nil {
+ q = &MachineStatusSpec_HardwareStatus_Processor{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ if len(this.MemoryModules) != len(that.MemoryModules) {
+ return false
+ }
+ for i, vx := range this.MemoryModules {
+ vy := that.MemoryModules[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &MachineStatusSpec_HardwareStatus_MemoryModule{}
+ }
+ if q == nil {
+ q = &MachineStatusSpec_HardwareStatus_MemoryModule{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ if len(this.Blockdevices) != len(that.Blockdevices) {
+ return false
+ }
+ for i, vx := range this.Blockdevices {
+ vy := that.Blockdevices[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &MachineStatusSpec_HardwareStatus_BlockDevice{}
+ }
+ if q == nil {
+ q = &MachineStatusSpec_HardwareStatus_BlockDevice{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ if this.Arch != that.Arch {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineStatusSpec_HardwareStatus) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineStatusSpec_HardwareStatus)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) EqualVT(that *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.LinuxName != that.LinuxName {
+ return false
+ }
+ if this.HardwareAddress != that.HardwareAddress {
+ return false
+ }
+ if this.SpeedMbps != that.SpeedMbps {
+ return false
+ }
+ if this.LinkUp != that.LinkUp {
+ return false
+ }
+ if this.Description != that.Description {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineStatusSpec_NetworkStatus_NetworkLinkStatus)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineStatusSpec_NetworkStatus) EqualVT(that *MachineStatusSpec_NetworkStatus) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Hostname != that.Hostname {
+ return false
+ }
+ if this.Domainname != that.Domainname {
+ return false
+ }
+ if len(this.Addresses) != len(that.Addresses) {
+ return false
+ }
+ for i, vx := range this.Addresses {
+ vy := that.Addresses[i]
+ if vx != vy {
+ return false
+ }
+ }
+ if len(this.DefaultGateways) != len(that.DefaultGateways) {
+ return false
+ }
+ for i, vx := range this.DefaultGateways {
+ vy := that.DefaultGateways[i]
+ if vx != vy {
+ return false
+ }
+ }
+ if len(this.NetworkLinks) != len(that.NetworkLinks) {
+ return false
+ }
+ for i, vx := range this.NetworkLinks {
+ vy := that.NetworkLinks[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &MachineStatusSpec_NetworkStatus_NetworkLinkStatus{}
+ }
+ if q == nil {
+ q = &MachineStatusSpec_NetworkStatus_NetworkLinkStatus{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineStatusSpec_NetworkStatus) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineStatusSpec_NetworkStatus)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineStatusSpec_PlatformMetadata) EqualVT(that *MachineStatusSpec_PlatformMetadata) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Platform != that.Platform {
+ return false
+ }
+ if this.Hostname != that.Hostname {
+ return false
+ }
+ if this.Region != that.Region {
+ return false
+ }
+ if this.Zone != that.Zone {
+ return false
+ }
+ if this.InstanceType != that.InstanceType {
+ return false
+ }
+ if this.InstanceId != that.InstanceId {
+ return false
+ }
+ if this.ProviderId != that.ProviderId {
+ return false
+ }
+ if this.Spot != that.Spot {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineStatusSpec_PlatformMetadata) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineStatusSpec_PlatformMetadata)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineStatusSpec_Schematic) EqualVT(that *MachineStatusSpec_Schematic) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Id != that.Id {
+ return false
+ }
+ if this.Invalid != that.Invalid {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineStatusSpec_Schematic) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineStatusSpec_Schematic)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineStatusSpec) EqualVT(that *MachineStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.TalosVersion != that.TalosVersion {
+ return false
+ }
+ if !this.Hardware.EqualVT(that.Hardware) {
+ return false
+ }
+ if !this.Network.EqualVT(that.Network) {
+ return false
+ }
+ if this.LastError != that.LastError {
+ return false
+ }
+ if this.ManagementAddress != that.ManagementAddress {
+ return false
+ }
+ if this.Connected != that.Connected {
+ return false
+ }
+ if this.Maintenance != that.Maintenance {
+ return false
+ }
+ if this.Cluster != that.Cluster {
+ return false
+ }
+ if this.Role != that.Role {
+ return false
+ }
+ if !this.PlatformMetadata.EqualVT(that.PlatformMetadata) {
+ return false
+ }
+ if len(this.ImageLabels) != len(that.ImageLabels) {
+ return false
+ }
+ for i, vx := range this.ImageLabels {
+ vy, ok := that.ImageLabels[i]
+ if !ok {
+ return false
+ }
+ if vx != vy {
+ return false
+ }
+ }
+ if !this.Schematic.EqualVT(that.Schematic) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *TalosConfigSpec) EqualVT(that *TalosConfigSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Ca != that.Ca {
+ return false
+ }
+ if this.Crt != that.Crt {
+ return false
+ }
+ if this.Key != that.Key {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *TalosConfigSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*TalosConfigSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterSpec_Features) EqualVT(that *ClusterSpec_Features) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.EnableWorkloadProxy != that.EnableWorkloadProxy {
+ return false
+ }
+ if this.DiskEncryption != that.DiskEncryption {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterSpec_Features) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterSpec_Features)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterSpec) EqualVT(that *ClusterSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.InstallImage != that.InstallImage {
+ return false
+ }
+ if this.KubernetesVersion != that.KubernetesVersion {
+ return false
+ }
+ if this.TalosVersion != that.TalosVersion {
+ return false
+ }
+ if !this.Features.EqualVT(that.Features) {
+ return false
+ }
+ if !this.BackupConfiguration.EqualVT(that.BackupConfiguration) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *EtcdBackupConf) EqualVT(that *EtcdBackupConf) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if !(*durationpb1.Duration)(this.Interval).EqualVT((*durationpb1.Duration)(that.Interval)) {
+ return false
+ }
+ if this.Enabled != that.Enabled {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *EtcdBackupConf) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*EtcdBackupConf)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *EtcdBackupEncryptionSpec) EqualVT(that *EtcdBackupEncryptionSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if string(this.EncryptionKey) != string(that.EncryptionKey) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *EtcdBackupEncryptionSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*EtcdBackupEncryptionSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *EtcdBackupHeader) EqualVT(that *EtcdBackupHeader) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Version != that.Version {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *EtcdBackupHeader) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*EtcdBackupHeader)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *EtcdBackupSpec) EqualVT(that *EtcdBackupSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if !(*timestamppb1.Timestamp)(this.CreatedAt).EqualVT((*timestamppb1.Timestamp)(that.CreatedAt)) {
+ return false
+ }
+ if this.Snapshot != that.Snapshot {
+ return false
+ }
+ if this.Size != that.Size {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *EtcdBackupSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*EtcdBackupSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *BackupDataSpec) EqualVT(that *BackupDataSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if !(*durationpb1.Duration)(this.Interval).EqualVT((*durationpb1.Duration)(that.Interval)) {
+ return false
+ }
+ if this.ClusterUuid != that.ClusterUuid {
+ return false
+ }
+ if string(this.EncryptionKey) != string(that.EncryptionKey) {
+ return false
+ }
+ if this.AesCbcEncryptionSecret != that.AesCbcEncryptionSecret {
+ return false
+ }
+ if this.SecretboxEncryptionSecret != that.SecretboxEncryptionSecret {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *BackupDataSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*BackupDataSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *EtcdBackupS3ConfSpec) EqualVT(that *EtcdBackupS3ConfSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Bucket != that.Bucket {
+ return false
+ }
+ if this.Region != that.Region {
+ return false
+ }
+ if this.Endpoint != that.Endpoint {
+ return false
+ }
+ if this.AccessKeyId != that.AccessKeyId {
+ return false
+ }
+ if this.SecretAccessKey != that.SecretAccessKey {
+ return false
+ }
+ if this.SessionToken != that.SessionToken {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *EtcdBackupS3ConfSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*EtcdBackupS3ConfSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *EtcdBackupStatusSpec) EqualVT(that *EtcdBackupStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Status != that.Status {
+ return false
+ }
+ if this.Error != that.Error {
+ return false
+ }
+ if !(*timestamppb1.Timestamp)(this.LastBackupTime).EqualVT((*timestamppb1.Timestamp)(that.LastBackupTime)) {
+ return false
+ }
+ if !(*timestamppb1.Timestamp)(this.LastBackupAttempt).EqualVT((*timestamppb1.Timestamp)(that.LastBackupAttempt)) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *EtcdBackupStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*EtcdBackupStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *EtcdManualBackupSpec) EqualVT(that *EtcdManualBackupSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if !(*timestamppb1.Timestamp)(this.BackupAt).EqualVT((*timestamppb1.Timestamp)(that.BackupAt)) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *EtcdManualBackupSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*EtcdManualBackupSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *EtcdBackupStoreStatusSpec) EqualVT(that *EtcdBackupStoreStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.ConfigurationName != that.ConfigurationName {
+ return false
+ }
+ if this.ConfigurationError != that.ConfigurationError {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *EtcdBackupStoreStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*EtcdBackupStoreStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *EtcdBackupOverallStatusSpec) EqualVT(that *EtcdBackupOverallStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.ConfigurationName != that.ConfigurationName {
+ return false
+ }
+ if this.ConfigurationError != that.ConfigurationError {
+ return false
+ }
+ if !this.LastBackupStatus.EqualVT(that.LastBackupStatus) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *EtcdBackupOverallStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*EtcdBackupOverallStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterMachineSpec) EqualVT(that *ClusterMachineSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.KubernetesVersion != that.KubernetesVersion {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterMachineSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterMachineSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterMachineConfigPatchesSpec) EqualVT(that *ClusterMachineConfigPatchesSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.Patches) != len(that.Patches) {
+ return false
+ }
+ for i, vx := range this.Patches {
+ vy := that.Patches[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterMachineConfigPatchesSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterMachineConfigPatchesSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterMachineTalosVersionSpec) EqualVT(that *ClusterMachineTalosVersionSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.TalosVersion != that.TalosVersion {
+ return false
+ }
+ if this.SchematicId != that.SchematicId {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterMachineTalosVersionSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterMachineTalosVersionSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterMachineConfigSpec) EqualVT(that *ClusterMachineConfigSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if string(this.Data) != string(that.Data) {
+ return false
+ }
+ if this.ClusterMachineVersion != that.ClusterMachineVersion {
+ return false
+ }
+ if this.GenerationError != that.GenerationError {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterMachineConfigSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterMachineConfigSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *RedactedClusterMachineConfigSpec) EqualVT(that *RedactedClusterMachineConfigSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Data != that.Data {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *RedactedClusterMachineConfigSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*RedactedClusterMachineConfigSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterMachineIdentitySpec) EqualVT(that *ClusterMachineIdentitySpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.NodeIdentity != that.NodeIdentity {
+ return false
+ }
+ if this.EtcdMemberId != that.EtcdMemberId {
+ return false
+ }
+ if this.Nodename != that.Nodename {
+ return false
+ }
+ if len(this.NodeIps) != len(that.NodeIps) {
+ return false
+ }
+ for i, vx := range this.NodeIps {
+ vy := that.NodeIps[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterMachineIdentitySpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterMachineIdentitySpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterMachineTemplateSpec) EqualVT(that *ClusterMachineTemplateSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.InstallImage != that.InstallImage {
+ return false
+ }
+ if this.KubernetesVersion != that.KubernetesVersion {
+ return false
+ }
+ if this.InstallDisk != that.InstallDisk {
+ return false
+ }
+ if this.Patch != that.Patch {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterMachineTemplateSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterMachineTemplateSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterMachineStatusSpec) EqualVT(that *ClusterMachineStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Ready != that.Ready {
+ return false
+ }
+ if this.Stage != that.Stage {
+ return false
+ }
+ if this.ApidAvailable != that.ApidAvailable {
+ return false
+ }
+ if this.ConfigUpToDate != that.ConfigUpToDate {
+ return false
+ }
+ if this.LastConfigError != that.LastConfigError {
+ return false
+ }
+ if this.ManagementAddress != that.ManagementAddress {
+ return false
+ }
+ if this.ConfigApplyStatus != that.ConfigApplyStatus {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterMachineStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterMachineStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *Machines) EqualVT(that *Machines) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Total != that.Total {
+ return false
+ }
+ if this.Healthy != that.Healthy {
+ return false
+ }
+ if this.Connected != that.Connected {
+ return false
+ }
+ if this.Requested != that.Requested {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *Machines) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*Machines)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterStatusSpec) EqualVT(that *ClusterStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Available != that.Available {
+ return false
+ }
+ if !this.Machines.EqualVT(that.Machines) {
+ return false
+ }
+ if this.Phase != that.Phase {
+ return false
+ }
+ if this.Ready != that.Ready {
+ return false
+ }
+ if this.KubernetesAPIReady != that.KubernetesAPIReady {
+ return false
+ }
+ if this.ControlplaneReady != that.ControlplaneReady {
+ return false
+ }
+ if this.HasConnectedControlPlanes != that.HasConnectedControlPlanes {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterUUID) EqualVT(that *ClusterUUID) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Uuid != that.Uuid {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterUUID) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterUUID)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterConfigVersionSpec) EqualVT(that *ClusterConfigVersionSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Version != that.Version {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterConfigVersionSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterConfigVersionSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterMachineConfigStatusSpec) EqualVT(that *ClusterMachineConfigStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.ClusterMachineConfigVersion != that.ClusterMachineConfigVersion {
+ return false
+ }
+ if this.ClusterMachineVersion != that.ClusterMachineVersion {
+ return false
+ }
+ if this.ClusterMachineConfigSha256 != that.ClusterMachineConfigSha256 {
+ return false
+ }
+ if this.LastConfigError != that.LastConfigError {
+ return false
+ }
+ if this.TalosVersion != that.TalosVersion {
+ return false
+ }
+ if this.SchematicId != that.SchematicId {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterMachineConfigStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterMachineConfigStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterBootstrapStatusSpec) EqualVT(that *ClusterBootstrapStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Bootstrapped != that.Bootstrapped {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterBootstrapStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterBootstrapStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterSecretsSpec) EqualVT(that *ClusterSecretsSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if string(this.Data) != string(that.Data) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterSecretsSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterSecretsSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *LoadBalancerConfigSpec) EqualVT(that *LoadBalancerConfigSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.BindPort != that.BindPort {
+ return false
+ }
+ if len(this.Endpoints) != len(that.Endpoints) {
+ return false
+ }
+ for i, vx := range this.Endpoints {
+ vy := that.Endpoints[i]
+ if vx != vy {
+ return false
+ }
+ }
+ if this.SiderolinkEndpoint != that.SiderolinkEndpoint {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *LoadBalancerConfigSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*LoadBalancerConfigSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *LoadBalancerStatusSpec) EqualVT(that *LoadBalancerStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Healthy != that.Healthy {
+ return false
+ }
+ if this.Stopped != that.Stopped {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *LoadBalancerStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*LoadBalancerStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubernetesVersionSpec) EqualVT(that *KubernetesVersionSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Version != that.Version {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubernetesVersionSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubernetesVersionSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *TalosVersionSpec) EqualVT(that *TalosVersionSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Version != that.Version {
+ return false
+ }
+ if len(this.CompatibleKubernetesVersions) != len(that.CompatibleKubernetesVersions) {
+ return false
+ }
+ for i, vx := range this.CompatibleKubernetesVersions {
+ vy := that.CompatibleKubernetesVersions[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *TalosVersionSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*TalosVersionSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *InstallationMediaSpec) EqualVT(that *InstallationMediaSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Name != that.Name {
+ return false
+ }
+ if this.Architecture != that.Architecture {
+ return false
+ }
+ if this.Profile != that.Profile {
+ return false
+ }
+ if this.ContentType != that.ContentType {
+ return false
+ }
+ if this.SrcFilePrefix != that.SrcFilePrefix {
+ return false
+ }
+ if this.DestFilePrefix != that.DestFilePrefix {
+ return false
+ }
+ if this.Extension != that.Extension {
+ return false
+ }
+ if this.NoSecureBoot != that.NoSecureBoot {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *InstallationMediaSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*InstallationMediaSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ConfigPatchSpec) EqualVT(that *ConfigPatchSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Data != that.Data {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ConfigPatchSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ConfigPatchSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineSetSpec_MachineClass) EqualVT(that *MachineSetSpec_MachineClass) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Name != that.Name {
+ return false
+ }
+ if this.MachineCount != that.MachineCount {
+ return false
+ }
+ if this.AllocationType != that.AllocationType {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineSetSpec_MachineClass) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineSetSpec_MachineClass)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineSetSpec_BootstrapSpec) EqualVT(that *MachineSetSpec_BootstrapSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.ClusterUuid != that.ClusterUuid {
+ return false
+ }
+ if this.Snapshot != that.Snapshot {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineSetSpec_BootstrapSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineSetSpec_BootstrapSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineSetSpec_RollingUpdateStrategyConfig) EqualVT(that *MachineSetSpec_RollingUpdateStrategyConfig) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.MaxParallelism != that.MaxParallelism {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineSetSpec_RollingUpdateStrategyConfig) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineSetSpec_RollingUpdateStrategyConfig)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineSetSpec_UpdateStrategyConfig) EqualVT(that *MachineSetSpec_UpdateStrategyConfig) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if !this.Rolling.EqualVT(that.Rolling) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineSetSpec_UpdateStrategyConfig) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineSetSpec_UpdateStrategyConfig)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineSetSpec) EqualVT(that *MachineSetSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.UpdateStrategy != that.UpdateStrategy {
+ return false
+ }
+ if !this.MachineClass.EqualVT(that.MachineClass) {
+ return false
+ }
+ if !this.BootstrapSpec.EqualVT(that.BootstrapSpec) {
+ return false
+ }
+ if this.DeleteStrategy != that.DeleteStrategy {
+ return false
+ }
+ if !this.UpdateStrategyConfig.EqualVT(that.UpdateStrategyConfig) {
+ return false
+ }
+ if !this.DeleteStrategyConfig.EqualVT(that.DeleteStrategyConfig) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineSetSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineSetSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *TalosUpgradeStatusSpec) EqualVT(that *TalosUpgradeStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Phase != that.Phase {
+ return false
+ }
+ if this.Error != that.Error {
+ return false
+ }
+ if this.Step != that.Step {
+ return false
+ }
+ if this.Status != that.Status {
+ return false
+ }
+ if this.LastUpgradeVersion != that.LastUpgradeVersion {
+ return false
+ }
+ if this.CurrentUpgradeVersion != that.CurrentUpgradeVersion {
+ return false
+ }
+ if len(this.UpgradeVersions) != len(that.UpgradeVersions) {
+ return false
+ }
+ for i, vx := range this.UpgradeVersions {
+ vy := that.UpgradeVersions[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *TalosUpgradeStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*TalosUpgradeStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineSetStatusSpec) EqualVT(that *MachineSetStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Phase != that.Phase {
+ return false
+ }
+ if this.Ready != that.Ready {
+ return false
+ }
+ if this.Error != that.Error {
+ return false
+ }
+ if !this.Machines.EqualVT(that.Machines) {
+ return false
+ }
+ if this.ConfigHash != that.ConfigHash {
+ return false
+ }
+ if !this.MachineClass.EqualVT(that.MachineClass) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineSetStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineSetStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineSetNodeSpec) EqualVT(that *MachineSetNodeSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineSetNodeSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineSetNodeSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineLabelsSpec) EqualVT(that *MachineLabelsSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineLabelsSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineLabelsSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineStatusSnapshotSpec) EqualVT(that *MachineStatusSnapshotSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if equal, ok := interface{}(this.MachineStatus).(interface {
+ EqualVT(*machine.MachineStatusEvent) bool
+ }); ok {
+ if !equal.EqualVT(that.MachineStatus) {
+ return false
+ }
+ } else if !proto.Equal(this.MachineStatus, that.MachineStatus) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineStatusSnapshotSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineStatusSnapshotSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ControlPlaneStatusSpec_Condition) EqualVT(that *ControlPlaneStatusSpec_Condition) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Type != that.Type {
+ return false
+ }
+ if this.Reason != that.Reason {
+ return false
+ }
+ if this.Status != that.Status {
+ return false
+ }
+ if this.Severity != that.Severity {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ControlPlaneStatusSpec_Condition) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ControlPlaneStatusSpec_Condition)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ControlPlaneStatusSpec) EqualVT(that *ControlPlaneStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.Conditions) != len(that.Conditions) {
+ return false
+ }
+ for i, vx := range this.Conditions {
+ vy := that.Conditions[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &ControlPlaneStatusSpec_Condition{}
+ }
+ if q == nil {
+ q = &ControlPlaneStatusSpec_Condition{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ControlPlaneStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ControlPlaneStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterEndpointSpec) EqualVT(that *ClusterEndpointSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.ManagementAddresses) != len(that.ManagementAddresses) {
+ return false
+ }
+ for i, vx := range this.ManagementAddresses {
+ vy := that.ManagementAddresses[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterEndpointSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterEndpointSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubernetesStatusSpec_NodeStatus) EqualVT(that *KubernetesStatusSpec_NodeStatus) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Nodename != that.Nodename {
+ return false
+ }
+ if this.KubeletVersion != that.KubeletVersion {
+ return false
+ }
+ if this.Ready != that.Ready {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubernetesStatusSpec_NodeStatus) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubernetesStatusSpec_NodeStatus)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubernetesStatusSpec_StaticPodStatus) EqualVT(that *KubernetesStatusSpec_StaticPodStatus) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.App != that.App {
+ return false
+ }
+ if this.Version != that.Version {
+ return false
+ }
+ if this.Ready != that.Ready {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubernetesStatusSpec_StaticPodStatus) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubernetesStatusSpec_StaticPodStatus)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubernetesStatusSpec_NodeStaticPods) EqualVT(that *KubernetesStatusSpec_NodeStaticPods) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Nodename != that.Nodename {
+ return false
+ }
+ if len(this.StaticPods) != len(that.StaticPods) {
+ return false
+ }
+ for i, vx := range this.StaticPods {
+ vy := that.StaticPods[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &KubernetesStatusSpec_StaticPodStatus{}
+ }
+ if q == nil {
+ q = &KubernetesStatusSpec_StaticPodStatus{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubernetesStatusSpec_NodeStaticPods) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubernetesStatusSpec_NodeStaticPods)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubernetesStatusSpec) EqualVT(that *KubernetesStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.Nodes) != len(that.Nodes) {
+ return false
+ }
+ for i, vx := range this.Nodes {
+ vy := that.Nodes[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &KubernetesStatusSpec_NodeStatus{}
+ }
+ if q == nil {
+ q = &KubernetesStatusSpec_NodeStatus{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ if len(this.StaticPods) != len(that.StaticPods) {
+ return false
+ }
+ for i, vx := range this.StaticPods {
+ vy := that.StaticPods[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &KubernetesStatusSpec_NodeStaticPods{}
+ }
+ if q == nil {
+ q = &KubernetesStatusSpec_NodeStaticPods{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubernetesStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubernetesStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubernetesUpgradeStatusSpec) EqualVT(that *KubernetesUpgradeStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Phase != that.Phase {
+ return false
+ }
+ if this.Error != that.Error {
+ return false
+ }
+ if this.Step != that.Step {
+ return false
+ }
+ if this.Status != that.Status {
+ return false
+ }
+ if this.LastUpgradeVersion != that.LastUpgradeVersion {
+ return false
+ }
+ if len(this.UpgradeVersions) != len(that.UpgradeVersions) {
+ return false
+ }
+ for i, vx := range this.UpgradeVersions {
+ vy := that.UpgradeVersions[i]
+ if vx != vy {
+ return false
+ }
+ }
+ if this.CurrentUpgradeVersion != that.CurrentUpgradeVersion {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubernetesUpgradeStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubernetesUpgradeStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubernetesUpgradeManifestStatusSpec) EqualVT(that *KubernetesUpgradeManifestStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.OutOfSync != that.OutOfSync {
+ return false
+ }
+ if this.LastFatalError != that.LastFatalError {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubernetesUpgradeManifestStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubernetesUpgradeManifestStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *DestroyStatusSpec) EqualVT(that *DestroyStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Phase != that.Phase {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *DestroyStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*DestroyStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *OngoingTaskSpec) EqualVT(that *OngoingTaskSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Details == nil && that.Details != nil {
+ return false
+ } else if this.Details != nil {
+ if that.Details == nil {
+ return false
+ }
+ if !this.Details.(interface {
+ EqualVT(isOngoingTaskSpec_Details) bool
+ }).EqualVT(that.Details) {
+ return false
+ }
+ }
+ if this.Title != that.Title {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *OngoingTaskSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*OngoingTaskSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *OngoingTaskSpec_TalosUpgrade) EqualVT(thatIface isOngoingTaskSpec_Details) bool {
+ that, ok := thatIface.(*OngoingTaskSpec_TalosUpgrade)
+ if !ok {
+ return false
+ }
+ if this == that {
+ return true
+ }
+ if this == nil && that != nil || this != nil && that == nil {
+ return false
+ }
+ if p, q := this.TalosUpgrade, that.TalosUpgrade; p != q {
+ if p == nil {
+ p = &TalosUpgradeStatusSpec{}
+ }
+ if q == nil {
+ q = &TalosUpgradeStatusSpec{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ return true
+}
+
+func (this *OngoingTaskSpec_KubernetesUpgrade) EqualVT(thatIface isOngoingTaskSpec_Details) bool {
+ that, ok := thatIface.(*OngoingTaskSpec_KubernetesUpgrade)
+ if !ok {
+ return false
+ }
+ if this == that {
+ return true
+ }
+ if this == nil && that != nil || this != nil && that == nil {
+ return false
+ }
+ if p, q := this.KubernetesUpgrade, that.KubernetesUpgrade; p != q {
+ if p == nil {
+ p = &KubernetesUpgradeStatusSpec{}
+ }
+ if q == nil {
+ q = &KubernetesUpgradeStatusSpec{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ return true
+}
+
+func (this *OngoingTaskSpec_Destroy) EqualVT(thatIface isOngoingTaskSpec_Details) bool {
+ that, ok := thatIface.(*OngoingTaskSpec_Destroy)
+ if !ok {
+ return false
+ }
+ if this == that {
+ return true
+ }
+ if this == nil && that != nil || this != nil && that == nil {
+ return false
+ }
+ if p, q := this.Destroy, that.Destroy; p != q {
+ if p == nil {
+ p = &DestroyStatusSpec{}
+ }
+ if q == nil {
+ q = &DestroyStatusSpec{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ return true
+}
+
+func (this *ClusterMachineEncryptionKeySpec) EqualVT(that *ClusterMachineEncryptionKeySpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if string(this.Data) != string(that.Data) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterMachineEncryptionKeySpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterMachineEncryptionKeySpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ExposedServiceSpec) EqualVT(that *ExposedServiceSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Port != that.Port {
+ return false
+ }
+ if this.Label != that.Label {
+ return false
+ }
+ if this.IconBase64 != that.IconBase64 {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ExposedServiceSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ExposedServiceSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *FeaturesConfigSpec) EqualVT(that *FeaturesConfigSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.EnableWorkloadProxying != that.EnableWorkloadProxying {
+ return false
+ }
+ if !this.EtcdBackupSettings.EqualVT(that.EtcdBackupSettings) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *FeaturesConfigSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*FeaturesConfigSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *EtcdBackupSettings) EqualVT(that *EtcdBackupSettings) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if !(*durationpb1.Duration)(this.TickInterval).EqualVT((*durationpb1.Duration)(that.TickInterval)) {
+ return false
+ }
+ if !(*durationpb1.Duration)(this.MinInterval).EqualVT((*durationpb1.Duration)(that.MinInterval)) {
+ return false
+ }
+ if !(*durationpb1.Duration)(this.MaxInterval).EqualVT((*durationpb1.Duration)(that.MaxInterval)) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *EtcdBackupSettings) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*EtcdBackupSettings)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineClassSpec) EqualVT(that *MachineClassSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.MatchLabels) != len(that.MatchLabels) {
+ return false
+ }
+ for i, vx := range this.MatchLabels {
+ vy := that.MatchLabels[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineClassSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineClassSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *MachineConfigGenOptionsSpec) EqualVT(that *MachineConfigGenOptionsSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.InstallDisk != that.InstallDisk {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *MachineConfigGenOptionsSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*MachineConfigGenOptionsSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *EtcdAuditResultSpec) EqualVT(that *EtcdAuditResultSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.EtcdMemberIds) != len(that.EtcdMemberIds) {
+ return false
+ }
+ for i, vx := range this.EtcdMemberIds {
+ vy := that.EtcdMemberIds[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *EtcdAuditResultSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*EtcdAuditResultSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubeconfigSpec) EqualVT(that *KubeconfigSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if string(this.Data) != string(that.Data) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubeconfigSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubeconfigSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubernetesUsageSpec_Quantity) EqualVT(that *KubernetesUsageSpec_Quantity) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Requests != that.Requests {
+ return false
+ }
+ if this.Limits != that.Limits {
+ return false
+ }
+ if this.Capacity != that.Capacity {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubernetesUsageSpec_Quantity) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubernetesUsageSpec_Quantity)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubernetesUsageSpec_Pod) EqualVT(that *KubernetesUsageSpec_Pod) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Count != that.Count {
+ return false
+ }
+ if this.Capacity != that.Capacity {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubernetesUsageSpec_Pod) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubernetesUsageSpec_Pod)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *KubernetesUsageSpec) EqualVT(that *KubernetesUsageSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if !this.Cpu.EqualVT(that.Cpu) {
+ return false
+ }
+ if !this.Mem.EqualVT(that.Mem) {
+ return false
+ }
+ if !this.Storage.EqualVT(that.Storage) {
+ return false
+ }
+ if !this.Pods.EqualVT(that.Pods) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *KubernetesUsageSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*KubernetesUsageSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ImagePullRequestSpec_NodeImageList) EqualVT(that *ImagePullRequestSpec_NodeImageList) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Node != that.Node {
+ return false
+ }
+ if len(this.Images) != len(that.Images) {
+ return false
+ }
+ for i, vx := range this.Images {
+ vy := that.Images[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ImagePullRequestSpec_NodeImageList) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ImagePullRequestSpec_NodeImageList)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ImagePullRequestSpec) EqualVT(that *ImagePullRequestSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.NodeImageList) != len(that.NodeImageList) {
+ return false
+ }
+ for i, vx := range this.NodeImageList {
+ vy := that.NodeImageList[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &ImagePullRequestSpec_NodeImageList{}
+ }
+ if q == nil {
+ q = &ImagePullRequestSpec_NodeImageList{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ImagePullRequestSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ImagePullRequestSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ImagePullStatusSpec) EqualVT(that *ImagePullStatusSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.LastProcessedNode != that.LastProcessedNode {
+ return false
+ }
+ if this.LastProcessedImage != that.LastProcessedImage {
+ return false
+ }
+ if this.LastProcessedError != that.LastProcessedError {
+ return false
+ }
+ if this.ProcessedCount != that.ProcessedCount {
+ return false
+ }
+ if this.TotalCount != that.TotalCount {
+ return false
+ }
+ if this.RequestVersion != that.RequestVersion {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ImagePullStatusSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ImagePullStatusSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *SchematicSpec) EqualVT(that *SchematicSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.Extensions) != len(that.Extensions) {
+ return false
+ }
+ for i, vx := range this.Extensions {
+ vy := that.Extensions[i]
+ if vx != vy {
+ return false
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *SchematicSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*SchematicSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *TalosExtensionsSpec_Info) EqualVT(that *TalosExtensionsSpec_Info) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Name != that.Name {
+ return false
+ }
+ if this.Author != that.Author {
+ return false
+ }
+ if this.Version != that.Version {
+ return false
+ }
+ if this.Description != that.Description {
+ return false
+ }
+ if this.Ref != that.Ref {
+ return false
+ }
+ if this.Digest != that.Digest {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *TalosExtensionsSpec_Info) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*TalosExtensionsSpec_Info)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *TalosExtensionsSpec) EqualVT(that *TalosExtensionsSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if len(this.Items) != len(that.Items) {
+ return false
+ }
+ for i, vx := range this.Items {
+ vy := that.Items[i]
+ if p, q := vx, vy; p != q {
+ if p == nil {
+ p = &TalosExtensionsSpec_Info{}
+ }
+ if q == nil {
+ q = &TalosExtensionsSpec_Info{}
+ }
+ if !p.EqualVT(q) {
+ return false
+ }
+ }
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *TalosExtensionsSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*TalosExtensionsSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *SchematicConfigurationSpec) EqualVT(that *SchematicConfigurationSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.SchematicId != that.SchematicId {
+ return false
+ }
+ if this.Target != that.Target {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *SchematicConfigurationSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*SchematicConfigurationSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (m *MachineSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Connected {
+ i--
+ if m.Connected {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.ManagementAddress) > 0 {
+ i -= len(m.ManagementAddress)
+ copy(dAtA[i:], m.ManagementAddress)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ManagementAddress)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineStatusSpec_HardwareStatus_Processor) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineStatusSpec_HardwareStatus_Processor) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineStatusSpec_HardwareStatus_Processor) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Manufacturer) > 0 {
+ i -= len(m.Manufacturer)
+ copy(dAtA[i:], m.Manufacturer)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Manufacturer)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.Description) > 0 {
+ i -= len(m.Description)
+ copy(dAtA[i:], m.Description)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Description)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Frequency != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Frequency))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.ThreadCount != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.ThreadCount))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.CoreCount != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.CoreCount))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineStatusSpec_HardwareStatus_MemoryModule) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineStatusSpec_HardwareStatus_MemoryModule) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineStatusSpec_HardwareStatus_MemoryModule) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Description) > 0 {
+ i -= len(m.Description)
+ copy(dAtA[i:], m.Description)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Description)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.SizeMb != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.SizeMb))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineStatusSpec_HardwareStatus_BlockDevice) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineStatusSpec_HardwareStatus_BlockDevice) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineStatusSpec_HardwareStatus_BlockDevice) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.SystemDisk {
+ i--
+ if m.SystemDisk {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x58
+ }
+ if len(m.BusPath) > 0 {
+ i -= len(m.BusPath)
+ copy(dAtA[i:], m.BusPath)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.BusPath)))
+ i--
+ dAtA[i] = 0x52
+ }
+ if len(m.Type) > 0 {
+ i -= len(m.Type)
+ copy(dAtA[i:], m.Type)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Type)))
+ i--
+ dAtA[i] = 0x4a
+ }
+ if len(m.Wwid) > 0 {
+ i -= len(m.Wwid)
+ copy(dAtA[i:], m.Wwid)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Wwid)))
+ i--
+ dAtA[i] = 0x42
+ }
+ if len(m.Uuid) > 0 {
+ i -= len(m.Uuid)
+ copy(dAtA[i:], m.Uuid)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Uuid)))
+ i--
+ dAtA[i] = 0x3a
+ }
+ if len(m.Serial) > 0 {
+ i -= len(m.Serial)
+ copy(dAtA[i:], m.Serial)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Serial)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.LinuxName) > 0 {
+ i -= len(m.LinuxName)
+ copy(dAtA[i:], m.LinuxName)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.LinuxName)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Model) > 0 {
+ i -= len(m.Model)
+ copy(dAtA[i:], m.Model)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Model)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Size != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Size))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineStatusSpec_HardwareStatus) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineStatusSpec_HardwareStatus) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineStatusSpec_HardwareStatus) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Arch) > 0 {
+ i -= len(m.Arch)
+ copy(dAtA[i:], m.Arch)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Arch)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Blockdevices) > 0 {
+ for iNdEx := len(m.Blockdevices) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.Blockdevices[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.MemoryModules) > 0 {
+ for iNdEx := len(m.MemoryModules) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.MemoryModules[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Processors) > 0 {
+ for iNdEx := len(m.Processors) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.Processors[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Description) > 0 {
+ i -= len(m.Description)
+ copy(dAtA[i:], m.Description)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Description)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.LinkUp {
+ i--
+ if m.LinkUp {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.SpeedMbps != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.SpeedMbps))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.HardwareAddress) > 0 {
+ i -= len(m.HardwareAddress)
+ copy(dAtA[i:], m.HardwareAddress)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HardwareAddress)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.LinuxName) > 0 {
+ i -= len(m.LinuxName)
+ copy(dAtA[i:], m.LinuxName)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.LinuxName)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineStatusSpec_NetworkStatus) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineStatusSpec_NetworkStatus) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineStatusSpec_NetworkStatus) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.NetworkLinks) > 0 {
+ for iNdEx := len(m.NetworkLinks) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.NetworkLinks[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x2a
+ }
+ }
+ if len(m.DefaultGateways) > 0 {
+ for iNdEx := len(m.DefaultGateways) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.DefaultGateways[iNdEx])
+ copy(dAtA[i:], m.DefaultGateways[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DefaultGateways[iNdEx])))
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.Addresses) > 0 {
+ for iNdEx := len(m.Addresses) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Addresses[iNdEx])
+ copy(dAtA[i:], m.Addresses[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Addresses[iNdEx])))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.Domainname) > 0 {
+ i -= len(m.Domainname)
+ copy(dAtA[i:], m.Domainname)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Domainname)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Hostname) > 0 {
+ i -= len(m.Hostname)
+ copy(dAtA[i:], m.Hostname)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Hostname)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineStatusSpec_PlatformMetadata) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineStatusSpec_PlatformMetadata) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineStatusSpec_PlatformMetadata) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Spot {
+ i--
+ if m.Spot {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x40
+ }
+ if len(m.ProviderId) > 0 {
+ i -= len(m.ProviderId)
+ copy(dAtA[i:], m.ProviderId)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ProviderId)))
+ i--
+ dAtA[i] = 0x3a
+ }
+ if len(m.InstanceId) > 0 {
+ i -= len(m.InstanceId)
+ copy(dAtA[i:], m.InstanceId)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.InstanceId)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.InstanceType) > 0 {
+ i -= len(m.InstanceType)
+ copy(dAtA[i:], m.InstanceType)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.InstanceType)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.Zone) > 0 {
+ i -= len(m.Zone)
+ copy(dAtA[i:], m.Zone)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Zone)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Region) > 0 {
+ i -= len(m.Region)
+ copy(dAtA[i:], m.Region)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Region)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Hostname) > 0 {
+ i -= len(m.Hostname)
+ copy(dAtA[i:], m.Hostname)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Hostname)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Platform) > 0 {
+ i -= len(m.Platform)
+ copy(dAtA[i:], m.Platform)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Platform)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineStatusSpec_Schematic) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineStatusSpec_Schematic) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineStatusSpec_Schematic) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Invalid {
+ i--
+ if m.Invalid {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Id) > 0 {
+ i -= len(m.Id)
+ copy(dAtA[i:], m.Id)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Id)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Schematic != nil {
+ size, err := m.Schematic.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x72
+ }
+ if len(m.ImageLabels) > 0 {
+ for k := range m.ImageLabels {
+ v := m.ImageLabels[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x6a
+ }
+ }
+ if m.PlatformMetadata != nil {
+ size, err := m.PlatformMetadata.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x5a
+ }
+ if m.Role != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Role))
+ i--
+ dAtA[i] = 0x50
+ }
+ if len(m.Cluster) > 0 {
+ i -= len(m.Cluster)
+ copy(dAtA[i:], m.Cluster)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Cluster)))
+ i--
+ dAtA[i] = 0x4a
+ }
+ if m.Maintenance {
+ i--
+ if m.Maintenance {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x38
+ }
+ if m.Connected {
+ i--
+ if m.Connected {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x30
+ }
+ if len(m.ManagementAddress) > 0 {
+ i -= len(m.ManagementAddress)
+ copy(dAtA[i:], m.ManagementAddress)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ManagementAddress)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.LastError) > 0 {
+ i -= len(m.LastError)
+ copy(dAtA[i:], m.LastError)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.LastError)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Network != nil {
+ size, err := m.Network.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.Hardware != nil {
+ size, err := m.Hardware.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.TalosVersion) > 0 {
+ i -= len(m.TalosVersion)
+ copy(dAtA[i:], m.TalosVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TalosVersion)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TalosConfigSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TalosConfigSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *TalosConfigSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Key) > 0 {
+ i -= len(m.Key)
+ copy(dAtA[i:], m.Key)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Key)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Crt) > 0 {
+ i -= len(m.Crt)
+ copy(dAtA[i:], m.Crt)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Crt)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Ca) > 0 {
+ i -= len(m.Ca)
+ copy(dAtA[i:], m.Ca)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Ca)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterSpec_Features) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterSpec_Features) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterSpec_Features) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.DiskEncryption {
+ i--
+ if m.DiskEncryption {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.EnableWorkloadProxy {
+ i--
+ if m.EnableWorkloadProxy {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.BackupConfiguration != nil {
+ size, err := m.BackupConfiguration.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.Features != nil {
+ size, err := m.Features.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.TalosVersion) > 0 {
+ i -= len(m.TalosVersion)
+ copy(dAtA[i:], m.TalosVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TalosVersion)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.KubernetesVersion) > 0 {
+ i -= len(m.KubernetesVersion)
+ copy(dAtA[i:], m.KubernetesVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.KubernetesVersion)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.InstallImage) > 0 {
+ i -= len(m.InstallImage)
+ copy(dAtA[i:], m.InstallImage)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.InstallImage)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EtcdBackupConf) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EtcdBackupConf) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *EtcdBackupConf) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Enabled {
+ i--
+ if m.Enabled {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Interval != nil {
+ size, err := (*durationpb1.Duration)(m.Interval).MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EtcdBackupEncryptionSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EtcdBackupEncryptionSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *EtcdBackupEncryptionSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.EncryptionKey) > 0 {
+ i -= len(m.EncryptionKey)
+ copy(dAtA[i:], m.EncryptionKey)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.EncryptionKey)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EtcdBackupHeader) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EtcdBackupHeader) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *EtcdBackupHeader) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Version != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Version))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EtcdBackupSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EtcdBackupSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *EtcdBackupSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Size != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Size))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.Snapshot) > 0 {
+ i -= len(m.Snapshot)
+ copy(dAtA[i:], m.Snapshot)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Snapshot)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.CreatedAt != nil {
+ size, err := (*timestamppb1.Timestamp)(m.CreatedAt).MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BackupDataSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BackupDataSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *BackupDataSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.SecretboxEncryptionSecret) > 0 {
+ i -= len(m.SecretboxEncryptionSecret)
+ copy(dAtA[i:], m.SecretboxEncryptionSecret)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SecretboxEncryptionSecret)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.AesCbcEncryptionSecret) > 0 {
+ i -= len(m.AesCbcEncryptionSecret)
+ copy(dAtA[i:], m.AesCbcEncryptionSecret)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.AesCbcEncryptionSecret)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.EncryptionKey) > 0 {
+ i -= len(m.EncryptionKey)
+ copy(dAtA[i:], m.EncryptionKey)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.EncryptionKey)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.ClusterUuid) > 0 {
+ i -= len(m.ClusterUuid)
+ copy(dAtA[i:], m.ClusterUuid)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClusterUuid)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Interval != nil {
+ size, err := (*durationpb1.Duration)(m.Interval).MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EtcdBackupS3ConfSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EtcdBackupS3ConfSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *EtcdBackupS3ConfSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.SessionToken) > 0 {
+ i -= len(m.SessionToken)
+ copy(dAtA[i:], m.SessionToken)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SessionToken)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.SecretAccessKey) > 0 {
+ i -= len(m.SecretAccessKey)
+ copy(dAtA[i:], m.SecretAccessKey)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SecretAccessKey)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.AccessKeyId) > 0 {
+ i -= len(m.AccessKeyId)
+ copy(dAtA[i:], m.AccessKeyId)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.AccessKeyId)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Endpoint) > 0 {
+ i -= len(m.Endpoint)
+ copy(dAtA[i:], m.Endpoint)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Endpoint)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Region) > 0 {
+ i -= len(m.Region)
+ copy(dAtA[i:], m.Region)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Region)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Bucket) > 0 {
+ i -= len(m.Bucket)
+ copy(dAtA[i:], m.Bucket)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Bucket)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EtcdBackupStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EtcdBackupStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *EtcdBackupStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.LastBackupAttempt != nil {
+ size, err := (*timestamppb1.Timestamp)(m.LastBackupAttempt).MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.LastBackupTime != nil {
+ size, err := (*timestamppb1.Timestamp)(m.LastBackupTime).MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Error) > 0 {
+ i -= len(m.Error)
+ copy(dAtA[i:], m.Error)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Error)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Status != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Status))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EtcdManualBackupSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EtcdManualBackupSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *EtcdManualBackupSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.BackupAt != nil {
+ size, err := (*timestamppb1.Timestamp)(m.BackupAt).MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EtcdBackupStoreStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EtcdBackupStoreStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *EtcdBackupStoreStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.ConfigurationError) > 0 {
+ i -= len(m.ConfigurationError)
+ copy(dAtA[i:], m.ConfigurationError)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ConfigurationError)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.ConfigurationName) > 0 {
+ i -= len(m.ConfigurationName)
+ copy(dAtA[i:], m.ConfigurationName)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ConfigurationName)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EtcdBackupOverallStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EtcdBackupOverallStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *EtcdBackupOverallStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.LastBackupStatus != nil {
+ size, err := m.LastBackupStatus.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.ConfigurationError) > 0 {
+ i -= len(m.ConfigurationError)
+ copy(dAtA[i:], m.ConfigurationError)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ConfigurationError)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.ConfigurationName) > 0 {
+ i -= len(m.ConfigurationName)
+ copy(dAtA[i:], m.ConfigurationName)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ConfigurationName)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterMachineSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterMachineSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterMachineSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.KubernetesVersion) > 0 {
+ i -= len(m.KubernetesVersion)
+ copy(dAtA[i:], m.KubernetesVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.KubernetesVersion)))
+ i--
+ dAtA[i] = 0x12
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterMachineConfigPatchesSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterMachineConfigPatchesSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterMachineConfigPatchesSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Patches) > 0 {
+ for iNdEx := len(m.Patches) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Patches[iNdEx])
+ copy(dAtA[i:], m.Patches[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Patches[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterMachineTalosVersionSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterMachineTalosVersionSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterMachineTalosVersionSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.SchematicId) > 0 {
+ i -= len(m.SchematicId)
+ copy(dAtA[i:], m.SchematicId)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SchematicId)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.TalosVersion) > 0 {
+ i -= len(m.TalosVersion)
+ copy(dAtA[i:], m.TalosVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TalosVersion)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterMachineConfigSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterMachineConfigSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterMachineConfigSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.GenerationError) > 0 {
+ i -= len(m.GenerationError)
+ copy(dAtA[i:], m.GenerationError)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.GenerationError)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.ClusterMachineVersion) > 0 {
+ i -= len(m.ClusterMachineVersion)
+ copy(dAtA[i:], m.ClusterMachineVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClusterMachineVersion)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Data) > 0 {
+ i -= len(m.Data)
+ copy(dAtA[i:], m.Data)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Data)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RedactedClusterMachineConfigSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RedactedClusterMachineConfigSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *RedactedClusterMachineConfigSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Data) > 0 {
+ i -= len(m.Data)
+ copy(dAtA[i:], m.Data)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Data)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterMachineIdentitySpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterMachineIdentitySpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterMachineIdentitySpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.NodeIps) > 0 {
+ for iNdEx := len(m.NodeIps) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.NodeIps[iNdEx])
+ copy(dAtA[i:], m.NodeIps[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.NodeIps[iNdEx])))
+ i--
+ dAtA[i] = 0x42
+ }
+ }
+ if len(m.Nodename) > 0 {
+ i -= len(m.Nodename)
+ copy(dAtA[i:], m.Nodename)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Nodename)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.EtcdMemberId != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.EtcdMemberId))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.NodeIdentity) > 0 {
+ i -= len(m.NodeIdentity)
+ copy(dAtA[i:], m.NodeIdentity)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.NodeIdentity)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterMachineTemplateSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterMachineTemplateSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterMachineTemplateSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Patch) > 0 {
+ i -= len(m.Patch)
+ copy(dAtA[i:], m.Patch)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Patch)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.InstallDisk) > 0 {
+ i -= len(m.InstallDisk)
+ copy(dAtA[i:], m.InstallDisk)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.InstallDisk)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.KubernetesVersion) > 0 {
+ i -= len(m.KubernetesVersion)
+ copy(dAtA[i:], m.KubernetesVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.KubernetesVersion)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.InstallImage) > 0 {
+ i -= len(m.InstallImage)
+ copy(dAtA[i:], m.InstallImage)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.InstallImage)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterMachineStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterMachineStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterMachineStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.ConfigApplyStatus != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.ConfigApplyStatus))
+ i--
+ dAtA[i] = 0x38
+ }
+ if len(m.ManagementAddress) > 0 {
+ i -= len(m.ManagementAddress)
+ copy(dAtA[i:], m.ManagementAddress)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ManagementAddress)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.LastConfigError) > 0 {
+ i -= len(m.LastConfigError)
+ copy(dAtA[i:], m.LastConfigError)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.LastConfigError)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.ConfigUpToDate {
+ i--
+ if m.ConfigUpToDate {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.ApidAvailable {
+ i--
+ if m.ApidAvailable {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Stage != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Stage))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Ready {
+ i--
+ if m.Ready {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Machines) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Machines) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *Machines) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Requested != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Requested))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Connected != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Connected))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Healthy != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Healthy))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Total != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Total))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.HasConnectedControlPlanes {
+ i--
+ if m.HasConnectedControlPlanes {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x38
+ }
+ if m.ControlplaneReady {
+ i--
+ if m.ControlplaneReady {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x30
+ }
+ if m.KubernetesAPIReady {
+ i--
+ if m.KubernetesAPIReady {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.Ready {
+ i--
+ if m.Ready {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Phase != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Phase))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Machines != nil {
+ size, err := m.Machines.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Available {
+ i--
+ if m.Available {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterUUID) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterUUID) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterUUID) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Uuid) > 0 {
+ i -= len(m.Uuid)
+ copy(dAtA[i:], m.Uuid)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Uuid)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterConfigVersionSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterConfigVersionSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterConfigVersionSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Version) > 0 {
+ i -= len(m.Version)
+ copy(dAtA[i:], m.Version)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Version)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterMachineConfigStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterMachineConfigStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterMachineConfigStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.SchematicId) > 0 {
+ i -= len(m.SchematicId)
+ copy(dAtA[i:], m.SchematicId)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SchematicId)))
+ i--
+ dAtA[i] = 0x42
+ }
+ if len(m.TalosVersion) > 0 {
+ i -= len(m.TalosVersion)
+ copy(dAtA[i:], m.TalosVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TalosVersion)))
+ i--
+ dAtA[i] = 0x3a
+ }
+ if len(m.LastConfigError) > 0 {
+ i -= len(m.LastConfigError)
+ copy(dAtA[i:], m.LastConfigError)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.LastConfigError)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.ClusterMachineConfigSha256) > 0 {
+ i -= len(m.ClusterMachineConfigSha256)
+ copy(dAtA[i:], m.ClusterMachineConfigSha256)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClusterMachineConfigSha256)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.ClusterMachineVersion) > 0 {
+ i -= len(m.ClusterMachineVersion)
+ copy(dAtA[i:], m.ClusterMachineVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClusterMachineVersion)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.ClusterMachineConfigVersion) > 0 {
+ i -= len(m.ClusterMachineConfigVersion)
+ copy(dAtA[i:], m.ClusterMachineConfigVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClusterMachineConfigVersion)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterBootstrapStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterBootstrapStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterBootstrapStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Bootstrapped {
+ i--
+ if m.Bootstrapped {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterSecretsSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterSecretsSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterSecretsSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Data) > 0 {
+ i -= len(m.Data)
+ copy(dAtA[i:], m.Data)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Data)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *LoadBalancerConfigSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LoadBalancerConfigSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *LoadBalancerConfigSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.SiderolinkEndpoint) > 0 {
+ i -= len(m.SiderolinkEndpoint)
+ copy(dAtA[i:], m.SiderolinkEndpoint)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SiderolinkEndpoint)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Endpoints) > 0 {
+ for iNdEx := len(m.Endpoints) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Endpoints[iNdEx])
+ copy(dAtA[i:], m.Endpoints[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Endpoints[iNdEx])))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.BindPort) > 0 {
+ i -= len(m.BindPort)
+ copy(dAtA[i:], m.BindPort)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.BindPort)))
+ i--
+ dAtA[i] = 0x12
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *LoadBalancerStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LoadBalancerStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *LoadBalancerStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Stopped {
+ i--
+ if m.Stopped {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Healthy {
+ i--
+ if m.Healthy {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubernetesVersionSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubernetesVersionSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubernetesVersionSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Version) > 0 {
+ i -= len(m.Version)
+ copy(dAtA[i:], m.Version)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Version)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TalosVersionSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TalosVersionSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *TalosVersionSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.CompatibleKubernetesVersions) > 0 {
+ for iNdEx := len(m.CompatibleKubernetesVersions) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.CompatibleKubernetesVersions[iNdEx])
+ copy(dAtA[i:], m.CompatibleKubernetesVersions[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.CompatibleKubernetesVersions[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Version) > 0 {
+ i -= len(m.Version)
+ copy(dAtA[i:], m.Version)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Version)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *InstallationMediaSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *InstallationMediaSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *InstallationMediaSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.NoSecureBoot {
+ i--
+ if m.NoSecureBoot {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x58
+ }
+ if len(m.Extension) > 0 {
+ i -= len(m.Extension)
+ copy(dAtA[i:], m.Extension)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Extension)))
+ i--
+ dAtA[i] = 0x4a
+ }
+ if len(m.DestFilePrefix) > 0 {
+ i -= len(m.DestFilePrefix)
+ copy(dAtA[i:], m.DestFilePrefix)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DestFilePrefix)))
+ i--
+ dAtA[i] = 0x42
+ }
+ if len(m.SrcFilePrefix) > 0 {
+ i -= len(m.SrcFilePrefix)
+ copy(dAtA[i:], m.SrcFilePrefix)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SrcFilePrefix)))
+ i--
+ dAtA[i] = 0x3a
+ }
+ if len(m.ContentType) > 0 {
+ i -= len(m.ContentType)
+ copy(dAtA[i:], m.ContentType)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ContentType)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.Profile) > 0 {
+ i -= len(m.Profile)
+ copy(dAtA[i:], m.Profile)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Profile)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Architecture) > 0 {
+ i -= len(m.Architecture)
+ copy(dAtA[i:], m.Architecture)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Architecture)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ConfigPatchSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ConfigPatchSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ConfigPatchSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Data) > 0 {
+ i -= len(m.Data)
+ copy(dAtA[i:], m.Data)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Data)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineSetSpec_MachineClass) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineSetSpec_MachineClass) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineSetSpec_MachineClass) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.AllocationType != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.AllocationType))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.MachineCount != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.MachineCount))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineSetSpec_BootstrapSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineSetSpec_BootstrapSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineSetSpec_BootstrapSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Snapshot) > 0 {
+ i -= len(m.Snapshot)
+ copy(dAtA[i:], m.Snapshot)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Snapshot)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.ClusterUuid) > 0 {
+ i -= len(m.ClusterUuid)
+ copy(dAtA[i:], m.ClusterUuid)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClusterUuid)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineSetSpec_RollingUpdateStrategyConfig) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineSetSpec_RollingUpdateStrategyConfig) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineSetSpec_RollingUpdateStrategyConfig) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.MaxParallelism != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.MaxParallelism))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineSetSpec_UpdateStrategyConfig) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineSetSpec_UpdateStrategyConfig) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineSetSpec_UpdateStrategyConfig) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Rolling != nil {
+ size, err := m.Rolling.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineSetSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineSetSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineSetSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.DeleteStrategyConfig != nil {
+ size, err := m.DeleteStrategyConfig.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x32
+ }
+ if m.UpdateStrategyConfig != nil {
+ size, err := m.UpdateStrategyConfig.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.DeleteStrategy != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.DeleteStrategy))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.BootstrapSpec != nil {
+ size, err := m.BootstrapSpec.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.MachineClass != nil {
+ size, err := m.MachineClass.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.UpdateStrategy != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.UpdateStrategy))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TalosUpgradeStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TalosUpgradeStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *TalosUpgradeStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.UpgradeVersions) > 0 {
+ for iNdEx := len(m.UpgradeVersions) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.UpgradeVersions[iNdEx])
+ copy(dAtA[i:], m.UpgradeVersions[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.UpgradeVersions[iNdEx])))
+ i--
+ dAtA[i] = 0x3a
+ }
+ }
+ if len(m.CurrentUpgradeVersion) > 0 {
+ i -= len(m.CurrentUpgradeVersion)
+ copy(dAtA[i:], m.CurrentUpgradeVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.CurrentUpgradeVersion)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.LastUpgradeVersion) > 0 {
+ i -= len(m.LastUpgradeVersion)
+ copy(dAtA[i:], m.LastUpgradeVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.LastUpgradeVersion)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.Status) > 0 {
+ i -= len(m.Status)
+ copy(dAtA[i:], m.Status)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Status)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Step) > 0 {
+ i -= len(m.Step)
+ copy(dAtA[i:], m.Step)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Step)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Error) > 0 {
+ i -= len(m.Error)
+ copy(dAtA[i:], m.Error)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Error)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Phase != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Phase))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineSetStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineSetStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineSetStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.MachineClass != nil {
+ size, err := m.MachineClass.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.ConfigHash) > 0 {
+ i -= len(m.ConfigHash)
+ copy(dAtA[i:], m.ConfigHash)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ConfigHash)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.Machines != nil {
+ size, err := m.Machines.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Error) > 0 {
+ i -= len(m.Error)
+ copy(dAtA[i:], m.Error)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Error)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.Ready {
+ i--
+ if m.Ready {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Phase != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Phase))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineSetNodeSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineSetNodeSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineSetNodeSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineLabelsSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineLabelsSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineLabelsSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineStatusSnapshotSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineStatusSnapshotSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineStatusSnapshotSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.MachineStatus != nil {
+ if vtmsg, ok := interface{}(m.MachineStatus).(interface {
+ MarshalToSizedBufferVT([]byte) (int, error)
+ }); ok {
+ size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ } else {
+ encoded, err := proto.Marshal(m.MachineStatus)
+ if err != nil {
+ return 0, err
+ }
+ i -= len(encoded)
+ copy(dAtA[i:], encoded)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ControlPlaneStatusSpec_Condition) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ControlPlaneStatusSpec_Condition) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ControlPlaneStatusSpec_Condition) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Severity != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Severity))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Status != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Status))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.Reason) > 0 {
+ i -= len(m.Reason)
+ copy(dAtA[i:], m.Reason)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Reason)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Type != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Type))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ControlPlaneStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ControlPlaneStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ControlPlaneStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Conditions) > 0 {
+ for iNdEx := len(m.Conditions) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.Conditions[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterEndpointSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterEndpointSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterEndpointSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.ManagementAddresses) > 0 {
+ for iNdEx := len(m.ManagementAddresses) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ManagementAddresses[iNdEx])
+ copy(dAtA[i:], m.ManagementAddresses[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ManagementAddresses[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubernetesStatusSpec_NodeStatus) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubernetesStatusSpec_NodeStatus) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubernetesStatusSpec_NodeStatus) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Ready {
+ i--
+ if m.Ready {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.KubeletVersion) > 0 {
+ i -= len(m.KubeletVersion)
+ copy(dAtA[i:], m.KubeletVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.KubeletVersion)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Nodename) > 0 {
+ i -= len(m.Nodename)
+ copy(dAtA[i:], m.Nodename)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Nodename)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubernetesStatusSpec_StaticPodStatus) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubernetesStatusSpec_StaticPodStatus) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubernetesStatusSpec_StaticPodStatus) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Ready {
+ i--
+ if m.Ready {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.Version) > 0 {
+ i -= len(m.Version)
+ copy(dAtA[i:], m.Version)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Version)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.App) > 0 {
+ i -= len(m.App)
+ copy(dAtA[i:], m.App)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.App)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubernetesStatusSpec_NodeStaticPods) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubernetesStatusSpec_NodeStaticPods) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubernetesStatusSpec_NodeStaticPods) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.StaticPods) > 0 {
+ for iNdEx := len(m.StaticPods) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.StaticPods[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Nodename) > 0 {
+ i -= len(m.Nodename)
+ copy(dAtA[i:], m.Nodename)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Nodename)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubernetesStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubernetesStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubernetesStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.StaticPods) > 0 {
+ for iNdEx := len(m.StaticPods) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.StaticPods[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Nodes) > 0 {
+ for iNdEx := len(m.Nodes) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.Nodes[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubernetesUpgradeStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubernetesUpgradeStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubernetesUpgradeStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.CurrentUpgradeVersion) > 0 {
+ i -= len(m.CurrentUpgradeVersion)
+ copy(dAtA[i:], m.CurrentUpgradeVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.CurrentUpgradeVersion)))
+ i--
+ dAtA[i] = 0x3a
+ }
+ if len(m.UpgradeVersions) > 0 {
+ for iNdEx := len(m.UpgradeVersions) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.UpgradeVersions[iNdEx])
+ copy(dAtA[i:], m.UpgradeVersions[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.UpgradeVersions[iNdEx])))
+ i--
+ dAtA[i] = 0x32
+ }
+ }
+ if len(m.LastUpgradeVersion) > 0 {
+ i -= len(m.LastUpgradeVersion)
+ copy(dAtA[i:], m.LastUpgradeVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.LastUpgradeVersion)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.Status) > 0 {
+ i -= len(m.Status)
+ copy(dAtA[i:], m.Status)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Status)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Step) > 0 {
+ i -= len(m.Step)
+ copy(dAtA[i:], m.Step)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Step)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Error) > 0 {
+ i -= len(m.Error)
+ copy(dAtA[i:], m.Error)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Error)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Phase != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Phase))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubernetesUpgradeManifestStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubernetesUpgradeManifestStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubernetesUpgradeManifestStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.LastFatalError) > 0 {
+ i -= len(m.LastFatalError)
+ copy(dAtA[i:], m.LastFatalError)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.LastFatalError)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.OutOfSync != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.OutOfSync))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *DestroyStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DestroyStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *DestroyStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Phase) > 0 {
+ i -= len(m.Phase)
+ copy(dAtA[i:], m.Phase)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Phase)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *OngoingTaskSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *OngoingTaskSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *OngoingTaskSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if vtmsg, ok := m.Details.(interface {
+ MarshalToSizedBufferVT([]byte) (int, error)
+ }); ok {
+ size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ }
+ if len(m.Title) > 0 {
+ i -= len(m.Title)
+ copy(dAtA[i:], m.Title)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Title)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *OngoingTaskSpec_TalosUpgrade) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *OngoingTaskSpec_TalosUpgrade) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ if m.TalosUpgrade != nil {
+ size, err := m.TalosUpgrade.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ return len(dAtA) - i, nil
+}
+func (m *OngoingTaskSpec_KubernetesUpgrade) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *OngoingTaskSpec_KubernetesUpgrade) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ if m.KubernetesUpgrade != nil {
+ size, err := m.KubernetesUpgrade.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x1a
+ }
+ return len(dAtA) - i, nil
+}
+func (m *OngoingTaskSpec_Destroy) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *OngoingTaskSpec_Destroy) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ if m.Destroy != nil {
+ size, err := m.Destroy.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x22
+ }
+ return len(dAtA) - i, nil
+}
+func (m *ClusterMachineEncryptionKeySpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterMachineEncryptionKeySpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterMachineEncryptionKeySpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Data) > 0 {
+ i -= len(m.Data)
+ copy(dAtA[i:], m.Data)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Data)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExposedServiceSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExposedServiceSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ExposedServiceSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.IconBase64) > 0 {
+ i -= len(m.IconBase64)
+ copy(dAtA[i:], m.IconBase64)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.IconBase64)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Label) > 0 {
+ i -= len(m.Label)
+ copy(dAtA[i:], m.Label)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Label)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Port != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Port))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *FeaturesConfigSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *FeaturesConfigSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *FeaturesConfigSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.EtcdBackupSettings != nil {
+ size, err := m.EtcdBackupSettings.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EnableWorkloadProxying {
+ i--
+ if m.EnableWorkloadProxying {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EtcdBackupSettings) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EtcdBackupSettings) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *EtcdBackupSettings) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.MaxInterval != nil {
+ size, err := (*durationpb1.Duration)(m.MaxInterval).MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.MinInterval != nil {
+ size, err := (*durationpb1.Duration)(m.MinInterval).MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.TickInterval != nil {
+ size, err := (*durationpb1.Duration)(m.TickInterval).MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineClassSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineClassSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineClassSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.MatchLabels) > 0 {
+ for iNdEx := len(m.MatchLabels) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.MatchLabels[iNdEx])
+ copy(dAtA[i:], m.MatchLabels[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.MatchLabels[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineConfigGenOptionsSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MachineConfigGenOptionsSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *MachineConfigGenOptionsSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.InstallDisk) > 0 {
+ i -= len(m.InstallDisk)
+ copy(dAtA[i:], m.InstallDisk)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.InstallDisk)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EtcdAuditResultSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EtcdAuditResultSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *EtcdAuditResultSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.EtcdMemberIds) > 0 {
+ var pksize2 int
+ for _, num := range m.EtcdMemberIds {
+ pksize2 += protohelpers.SizeOfVarint(uint64(num))
+ }
+ i -= pksize2
+ j1 := i
+ for _, num := range m.EtcdMemberIds {
+ for num >= 1<<7 {
+ dAtA[j1] = uint8(uint64(num)&0x7f | 0x80)
+ num >>= 7
+ j1++
+ }
+ dAtA[j1] = uint8(num)
+ j1++
+ }
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(pksize2))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubeconfigSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubeconfigSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubeconfigSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Data) > 0 {
+ i -= len(m.Data)
+ copy(dAtA[i:], m.Data)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Data)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubernetesUsageSpec_Quantity) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubernetesUsageSpec_Quantity) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubernetesUsageSpec_Quantity) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Capacity != 0 {
+ i -= 8
+ binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Capacity))))
+ i--
+ dAtA[i] = 0x19
+ }
+ if m.Limits != 0 {
+ i -= 8
+ binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Limits))))
+ i--
+ dAtA[i] = 0x11
+ }
+ if m.Requests != 0 {
+ i -= 8
+ binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Requests))))
+ i--
+ dAtA[i] = 0x9
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubernetesUsageSpec_Pod) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubernetesUsageSpec_Pod) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubernetesUsageSpec_Pod) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Capacity != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Capacity))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Count != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Count))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KubernetesUsageSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KubernetesUsageSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *KubernetesUsageSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Pods != nil {
+ size, err := m.Pods.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Storage != nil {
+ size, err := m.Storage.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.Mem != nil {
+ size, err := m.Mem.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Cpu != nil {
+ size, err := m.Cpu.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ImagePullRequestSpec_NodeImageList) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ImagePullRequestSpec_NodeImageList) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ImagePullRequestSpec_NodeImageList) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Images) > 0 {
+ for iNdEx := len(m.Images) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Images[iNdEx])
+ copy(dAtA[i:], m.Images[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Images[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Node) > 0 {
+ i -= len(m.Node)
+ copy(dAtA[i:], m.Node)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Node)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ImagePullRequestSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ImagePullRequestSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ImagePullRequestSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.NodeImageList) > 0 {
+ for iNdEx := len(m.NodeImageList) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.NodeImageList[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ImagePullStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ImagePullStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ImagePullStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.RequestVersion) > 0 {
+ i -= len(m.RequestVersion)
+ copy(dAtA[i:], m.RequestVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RequestVersion)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if m.TotalCount != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.TotalCount))
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.ProcessedCount != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.ProcessedCount))
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.LastProcessedError) > 0 {
+ i -= len(m.LastProcessedError)
+ copy(dAtA[i:], m.LastProcessedError)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.LastProcessedError)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.LastProcessedImage) > 0 {
+ i -= len(m.LastProcessedImage)
+ copy(dAtA[i:], m.LastProcessedImage)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.LastProcessedImage)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.LastProcessedNode) > 0 {
+ i -= len(m.LastProcessedNode)
+ copy(dAtA[i:], m.LastProcessedNode)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.LastProcessedNode)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SchematicSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SchematicSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *SchematicSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Extensions) > 0 {
+ for iNdEx := len(m.Extensions) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Extensions[iNdEx])
+ copy(dAtA[i:], m.Extensions[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Extensions[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TalosExtensionsSpec_Info) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TalosExtensionsSpec_Info) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *TalosExtensionsSpec_Info) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Digest) > 0 {
+ i -= len(m.Digest)
+ copy(dAtA[i:], m.Digest)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Digest)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.Ref) > 0 {
+ i -= len(m.Ref)
+ copy(dAtA[i:], m.Ref)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Ref)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.Description) > 0 {
+ i -= len(m.Description)
+ copy(dAtA[i:], m.Description)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Description)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Version) > 0 {
+ i -= len(m.Version)
+ copy(dAtA[i:], m.Version)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Version)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Author) > 0 {
+ i -= len(m.Author)
+ copy(dAtA[i:], m.Author)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Author)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TalosExtensionsSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TalosExtensionsSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *TalosExtensionsSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Items) > 0 {
+ for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.Items[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SchematicConfigurationSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SchematicConfigurationSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *SchematicConfigurationSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Target != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Target))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.SchematicId) > 0 {
+ i -= len(m.SchematicId)
+ copy(dAtA[i:], m.SchematicId)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SchematicId)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MachineSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ManagementAddress)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Connected {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineStatusSpec_HardwareStatus_Processor) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.CoreCount != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.CoreCount))
+ }
+ if m.ThreadCount != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.ThreadCount))
+ }
+ if m.Frequency != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Frequency))
+ }
+ l = len(m.Description)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Manufacturer)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineStatusSpec_HardwareStatus_MemoryModule) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.SizeMb != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.SizeMb))
+ }
+ l = len(m.Description)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineStatusSpec_HardwareStatus_BlockDevice) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Size != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Size))
+ }
+ l = len(m.Model)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.LinuxName)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Serial)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Uuid)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Wwid)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Type)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.BusPath)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.SystemDisk {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineStatusSpec_HardwareStatus) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Processors) > 0 {
+ for _, e := range m.Processors {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ if len(m.MemoryModules) > 0 {
+ for _, e := range m.MemoryModules {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ if len(m.Blockdevices) > 0 {
+ for _, e := range m.Blockdevices {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ l = len(m.Arch)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.LinuxName)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.HardwareAddress)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.SpeedMbps != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.SpeedMbps))
+ }
+ if m.LinkUp {
+ n += 2
+ }
+ l = len(m.Description)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineStatusSpec_NetworkStatus) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Hostname)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Domainname)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.Addresses) > 0 {
+ for _, s := range m.Addresses {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ if len(m.DefaultGateways) > 0 {
+ for _, s := range m.DefaultGateways {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ if len(m.NetworkLinks) > 0 {
+ for _, e := range m.NetworkLinks {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineStatusSpec_PlatformMetadata) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Platform)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Hostname)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Region)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Zone)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.InstanceType)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.InstanceId)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ProviderId)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Spot {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineStatusSpec_Schematic) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Invalid {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.TalosVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Hardware != nil {
+ l = m.Hardware.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Network != nil {
+ l = m.Network.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.LastError)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ManagementAddress)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Connected {
+ n += 2
+ }
+ if m.Maintenance {
+ n += 2
+ }
+ l = len(m.Cluster)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Role != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Role))
+ }
+ if m.PlatformMetadata != nil {
+ l = m.PlatformMetadata.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.ImageLabels) > 0 {
+ for k, v := range m.ImageLabels {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + 1 + len(v) + protohelpers.SizeOfVarint(uint64(len(v)))
+ n += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))
+ }
+ }
+ if m.Schematic != nil {
+ l = m.Schematic.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *TalosConfigSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Ca)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Crt)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Key)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterSpec_Features) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EnableWorkloadProxy {
+ n += 2
+ }
+ if m.DiskEncryption {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.InstallImage)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.KubernetesVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.TalosVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Features != nil {
+ l = m.Features.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.BackupConfiguration != nil {
+ l = m.BackupConfiguration.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *EtcdBackupConf) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Interval != nil {
+ l = (*durationpb1.Duration)(m.Interval).SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Enabled {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *EtcdBackupEncryptionSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.EncryptionKey)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *EtcdBackupHeader) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Version != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Version))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *EtcdBackupSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.CreatedAt != nil {
+ l = (*timestamppb1.Timestamp)(m.CreatedAt).SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Snapshot)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Size != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Size))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *BackupDataSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Interval != nil {
+ l = (*durationpb1.Duration)(m.Interval).SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ClusterUuid)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.EncryptionKey)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.AesCbcEncryptionSecret)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.SecretboxEncryptionSecret)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *EtcdBackupS3ConfSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Bucket)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Region)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Endpoint)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.AccessKeyId)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.SecretAccessKey)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.SessionToken)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *EtcdBackupStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Status != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Status))
+ }
+ l = len(m.Error)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.LastBackupTime != nil {
+ l = (*timestamppb1.Timestamp)(m.LastBackupTime).SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.LastBackupAttempt != nil {
+ l = (*timestamppb1.Timestamp)(m.LastBackupAttempt).SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *EtcdManualBackupSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.BackupAt != nil {
+ l = (*timestamppb1.Timestamp)(m.BackupAt).SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *EtcdBackupStoreStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ConfigurationName)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ConfigurationError)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *EtcdBackupOverallStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ConfigurationName)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ConfigurationError)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.LastBackupStatus != nil {
+ l = m.LastBackupStatus.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterMachineSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.KubernetesVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterMachineConfigPatchesSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Patches) > 0 {
+ for _, s := range m.Patches {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterMachineTalosVersionSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.TalosVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.SchematicId)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterMachineConfigSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Data)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ClusterMachineVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.GenerationError)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *RedactedClusterMachineConfigSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Data)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterMachineIdentitySpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.NodeIdentity)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.EtcdMemberId != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.EtcdMemberId))
+ }
+ l = len(m.Nodename)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.NodeIps) > 0 {
+ for _, s := range m.NodeIps {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterMachineTemplateSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.InstallImage)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.KubernetesVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.InstallDisk)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Patch)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterMachineStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Ready {
+ n += 2
+ }
+ if m.Stage != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Stage))
+ }
+ if m.ApidAvailable {
+ n += 2
+ }
+ if m.ConfigUpToDate {
+ n += 2
+ }
+ l = len(m.LastConfigError)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ManagementAddress)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.ConfigApplyStatus != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.ConfigApplyStatus))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *Machines) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Total != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Total))
+ }
+ if m.Healthy != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Healthy))
+ }
+ if m.Connected != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Connected))
+ }
+ if m.Requested != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Requested))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Available {
+ n += 2
+ }
+ if m.Machines != nil {
+ l = m.Machines.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Phase != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Phase))
+ }
+ if m.Ready {
+ n += 2
+ }
+ if m.KubernetesAPIReady {
+ n += 2
+ }
+ if m.ControlplaneReady {
+ n += 2
+ }
+ if m.HasConnectedControlPlanes {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterUUID) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Uuid)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterConfigVersionSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Version)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterMachineConfigStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ClusterMachineConfigVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ClusterMachineVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ClusterMachineConfigSha256)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.LastConfigError)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.TalosVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.SchematicId)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterBootstrapStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Bootstrapped {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterSecretsSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Data)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *LoadBalancerConfigSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.BindPort)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.Endpoints) > 0 {
+ for _, s := range m.Endpoints {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ l = len(m.SiderolinkEndpoint)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *LoadBalancerStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Healthy {
+ n += 2
+ }
+ if m.Stopped {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubernetesVersionSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Version)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *TalosVersionSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Version)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.CompatibleKubernetesVersions) > 0 {
+ for _, s := range m.CompatibleKubernetesVersions {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *InstallationMediaSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Architecture)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Profile)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ContentType)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.SrcFilePrefix)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.DestFilePrefix)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Extension)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.NoSecureBoot {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ConfigPatchSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Data)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineSetSpec_MachineClass) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.MachineCount != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.MachineCount))
+ }
+ if m.AllocationType != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.AllocationType))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineSetSpec_BootstrapSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ClusterUuid)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Snapshot)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineSetSpec_RollingUpdateStrategyConfig) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.MaxParallelism != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.MaxParallelism))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineSetSpec_UpdateStrategyConfig) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Rolling != nil {
+ l = m.Rolling.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineSetSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.UpdateStrategy != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.UpdateStrategy))
+ }
+ if m.MachineClass != nil {
+ l = m.MachineClass.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.BootstrapSpec != nil {
+ l = m.BootstrapSpec.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.DeleteStrategy != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.DeleteStrategy))
+ }
+ if m.UpdateStrategyConfig != nil {
+ l = m.UpdateStrategyConfig.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.DeleteStrategyConfig != nil {
+ l = m.DeleteStrategyConfig.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *TalosUpgradeStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Phase != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Phase))
+ }
+ l = len(m.Error)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Step)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Status)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.LastUpgradeVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.CurrentUpgradeVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.UpgradeVersions) > 0 {
+ for _, s := range m.UpgradeVersions {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineSetStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Phase != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Phase))
+ }
+ if m.Ready {
+ n += 2
+ }
+ l = len(m.Error)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Machines != nil {
+ l = m.Machines.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ConfigHash)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.MachineClass != nil {
+ l = m.MachineClass.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineSetNodeSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineLabelsSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineStatusSnapshotSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.MachineStatus != nil {
+ if size, ok := interface{}(m.MachineStatus).(interface {
+ SizeVT() int
+ }); ok {
+ l = size.SizeVT()
+ } else {
+ l = proto.Size(m.MachineStatus)
+ }
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ControlPlaneStatusSpec_Condition) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Type != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Type))
+ }
+ l = len(m.Reason)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Status != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Status))
+ }
+ if m.Severity != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Severity))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ControlPlaneStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Conditions) > 0 {
+ for _, e := range m.Conditions {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterEndpointSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.ManagementAddresses) > 0 {
+ for _, s := range m.ManagementAddresses {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubernetesStatusSpec_NodeStatus) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Nodename)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.KubeletVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Ready {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubernetesStatusSpec_StaticPodStatus) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.App)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Version)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Ready {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubernetesStatusSpec_NodeStaticPods) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Nodename)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.StaticPods) > 0 {
+ for _, e := range m.StaticPods {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubernetesStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Nodes) > 0 {
+ for _, e := range m.Nodes {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ if len(m.StaticPods) > 0 {
+ for _, e := range m.StaticPods {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubernetesUpgradeStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Phase != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Phase))
+ }
+ l = len(m.Error)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Step)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Status)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.LastUpgradeVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.UpgradeVersions) > 0 {
+ for _, s := range m.UpgradeVersions {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ l = len(m.CurrentUpgradeVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubernetesUpgradeManifestStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.OutOfSync != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.OutOfSync))
+ }
+ l = len(m.LastFatalError)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *DestroyStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Phase)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *OngoingTaskSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Title)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if vtmsg, ok := m.Details.(interface{ SizeVT() int }); ok {
+ n += vtmsg.SizeVT()
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *OngoingTaskSpec_TalosUpgrade) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TalosUpgrade != nil {
+ l = m.TalosUpgrade.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ return n
+}
+func (m *OngoingTaskSpec_KubernetesUpgrade) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.KubernetesUpgrade != nil {
+ l = m.KubernetesUpgrade.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ return n
+}
+func (m *OngoingTaskSpec_Destroy) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Destroy != nil {
+ l = m.Destroy.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ return n
+}
+func (m *ClusterMachineEncryptionKeySpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Data)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ExposedServiceSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Port != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Port))
+ }
+ l = len(m.Label)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.IconBase64)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *FeaturesConfigSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EnableWorkloadProxying {
+ n += 2
+ }
+ if m.EtcdBackupSettings != nil {
+ l = m.EtcdBackupSettings.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *EtcdBackupSettings) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TickInterval != nil {
+ l = (*durationpb1.Duration)(m.TickInterval).SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.MinInterval != nil {
+ l = (*durationpb1.Duration)(m.MinInterval).SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.MaxInterval != nil {
+ l = (*durationpb1.Duration)(m.MaxInterval).SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineClassSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.MatchLabels) > 0 {
+ for _, s := range m.MatchLabels {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineConfigGenOptionsSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.InstallDisk)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *EtcdAuditResultSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.EtcdMemberIds) > 0 {
+ l = 0
+ for _, e := range m.EtcdMemberIds {
+ l += protohelpers.SizeOfVarint(uint64(e))
+ }
+ n += 1 + protohelpers.SizeOfVarint(uint64(l)) + l
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubeconfigSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Data)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubernetesUsageSpec_Quantity) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Requests != 0 {
+ n += 9
+ }
+ if m.Limits != 0 {
+ n += 9
+ }
+ if m.Capacity != 0 {
+ n += 9
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubernetesUsageSpec_Pod) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Count != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Count))
+ }
+ if m.Capacity != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Capacity))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *KubernetesUsageSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Cpu != nil {
+ l = m.Cpu.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Mem != nil {
+ l = m.Mem.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Storage != nil {
+ l = m.Storage.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Pods != nil {
+ l = m.Pods.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ImagePullRequestSpec_NodeImageList) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Node)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if len(m.Images) > 0 {
+ for _, s := range m.Images {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ImagePullRequestSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.NodeImageList) > 0 {
+ for _, e := range m.NodeImageList {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ImagePullStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.LastProcessedNode)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.LastProcessedImage)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.LastProcessedError)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.ProcessedCount != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.ProcessedCount))
+ }
+ if m.TotalCount != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.TotalCount))
+ }
+ l = len(m.RequestVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *SchematicSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Extensions) > 0 {
+ for _, s := range m.Extensions {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *TalosExtensionsSpec_Info) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Author)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Version)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Description)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Ref)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Digest)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *TalosExtensionsSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Items) > 0 {
+ for _, e := range m.Items {
+ l = e.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *SchematicConfigurationSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.SchematicId)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Target != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Target))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *MachineSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ManagementAddress", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ManagementAddress = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Connected", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Connected = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineStatusSpec_HardwareStatus_Processor) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineStatusSpec_HardwareStatus_Processor: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineStatusSpec_HardwareStatus_Processor: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CoreCount", wireType)
+ }
+ m.CoreCount = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.CoreCount |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ThreadCount", wireType)
+ }
+ m.ThreadCount = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ThreadCount |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Frequency", wireType)
+ }
+ m.Frequency = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Frequency |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Description = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Manufacturer", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Manufacturer = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineStatusSpec_HardwareStatus_MemoryModule) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineStatusSpec_HardwareStatus_MemoryModule: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineStatusSpec_HardwareStatus_MemoryModule: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SizeMb", wireType)
+ }
+ m.SizeMb = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.SizeMb |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Description = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineStatusSpec_HardwareStatus_BlockDevice) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineStatusSpec_HardwareStatus_BlockDevice: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineStatusSpec_HardwareStatus_BlockDevice: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Size", wireType)
+ }
+ m.Size = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Size |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Model", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Model = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LinuxName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LinuxName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Serial", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Serial = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Uuid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Uuid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Wwid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Wwid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Type = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 10:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BusPath", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.BusPath = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 11:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SystemDisk", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SystemDisk = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineStatusSpec_HardwareStatus) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineStatusSpec_HardwareStatus: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineStatusSpec_HardwareStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Processors", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Processors = append(m.Processors, &MachineStatusSpec_HardwareStatus_Processor{})
+ if err := m.Processors[len(m.Processors)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MemoryModules", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.MemoryModules = append(m.MemoryModules, &MachineStatusSpec_HardwareStatus_MemoryModule{})
+ if err := m.MemoryModules[len(m.MemoryModules)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Blockdevices", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Blockdevices = append(m.Blockdevices, &MachineStatusSpec_HardwareStatus_BlockDevice{})
+ if err := m.Blockdevices[len(m.Blockdevices)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Arch", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Arch = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineStatusSpec_NetworkStatus_NetworkLinkStatus: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineStatusSpec_NetworkStatus_NetworkLinkStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LinuxName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LinuxName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field HardwareAddress", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.HardwareAddress = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SpeedMbps", wireType)
+ }
+ m.SpeedMbps = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.SpeedMbps |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LinkUp", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.LinkUp = bool(v != 0)
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Description = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineStatusSpec_NetworkStatus) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineStatusSpec_NetworkStatus: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineStatusSpec_NetworkStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Hostname = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Domainname", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Domainname = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Addresses", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Addresses = append(m.Addresses, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DefaultGateways", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.DefaultGateways = append(m.DefaultGateways, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NetworkLinks", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.NetworkLinks = append(m.NetworkLinks, &MachineStatusSpec_NetworkStatus_NetworkLinkStatus{})
+ if err := m.NetworkLinks[len(m.NetworkLinks)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineStatusSpec_PlatformMetadata) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineStatusSpec_PlatformMetadata: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineStatusSpec_PlatformMetadata: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Platform", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Platform = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Hostname = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Region", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Region = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Zone", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Zone = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field InstanceType", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.InstanceType = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field InstanceId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.InstanceId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ProviderId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ProviderId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 8:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Spot", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Spot = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineStatusSpec_Schematic) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineStatusSpec_Schematic: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineStatusSpec_Schematic: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Invalid", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Invalid = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TalosVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TalosVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Hardware", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Hardware == nil {
+ m.Hardware = &MachineStatusSpec_HardwareStatus{}
+ }
+ if err := m.Hardware.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Network == nil {
+ m.Network = &MachineStatusSpec_NetworkStatus{}
+ }
+ if err := m.Network.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastError", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LastError = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ManagementAddress", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ManagementAddress = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Connected", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Connected = bool(v != 0)
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Maintenance", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Maintenance = bool(v != 0)
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cluster = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 10:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType)
+ }
+ m.Role = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Role |= MachineStatusSpec_Role(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 11:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PlatformMetadata", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.PlatformMetadata == nil {
+ m.PlatformMetadata = &MachineStatusSpec_PlatformMetadata{}
+ }
+ if err := m.PlatformMetadata.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 13:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImageLabels", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImageLabels == nil {
+ m.ImageLabels = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.ImageLabels[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 14:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Schematic", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Schematic == nil {
+ m.Schematic = &MachineStatusSpec_Schematic{}
+ }
+ if err := m.Schematic.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TalosConfigSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TalosConfigSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TalosConfigSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Ca", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Ca = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Crt", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Crt = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Key = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterSpec_Features) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterSpec_Features: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterSpec_Features: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EnableWorkloadProxy", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.EnableWorkloadProxy = bool(v != 0)
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DiskEncryption", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.DiskEncryption = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field InstallImage", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.InstallImage = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KubernetesVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.KubernetesVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TalosVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TalosVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Features", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Features == nil {
+ m.Features = &ClusterSpec_Features{}
+ }
+ if err := m.Features.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BackupConfiguration", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.BackupConfiguration == nil {
+ m.BackupConfiguration = &EtcdBackupConf{}
+ }
+ if err := m.BackupConfiguration.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EtcdBackupConf) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EtcdBackupConf: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EtcdBackupConf: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Interval", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Interval == nil {
+ m.Interval = &durationpb.Duration{}
+ }
+ if err := (*durationpb1.Duration)(m.Interval).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Enabled = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EtcdBackupEncryptionSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EtcdBackupEncryptionSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EtcdBackupEncryptionSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EncryptionKey", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.EncryptionKey = append(m.EncryptionKey[:0], dAtA[iNdEx:postIndex]...)
+ if m.EncryptionKey == nil {
+ m.EncryptionKey = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EtcdBackupHeader) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EtcdBackupHeader: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EtcdBackupHeader: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
+ }
+ m.Version = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Version |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EtcdBackupSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EtcdBackupSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EtcdBackupSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.CreatedAt == nil {
+ m.CreatedAt = ×tamppb.Timestamp{}
+ }
+ if err := (*timestamppb1.Timestamp)(m.CreatedAt).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Snapshot", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Snapshot = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Size", wireType)
+ }
+ m.Size = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Size |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BackupDataSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BackupDataSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BackupDataSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Interval", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Interval == nil {
+ m.Interval = &durationpb.Duration{}
+ }
+ if err := (*durationpb1.Duration)(m.Interval).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterUuid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterUuid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EncryptionKey", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.EncryptionKey = append(m.EncryptionKey[:0], dAtA[iNdEx:postIndex]...)
+ if m.EncryptionKey == nil {
+ m.EncryptionKey = []byte{}
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AesCbcEncryptionSecret", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.AesCbcEncryptionSecret = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SecretboxEncryptionSecret", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SecretboxEncryptionSecret = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EtcdBackupS3ConfSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EtcdBackupS3ConfSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EtcdBackupS3ConfSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Bucket", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Bucket = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Region", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Region = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Endpoint", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Endpoint = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AccessKeyId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.AccessKeyId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SecretAccessKey", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SecretAccessKey = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SessionToken", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SessionToken = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EtcdBackupStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EtcdBackupStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EtcdBackupStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ m.Status = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Status |= EtcdBackupStatusSpec_Status(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Error = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastBackupTime", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.LastBackupTime == nil {
+ m.LastBackupTime = ×tamppb.Timestamp{}
+ }
+ if err := (*timestamppb1.Timestamp)(m.LastBackupTime).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastBackupAttempt", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.LastBackupAttempt == nil {
+ m.LastBackupAttempt = ×tamppb.Timestamp{}
+ }
+ if err := (*timestamppb1.Timestamp)(m.LastBackupAttempt).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EtcdManualBackupSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EtcdManualBackupSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EtcdManualBackupSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BackupAt", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.BackupAt == nil {
+ m.BackupAt = ×tamppb.Timestamp{}
+ }
+ if err := (*timestamppb1.Timestamp)(m.BackupAt).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EtcdBackupStoreStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EtcdBackupStoreStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EtcdBackupStoreStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ConfigurationName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ConfigurationName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ConfigurationError", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ConfigurationError = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EtcdBackupOverallStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EtcdBackupOverallStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EtcdBackupOverallStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ConfigurationName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ConfigurationName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ConfigurationError", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ConfigurationError = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastBackupStatus", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.LastBackupStatus == nil {
+ m.LastBackupStatus = &EtcdBackupStatusSpec{}
+ }
+ if err := m.LastBackupStatus.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterMachineSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterMachineSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterMachineSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KubernetesVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.KubernetesVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterMachineConfigPatchesSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterMachineConfigPatchesSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterMachineConfigPatchesSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Patches", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Patches = append(m.Patches, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterMachineTalosVersionSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterMachineTalosVersionSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterMachineTalosVersionSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TalosVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TalosVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SchematicId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SchematicId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterMachineConfigSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterMachineConfigSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterMachineConfigSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...)
+ if m.Data == nil {
+ m.Data = []byte{}
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterMachineVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterMachineVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field GenerationError", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.GenerationError = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RedactedClusterMachineConfigSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RedactedClusterMachineConfigSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RedactedClusterMachineConfigSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Data = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterMachineIdentitySpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterMachineIdentitySpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterMachineIdentitySpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NodeIdentity", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.NodeIdentity = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EtcdMemberId", wireType)
+ }
+ m.EtcdMemberId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.EtcdMemberId |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Nodename", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Nodename = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NodeIps", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.NodeIps = append(m.NodeIps, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterMachineTemplateSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterMachineTemplateSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterMachineTemplateSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field InstallImage", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.InstallImage = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KubernetesVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.KubernetesVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field InstallDisk", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.InstallDisk = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Patch", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Patch = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterMachineStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterMachineStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterMachineStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Ready", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Ready = bool(v != 0)
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Stage", wireType)
+ }
+ m.Stage = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Stage |= ClusterMachineStatusSpec_Stage(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ApidAvailable", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ApidAvailable = bool(v != 0)
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ConfigUpToDate", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ConfigUpToDate = bool(v != 0)
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastConfigError", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LastConfigError = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ManagementAddress", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ManagementAddress = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ConfigApplyStatus", wireType)
+ }
+ m.ConfigApplyStatus = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ConfigApplyStatus |= ConfigApplyStatus(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Machines) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Machines: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Machines: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Total", wireType)
+ }
+ m.Total = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Total |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Healthy", wireType)
+ }
+ m.Healthy = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Healthy |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Connected", wireType)
+ }
+ m.Connected = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Connected |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Requested", wireType)
+ }
+ m.Requested = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Requested |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Available", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Available = bool(v != 0)
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Machines", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Machines == nil {
+ m.Machines = &Machines{}
+ }
+ if err := m.Machines.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType)
+ }
+ m.Phase = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Phase |= ClusterStatusSpec_Phase(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Ready", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Ready = bool(v != 0)
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KubernetesAPIReady", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.KubernetesAPIReady = bool(v != 0)
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ControlplaneReady", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ControlplaneReady = bool(v != 0)
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field HasConnectedControlPlanes", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.HasConnectedControlPlanes = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterUUID) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterUUID: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterUUID: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Uuid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Uuid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterConfigVersionSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterConfigVersionSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterConfigVersionSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Version = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterMachineConfigStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterMachineConfigStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterMachineConfigStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterMachineConfigVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterMachineConfigVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterMachineVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterMachineVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterMachineConfigSha256", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterMachineConfigSha256 = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastConfigError", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LastConfigError = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TalosVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TalosVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SchematicId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SchematicId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterBootstrapStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterBootstrapStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterBootstrapStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Bootstrapped", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Bootstrapped = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterSecretsSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterSecretsSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterSecretsSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...)
+ if m.Data == nil {
+ m.Data = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LoadBalancerConfigSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LoadBalancerConfigSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LoadBalancerConfigSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BindPort", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.BindPort = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Endpoints", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Endpoints = append(m.Endpoints, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SiderolinkEndpoint", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SiderolinkEndpoint = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LoadBalancerStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LoadBalancerStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LoadBalancerStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Healthy", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Healthy = bool(v != 0)
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Stopped", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Stopped = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubernetesVersionSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubernetesVersionSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubernetesVersionSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Version = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TalosVersionSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TalosVersionSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TalosVersionSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Version = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CompatibleKubernetesVersions", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.CompatibleKubernetesVersions = append(m.CompatibleKubernetesVersions, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *InstallationMediaSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: InstallationMediaSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: InstallationMediaSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Architecture", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Architecture = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Profile", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Profile = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ContentType", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ContentType = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SrcFilePrefix", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SrcFilePrefix = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DestFilePrefix", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.DestFilePrefix = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Extension", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Extension = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 11:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NoSecureBoot", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.NoSecureBoot = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ConfigPatchSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ConfigPatchSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ConfigPatchSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Data = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineSetSpec_MachineClass) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineSetSpec_MachineClass: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineSetSpec_MachineClass: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MachineCount", wireType)
+ }
+ m.MachineCount = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MachineCount |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AllocationType", wireType)
+ }
+ m.AllocationType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.AllocationType |= MachineSetSpec_MachineClass_AllocationType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineSetSpec_BootstrapSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineSetSpec_BootstrapSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineSetSpec_BootstrapSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterUuid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterUuid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Snapshot", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Snapshot = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineSetSpec_RollingUpdateStrategyConfig) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineSetSpec_RollingUpdateStrategyConfig: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineSetSpec_RollingUpdateStrategyConfig: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MaxParallelism", wireType)
+ }
+ m.MaxParallelism = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MaxParallelism |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineSetSpec_UpdateStrategyConfig) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineSetSpec_UpdateStrategyConfig: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineSetSpec_UpdateStrategyConfig: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rolling", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Rolling == nil {
+ m.Rolling = &MachineSetSpec_RollingUpdateStrategyConfig{}
+ }
+ if err := m.Rolling.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineSetSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineSetSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineSetSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType)
+ }
+ m.UpdateStrategy = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.UpdateStrategy |= MachineSetSpec_UpdateStrategy(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MachineClass", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.MachineClass == nil {
+ m.MachineClass = &MachineSetSpec_MachineClass{}
+ }
+ if err := m.MachineClass.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BootstrapSpec", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.BootstrapSpec == nil {
+ m.BootstrapSpec = &MachineSetSpec_BootstrapSpec{}
+ }
+ if err := m.BootstrapSpec.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DeleteStrategy", wireType)
+ }
+ m.DeleteStrategy = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.DeleteStrategy |= MachineSetSpec_UpdateStrategy(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategyConfig", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.UpdateStrategyConfig == nil {
+ m.UpdateStrategyConfig = &MachineSetSpec_UpdateStrategyConfig{}
+ }
+ if err := m.UpdateStrategyConfig.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DeleteStrategyConfig", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.DeleteStrategyConfig == nil {
+ m.DeleteStrategyConfig = &MachineSetSpec_UpdateStrategyConfig{}
+ }
+ if err := m.DeleteStrategyConfig.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TalosUpgradeStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TalosUpgradeStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TalosUpgradeStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType)
+ }
+ m.Phase = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Phase |= TalosUpgradeStatusSpec_Phase(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Error = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Step", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Step = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Status = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastUpgradeVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LastUpgradeVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CurrentUpgradeVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.CurrentUpgradeVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field UpgradeVersions", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.UpgradeVersions = append(m.UpgradeVersions, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineSetStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineSetStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineSetStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType)
+ }
+ m.Phase = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Phase |= MachineSetPhase(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Ready", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Ready = bool(v != 0)
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Error = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Machines", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Machines == nil {
+ m.Machines = &Machines{}
+ }
+ if err := m.Machines.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ConfigHash", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ConfigHash = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MachineClass", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.MachineClass == nil {
+ m.MachineClass = &MachineSetSpec_MachineClass{}
+ }
+ if err := m.MachineClass.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineSetNodeSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineSetNodeSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineSetNodeSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineLabelsSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineLabelsSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineLabelsSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineStatusSnapshotSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineStatusSnapshotSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineStatusSnapshotSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MachineStatus", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.MachineStatus == nil {
+ m.MachineStatus = &machine.MachineStatusEvent{}
+ }
+ if unmarshal, ok := interface{}(m.MachineStatus).(interface {
+ UnmarshalVT([]byte) error
+ }); ok {
+ if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ } else {
+ if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.MachineStatus); err != nil {
+ return err
+ }
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ControlPlaneStatusSpec_Condition) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ControlPlaneStatusSpec_Condition: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ControlPlaneStatusSpec_Condition: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ m.Type = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Type |= ConditionType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Reason = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ m.Status = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Status |= ControlPlaneStatusSpec_Condition_Status(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Severity", wireType)
+ }
+ m.Severity = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Severity |= ControlPlaneStatusSpec_Condition_Severity(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ControlPlaneStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ControlPlaneStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ControlPlaneStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Conditions = append(m.Conditions, &ControlPlaneStatusSpec_Condition{})
+ if err := m.Conditions[len(m.Conditions)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterEndpointSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterEndpointSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterEndpointSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ManagementAddresses", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ManagementAddresses = append(m.ManagementAddresses, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubernetesStatusSpec_NodeStatus) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubernetesStatusSpec_NodeStatus: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubernetesStatusSpec_NodeStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Nodename", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Nodename = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KubeletVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.KubeletVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Ready", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Ready = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubernetesStatusSpec_StaticPodStatus) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubernetesStatusSpec_StaticPodStatus: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubernetesStatusSpec_StaticPodStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field App", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.App = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Version = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Ready", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Ready = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubernetesStatusSpec_NodeStaticPods) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubernetesStatusSpec_NodeStaticPods: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubernetesStatusSpec_NodeStaticPods: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Nodename", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Nodename = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field StaticPods", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.StaticPods = append(m.StaticPods, &KubernetesStatusSpec_StaticPodStatus{})
+ if err := m.StaticPods[len(m.StaticPods)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubernetesStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubernetesStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubernetesStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Nodes = append(m.Nodes, &KubernetesStatusSpec_NodeStatus{})
+ if err := m.Nodes[len(m.Nodes)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field StaticPods", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.StaticPods = append(m.StaticPods, &KubernetesStatusSpec_NodeStaticPods{})
+ if err := m.StaticPods[len(m.StaticPods)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubernetesUpgradeStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubernetesUpgradeStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubernetesUpgradeStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType)
+ }
+ m.Phase = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Phase |= KubernetesUpgradeStatusSpec_Phase(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Error = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Step", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Step = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Status = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastUpgradeVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LastUpgradeVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field UpgradeVersions", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.UpgradeVersions = append(m.UpgradeVersions, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CurrentUpgradeVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.CurrentUpgradeVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubernetesUpgradeManifestStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubernetesUpgradeManifestStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubernetesUpgradeManifestStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field OutOfSync", wireType)
+ }
+ m.OutOfSync = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.OutOfSync |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastFatalError", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LastFatalError = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DestroyStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DestroyStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DestroyStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Phase = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *OngoingTaskSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: OngoingTaskSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: OngoingTaskSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Title = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TalosUpgrade", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if oneof, ok := m.Details.(*OngoingTaskSpec_TalosUpgrade); ok {
+ if err := oneof.TalosUpgrade.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ } else {
+ v := &TalosUpgradeStatusSpec{}
+ if err := v.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ m.Details = &OngoingTaskSpec_TalosUpgrade{TalosUpgrade: v}
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KubernetesUpgrade", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if oneof, ok := m.Details.(*OngoingTaskSpec_KubernetesUpgrade); ok {
+ if err := oneof.KubernetesUpgrade.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ } else {
+ v := &KubernetesUpgradeStatusSpec{}
+ if err := v.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ m.Details = &OngoingTaskSpec_KubernetesUpgrade{KubernetesUpgrade: v}
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Destroy", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if oneof, ok := m.Details.(*OngoingTaskSpec_Destroy); ok {
+ if err := oneof.Destroy.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ } else {
+ v := &DestroyStatusSpec{}
+ if err := v.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ m.Details = &OngoingTaskSpec_Destroy{Destroy: v}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterMachineEncryptionKeySpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterMachineEncryptionKeySpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterMachineEncryptionKeySpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...)
+ if m.Data == nil {
+ m.Data = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExposedServiceSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExposedServiceSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExposedServiceSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
+ }
+ m.Port = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Port |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Label", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Label = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IconBase64", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.IconBase64 = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *FeaturesConfigSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: FeaturesConfigSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: FeaturesConfigSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EnableWorkloadProxying", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.EnableWorkloadProxying = bool(v != 0)
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EtcdBackupSettings", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EtcdBackupSettings == nil {
+ m.EtcdBackupSettings = &EtcdBackupSettings{}
+ }
+ if err := m.EtcdBackupSettings.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EtcdBackupSettings) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EtcdBackupSettings: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EtcdBackupSettings: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TickInterval", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TickInterval == nil {
+ m.TickInterval = &durationpb.Duration{}
+ }
+ if err := (*durationpb1.Duration)(m.TickInterval).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MinInterval", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.MinInterval == nil {
+ m.MinInterval = &durationpb.Duration{}
+ }
+ if err := (*durationpb1.Duration)(m.MinInterval).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MaxInterval", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.MaxInterval == nil {
+ m.MaxInterval = &durationpb.Duration{}
+ }
+ if err := (*durationpb1.Duration)(m.MaxInterval).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineClassSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineClassSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineClassSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MatchLabels", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.MatchLabels = append(m.MatchLabels, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MachineConfigGenOptionsSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MachineConfigGenOptionsSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MachineConfigGenOptionsSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field InstallDisk", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.InstallDisk = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EtcdAuditResultSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EtcdAuditResultSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EtcdAuditResultSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType == 0 {
+ var v uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.EtcdMemberIds = append(m.EtcdMemberIds, v)
+ } else if wireType == 2 {
+ var packedLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ packedLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if packedLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + packedLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var elementCount int
+ var count int
+ for _, integer := range dAtA[iNdEx:postIndex] {
+ if integer < 128 {
+ count++
+ }
+ }
+ elementCount = count
+ if elementCount != 0 && len(m.EtcdMemberIds) == 0 {
+ m.EtcdMemberIds = make([]uint64, 0, elementCount)
+ }
+ for iNdEx < postIndex {
+ var v uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.EtcdMemberIds = append(m.EtcdMemberIds, v)
+ }
+ } else {
+ return fmt.Errorf("proto: wrong wireType = %d for field EtcdMemberIds", wireType)
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubeconfigSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubeconfigSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubeconfigSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...)
+ if m.Data == nil {
+ m.Data = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubernetesUsageSpec_Quantity) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubernetesUsageSpec_Quantity: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubernetesUsageSpec_Quantity: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 1 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType)
+ }
+ var v uint64
+ if (iNdEx + 8) > l {
+ return io.ErrUnexpectedEOF
+ }
+ v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:]))
+ iNdEx += 8
+ m.Requests = float64(math.Float64frombits(v))
+ case 2:
+ if wireType != 1 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Limits", wireType)
+ }
+ var v uint64
+ if (iNdEx + 8) > l {
+ return io.ErrUnexpectedEOF
+ }
+ v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:]))
+ iNdEx += 8
+ m.Limits = float64(math.Float64frombits(v))
+ case 3:
+ if wireType != 1 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType)
+ }
+ var v uint64
+ if (iNdEx + 8) > l {
+ return io.ErrUnexpectedEOF
+ }
+ v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:]))
+ iNdEx += 8
+ m.Capacity = float64(math.Float64frombits(v))
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubernetesUsageSpec_Pod) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubernetesUsageSpec_Pod: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubernetesUsageSpec_Pod: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Count", wireType)
+ }
+ m.Count = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Count |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType)
+ }
+ m.Capacity = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Capacity |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KubernetesUsageSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KubernetesUsageSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KubernetesUsageSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cpu", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Cpu == nil {
+ m.Cpu = &KubernetesUsageSpec_Quantity{}
+ }
+ if err := m.Cpu.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Mem", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Mem == nil {
+ m.Mem = &KubernetesUsageSpec_Quantity{}
+ }
+ if err := m.Mem.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Storage == nil {
+ m.Storage = &KubernetesUsageSpec_Quantity{}
+ }
+ if err := m.Storage.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Pods == nil {
+ m.Pods = &KubernetesUsageSpec_Pod{}
+ }
+ if err := m.Pods.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ImagePullRequestSpec_NodeImageList) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ImagePullRequestSpec_NodeImageList: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ImagePullRequestSpec_NodeImageList: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Node", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Node = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Images", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Images = append(m.Images, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ImagePullRequestSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ImagePullRequestSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ImagePullRequestSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NodeImageList", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.NodeImageList = append(m.NodeImageList, &ImagePullRequestSpec_NodeImageList{})
+ if err := m.NodeImageList[len(m.NodeImageList)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ImagePullStatusSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ImagePullStatusSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ImagePullStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastProcessedNode", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LastProcessedNode = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastProcessedImage", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LastProcessedImage = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastProcessedError", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LastProcessedError = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ProcessedCount", wireType)
+ }
+ m.ProcessedCount = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ProcessedCount |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TotalCount", wireType)
+ }
+ m.TotalCount = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TotalCount |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RequestVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.RequestVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SchematicSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SchematicSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SchematicSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Extensions", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Extensions = append(m.Extensions, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TalosExtensionsSpec_Info) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TalosExtensionsSpec_Info: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TalosExtensionsSpec_Info: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Author", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Author = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Version = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Description = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Ref", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Ref = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Digest", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Digest = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TalosExtensionsSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TalosExtensionsSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TalosExtensionsSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Items = append(m.Items, &TalosExtensionsSpec_Info{})
+ if err := m.Items[len(m.Items)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SchematicConfigurationSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SchematicConfigurationSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SchematicConfigurationSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SchematicId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SchematicId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ m.Target = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Target |= SchematicConfigurationSpec_Target(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
diff --git a/client/api/omni/specs/omni_yaml.go b/client/api/omni/specs/omni_yaml.go
new file mode 100644
index 000000000..956786727
--- /dev/null
+++ b/client/api/omni/specs/omni_yaml.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package specs
+
+import (
+ "github.com/siderolabs/gen/xslices"
+ "gopkg.in/yaml.v3"
+)
+
+// MarshalYAML implements yaml.Marshaler interface.
+func (c *ClusterMachineSpec) MarshalYAML() (any, error) {
+ return &yaml.Node{
+ Kind: yaml.MappingNode,
+ Tag: "!!map",
+ Content: []*yaml.Node{
+ {Kind: yaml.ScalarNode, Tag: "!!str", Value: "kubernetes_version"},
+ {Kind: yaml.ScalarNode, Tag: "!!str", Value: c.KubernetesVersion},
+ },
+ }, nil
+}
+
+// MarshalYAML implements yaml.Marshaler interface.
+func (c *ClusterMachineConfigPatchesSpec) MarshalYAML() (any, error) {
+ contents := xslices.Map(c.Patches, func(patch string) *yaml.Node {
+ style := yaml.FlowStyle
+ if len(patch) > 0 && (patch[0] == '\n' || patch[0] == ' ') {
+ style = yaml.SingleQuotedStyle
+ }
+
+ return &yaml.Node{
+ Kind: yaml.ScalarNode,
+ Tag: "!!str",
+ Style: style,
+ Value: patch,
+ }
+ })
+
+ return &yaml.Node{
+ Kind: yaml.MappingNode,
+ Tag: "!!map",
+ Content: []*yaml.Node{
+ {Kind: yaml.ScalarNode, Tag: "!!str", Value: "patches"},
+ {Kind: yaml.SequenceNode, Tag: "!!seq", Content: contents},
+ },
+ }, nil
+}
diff --git a/client/api/omni/specs/siderolink.pb.go b/client/api/omni/specs/siderolink.pb.go
new file mode 100644
index 000000000..840ffc257
--- /dev/null
+++ b/client/api/omni/specs/siderolink.pb.go
@@ -0,0 +1,497 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.32.0
+// protoc v4.24.4
+// source: omni/specs/siderolink.proto
+
+package specs
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// SiderolinkConfigSpec describes siderolink wireguard server state to persist it across restarts.
+type SiderolinkConfigSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ PrivateKey string `protobuf:"bytes,1,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"`
+ PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
+ WireguardEndpoint string `protobuf:"bytes,3,opt,name=wireguard_endpoint,json=wireguardEndpoint,proto3" json:"wireguard_endpoint,omitempty"`
+ Subnet string `protobuf:"bytes,5,opt,name=subnet,proto3" json:"subnet,omitempty"`
+ ServerAddress string `protobuf:"bytes,6,opt,name=server_address,json=serverAddress,proto3" json:"server_address,omitempty"`
+ JoinToken string `protobuf:"bytes,7,opt,name=join_token,json=joinToken,proto3" json:"join_token,omitempty"`
+ AdvertisedEndpoint string `protobuf:"bytes,8,opt,name=advertised_endpoint,json=advertisedEndpoint,proto3" json:"advertised_endpoint,omitempty"`
+}
+
+func (x *SiderolinkConfigSpec) Reset() {
+ *x = SiderolinkConfigSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_siderolink_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SiderolinkConfigSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SiderolinkConfigSpec) ProtoMessage() {}
+
+func (x *SiderolinkConfigSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_siderolink_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SiderolinkConfigSpec.ProtoReflect.Descriptor instead.
+func (*SiderolinkConfigSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_siderolink_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *SiderolinkConfigSpec) GetPrivateKey() string {
+ if x != nil {
+ return x.PrivateKey
+ }
+ return ""
+}
+
+func (x *SiderolinkConfigSpec) GetPublicKey() string {
+ if x != nil {
+ return x.PublicKey
+ }
+ return ""
+}
+
+func (x *SiderolinkConfigSpec) GetWireguardEndpoint() string {
+ if x != nil {
+ return x.WireguardEndpoint
+ }
+ return ""
+}
+
+func (x *SiderolinkConfigSpec) GetSubnet() string {
+ if x != nil {
+ return x.Subnet
+ }
+ return ""
+}
+
+func (x *SiderolinkConfigSpec) GetServerAddress() string {
+ if x != nil {
+ return x.ServerAddress
+ }
+ return ""
+}
+
+func (x *SiderolinkConfigSpec) GetJoinToken() string {
+ if x != nil {
+ return x.JoinToken
+ }
+ return ""
+}
+
+func (x *SiderolinkConfigSpec) GetAdvertisedEndpoint() string {
+ if x != nil {
+ return x.AdvertisedEndpoint
+ }
+ return ""
+}
+
+// SiderolinkConnectionSpec describes each node connection information.
+type SiderolinkSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NodeSubnet string `protobuf:"bytes,1,opt,name=node_subnet,json=nodeSubnet,proto3" json:"node_subnet,omitempty"`
+ NodePublicKey string `protobuf:"bytes,2,opt,name=node_public_key,json=nodePublicKey,proto3" json:"node_public_key,omitempty"`
+ LastEndpoint string `protobuf:"bytes,3,opt,name=last_endpoint,json=lastEndpoint,proto3" json:"last_endpoint,omitempty"`
+ Connected bool `protobuf:"varint,4,opt,name=connected,proto3" json:"connected,omitempty"`
+}
+
+func (x *SiderolinkSpec) Reset() {
+ *x = SiderolinkSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_siderolink_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SiderolinkSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SiderolinkSpec) ProtoMessage() {}
+
+func (x *SiderolinkSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_siderolink_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SiderolinkSpec.ProtoReflect.Descriptor instead.
+func (*SiderolinkSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_siderolink_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *SiderolinkSpec) GetNodeSubnet() string {
+ if x != nil {
+ return x.NodeSubnet
+ }
+ return ""
+}
+
+func (x *SiderolinkSpec) GetNodePublicKey() string {
+ if x != nil {
+ return x.NodePublicKey
+ }
+ return ""
+}
+
+func (x *SiderolinkSpec) GetLastEndpoint() string {
+ if x != nil {
+ return x.LastEndpoint
+ }
+ return ""
+}
+
+func (x *SiderolinkSpec) GetConnected() bool {
+ if x != nil {
+ return x.Connected
+ }
+ return false
+}
+
+// SiderolinkConnectionSpec describes each node connection information.
+type SiderolinkCounterSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BytesReceived int64 `protobuf:"varint,1,opt,name=bytes_received,json=bytesReceived,proto3" json:"bytes_received,omitempty"`
+ BytesSent int64 `protobuf:"varint,2,opt,name=bytes_sent,json=bytesSent,proto3" json:"bytes_sent,omitempty"`
+ LastAlive *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=last_alive,json=lastAlive,proto3" json:"last_alive,omitempty"`
+}
+
+func (x *SiderolinkCounterSpec) Reset() {
+ *x = SiderolinkCounterSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_siderolink_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SiderolinkCounterSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SiderolinkCounterSpec) ProtoMessage() {}
+
+func (x *SiderolinkCounterSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_siderolink_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SiderolinkCounterSpec.ProtoReflect.Descriptor instead.
+func (*SiderolinkCounterSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_siderolink_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *SiderolinkCounterSpec) GetBytesReceived() int64 {
+ if x != nil {
+ return x.BytesReceived
+ }
+ return 0
+}
+
+func (x *SiderolinkCounterSpec) GetBytesSent() int64 {
+ if x != nil {
+ return x.BytesSent
+ }
+ return 0
+}
+
+func (x *SiderolinkCounterSpec) GetLastAlive() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastAlive
+ }
+ return nil
+}
+
+// ConnectionParamsSpec describes generated kernel parameters for connecting
+// the Talos node to Omni.
+type ConnectionParamsSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Args keeps the generated kernel arguments string.
+ Args string `protobuf:"bytes,1,opt,name=args,proto3" json:"args,omitempty"`
+ // ApiEndpoint is the service gRPC API endpoint (external domain/ip, schema and port).
+ ApiEndpoint string `protobuf:"bytes,2,opt,name=api_endpoint,json=apiEndpoint,proto3" json:"api_endpoint,omitempty"`
+ // WireguardEndpoint is the service IP visible from the internal SideroLink network.
+ WireguardEndpoint string `protobuf:"bytes,3,opt,name=wireguard_endpoint,json=wireguardEndpoint,proto3" json:"wireguard_endpoint,omitempty"`
+ // JoinToken is a join token required to connect to SideroLink.
+ JoinToken string `protobuf:"bytes,4,opt,name=join_token,json=joinToken,proto3" json:"join_token,omitempty"`
+}
+
+func (x *ConnectionParamsSpec) Reset() {
+ *x = ConnectionParamsSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_siderolink_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ConnectionParamsSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ConnectionParamsSpec) ProtoMessage() {}
+
+func (x *ConnectionParamsSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_siderolink_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ConnectionParamsSpec.ProtoReflect.Descriptor instead.
+func (*ConnectionParamsSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_siderolink_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *ConnectionParamsSpec) GetArgs() string {
+ if x != nil {
+ return x.Args
+ }
+ return ""
+}
+
+func (x *ConnectionParamsSpec) GetApiEndpoint() string {
+ if x != nil {
+ return x.ApiEndpoint
+ }
+ return ""
+}
+
+func (x *ConnectionParamsSpec) GetWireguardEndpoint() string {
+ if x != nil {
+ return x.WireguardEndpoint
+ }
+ return ""
+}
+
+func (x *ConnectionParamsSpec) GetJoinToken() string {
+ if x != nil {
+ return x.JoinToken
+ }
+ return ""
+}
+
+var File_omni_specs_siderolink_proto protoreflect.FileDescriptor
+
+var file_omni_specs_siderolink_proto_rawDesc = []byte{
+ 0x0a, 0x1b, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2f, 0x73, 0x69, 0x64,
+ 0x65, 0x72, 0x6f, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x73,
+ 0x70, 0x65, 0x63, 0x73, 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, 0x94, 0x02, 0x0a, 0x14, 0x53, 0x69, 0x64, 0x65, 0x72, 0x6f,
+ 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x2d,
+ 0x0a, 0x12, 0x77, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x70,
+ 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x77, 0x69, 0x72, 0x65,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x16, 0x0a,
+ 0x06, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
+ 0x75, 0x62, 0x6e, 0x65, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f,
+ 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x61,
+ 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74,
+ 0x69, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0xa8, 0x01, 0x0a,
+ 0x0e, 0x53, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74,
+ 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f,
+ 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x50,
+ 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74,
+ 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a,
+ 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x05, 0x10,
+ 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x98, 0x01, 0x0a, 0x15, 0x53, 0x69, 0x64, 0x65,
+ 0x72, 0x6f, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65,
+ 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69,
+ 0x76, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73,
+ 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x79, 0x74, 0x65,
+ 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x79,
+ 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f,
+ 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x03, 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, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x6c, 0x69,
+ 0x76, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x61,
+ 0x72, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12,
+ 0x21, 0x0a, 0x0c, 0x61, 0x70, 0x69, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x70, 0x69, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x77, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x5f,
+ 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11,
+ 0x77, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
+ 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73,
+ 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x63,
+ 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x73,
+ 0x70, 0x65, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_omni_specs_siderolink_proto_rawDescOnce sync.Once
+ file_omni_specs_siderolink_proto_rawDescData = file_omni_specs_siderolink_proto_rawDesc
+)
+
+func file_omni_specs_siderolink_proto_rawDescGZIP() []byte {
+ file_omni_specs_siderolink_proto_rawDescOnce.Do(func() {
+ file_omni_specs_siderolink_proto_rawDescData = protoimpl.X.CompressGZIP(file_omni_specs_siderolink_proto_rawDescData)
+ })
+ return file_omni_specs_siderolink_proto_rawDescData
+}
+
+var file_omni_specs_siderolink_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_omni_specs_siderolink_proto_goTypes = []interface{}{
+ (*SiderolinkConfigSpec)(nil), // 0: specs.SiderolinkConfigSpec
+ (*SiderolinkSpec)(nil), // 1: specs.SiderolinkSpec
+ (*SiderolinkCounterSpec)(nil), // 2: specs.SiderolinkCounterSpec
+ (*ConnectionParamsSpec)(nil), // 3: specs.ConnectionParamsSpec
+ (*timestamppb.Timestamp)(nil), // 4: google.protobuf.Timestamp
+}
+var file_omni_specs_siderolink_proto_depIdxs = []int32{
+ 4, // 0: specs.SiderolinkCounterSpec.last_alive:type_name -> google.protobuf.Timestamp
+ 1, // [1:1] is the sub-list for method output_type
+ 1, // [1:1] is the sub-list for method input_type
+ 1, // [1:1] is the sub-list for extension type_name
+ 1, // [1:1] is the sub-list for extension extendee
+ 0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_omni_specs_siderolink_proto_init() }
+func file_omni_specs_siderolink_proto_init() {
+ if File_omni_specs_siderolink_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_omni_specs_siderolink_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SiderolinkConfigSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_siderolink_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SiderolinkSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_siderolink_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SiderolinkCounterSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_siderolink_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ConnectionParamsSpec); 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{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_omni_specs_siderolink_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 4,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_omni_specs_siderolink_proto_goTypes,
+ DependencyIndexes: file_omni_specs_siderolink_proto_depIdxs,
+ MessageInfos: file_omni_specs_siderolink_proto_msgTypes,
+ }.Build()
+ File_omni_specs_siderolink_proto = out.File
+ file_omni_specs_siderolink_proto_rawDesc = nil
+ file_omni_specs_siderolink_proto_goTypes = nil
+ file_omni_specs_siderolink_proto_depIdxs = nil
+}
diff --git a/client/api/omni/specs/siderolink.proto b/client/api/omni/specs/siderolink.proto
new file mode 100644
index 000000000..b88bdaeb7
--- /dev/null
+++ b/client/api/omni/specs/siderolink.proto
@@ -0,0 +1,47 @@
+syntax = "proto3";
+package specs;
+
+option go_package = "github.com/siderolabs/omni/client/api/omni/specs";
+
+import "google/protobuf/timestamp.proto";
+
+// SiderolinkConfigSpec describes siderolink wireguard server state to persist it across restarts.
+message SiderolinkConfigSpec {
+ string private_key = 1;
+ string public_key = 2;
+ string wireguard_endpoint = 3;
+ string subnet = 5;
+ string server_address = 6;
+ string join_token = 7;
+ string advertised_endpoint = 8;
+}
+
+// SiderolinkConnectionSpec describes each node connection information.
+message SiderolinkSpec {
+ string node_subnet = 1;
+ string node_public_key = 2;
+ string last_endpoint = 3;
+ bool connected = 4;
+ reserved 5;
+ reserved 6;
+}
+
+// SiderolinkConnectionSpec describes each node connection information.
+message SiderolinkCounterSpec {
+ int64 bytes_received = 1;
+ int64 bytes_sent = 2;
+ google.protobuf.Timestamp last_alive = 3;
+}
+
+// ConnectionParamsSpec describes generated kernel parameters for connecting
+// the Talos node to Omni.
+message ConnectionParamsSpec {
+ // Args keeps the generated kernel arguments string.
+ string args = 1;
+ // ApiEndpoint is the service gRPC API endpoint (external domain/ip, schema and port).
+ string api_endpoint = 2;
+ // WireguardEndpoint is the service IP visible from the internal SideroLink network.
+ string wireguard_endpoint = 3;
+ // JoinToken is a join token required to connect to SideroLink.
+ string join_token = 4;
+}
diff --git a/client/api/omni/specs/siderolink_vtproto.pb.go b/client/api/omni/specs/siderolink_vtproto.pb.go
new file mode 100644
index 000000000..da8880a91
--- /dev/null
+++ b/client/api/omni/specs/siderolink_vtproto.pb.go
@@ -0,0 +1,1339 @@
+// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.
+// protoc-gen-go-vtproto version: v0.6.0
+// source: omni/specs/siderolink.proto
+
+package specs
+
+import (
+ fmt "fmt"
+ io "io"
+
+ protohelpers "github.com/planetscale/vtprotobuf/protohelpers"
+ timestamppb1 "github.com/planetscale/vtprotobuf/types/known/timestamppb"
+ proto "google.golang.org/protobuf/proto"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+func (m *SiderolinkConfigSpec) CloneVT() *SiderolinkConfigSpec {
+ if m == nil {
+ return (*SiderolinkConfigSpec)(nil)
+ }
+ r := new(SiderolinkConfigSpec)
+ r.PrivateKey = m.PrivateKey
+ r.PublicKey = m.PublicKey
+ r.WireguardEndpoint = m.WireguardEndpoint
+ r.Subnet = m.Subnet
+ r.ServerAddress = m.ServerAddress
+ r.JoinToken = m.JoinToken
+ r.AdvertisedEndpoint = m.AdvertisedEndpoint
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *SiderolinkConfigSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *SiderolinkSpec) CloneVT() *SiderolinkSpec {
+ if m == nil {
+ return (*SiderolinkSpec)(nil)
+ }
+ r := new(SiderolinkSpec)
+ r.NodeSubnet = m.NodeSubnet
+ r.NodePublicKey = m.NodePublicKey
+ r.LastEndpoint = m.LastEndpoint
+ r.Connected = m.Connected
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *SiderolinkSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *SiderolinkCounterSpec) CloneVT() *SiderolinkCounterSpec {
+ if m == nil {
+ return (*SiderolinkCounterSpec)(nil)
+ }
+ r := new(SiderolinkCounterSpec)
+ r.BytesReceived = m.BytesReceived
+ r.BytesSent = m.BytesSent
+ r.LastAlive = (*timestamppb.Timestamp)((*timestamppb1.Timestamp)(m.LastAlive).CloneVT())
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *SiderolinkCounterSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ConnectionParamsSpec) CloneVT() *ConnectionParamsSpec {
+ if m == nil {
+ return (*ConnectionParamsSpec)(nil)
+ }
+ r := new(ConnectionParamsSpec)
+ r.Args = m.Args
+ r.ApiEndpoint = m.ApiEndpoint
+ r.WireguardEndpoint = m.WireguardEndpoint
+ r.JoinToken = m.JoinToken
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ConnectionParamsSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (this *SiderolinkConfigSpec) EqualVT(that *SiderolinkConfigSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.PrivateKey != that.PrivateKey {
+ return false
+ }
+ if this.PublicKey != that.PublicKey {
+ return false
+ }
+ if this.WireguardEndpoint != that.WireguardEndpoint {
+ return false
+ }
+ if this.Subnet != that.Subnet {
+ return false
+ }
+ if this.ServerAddress != that.ServerAddress {
+ return false
+ }
+ if this.JoinToken != that.JoinToken {
+ return false
+ }
+ if this.AdvertisedEndpoint != that.AdvertisedEndpoint {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *SiderolinkConfigSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*SiderolinkConfigSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *SiderolinkSpec) EqualVT(that *SiderolinkSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.NodeSubnet != that.NodeSubnet {
+ return false
+ }
+ if this.NodePublicKey != that.NodePublicKey {
+ return false
+ }
+ if this.LastEndpoint != that.LastEndpoint {
+ return false
+ }
+ if this.Connected != that.Connected {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *SiderolinkSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*SiderolinkSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *SiderolinkCounterSpec) EqualVT(that *SiderolinkCounterSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.BytesReceived != that.BytesReceived {
+ return false
+ }
+ if this.BytesSent != that.BytesSent {
+ return false
+ }
+ if !(*timestamppb1.Timestamp)(this.LastAlive).EqualVT((*timestamppb1.Timestamp)(that.LastAlive)) {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *SiderolinkCounterSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*SiderolinkCounterSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ConnectionParamsSpec) EqualVT(that *ConnectionParamsSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Args != that.Args {
+ return false
+ }
+ if this.ApiEndpoint != that.ApiEndpoint {
+ return false
+ }
+ if this.WireguardEndpoint != that.WireguardEndpoint {
+ return false
+ }
+ if this.JoinToken != that.JoinToken {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ConnectionParamsSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ConnectionParamsSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (m *SiderolinkConfigSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SiderolinkConfigSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *SiderolinkConfigSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.AdvertisedEndpoint) > 0 {
+ i -= len(m.AdvertisedEndpoint)
+ copy(dAtA[i:], m.AdvertisedEndpoint)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.AdvertisedEndpoint)))
+ i--
+ dAtA[i] = 0x42
+ }
+ if len(m.JoinToken) > 0 {
+ i -= len(m.JoinToken)
+ copy(dAtA[i:], m.JoinToken)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.JoinToken)))
+ i--
+ dAtA[i] = 0x3a
+ }
+ if len(m.ServerAddress) > 0 {
+ i -= len(m.ServerAddress)
+ copy(dAtA[i:], m.ServerAddress)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ServerAddress)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.Subnet) > 0 {
+ i -= len(m.Subnet)
+ copy(dAtA[i:], m.Subnet)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Subnet)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.WireguardEndpoint) > 0 {
+ i -= len(m.WireguardEndpoint)
+ copy(dAtA[i:], m.WireguardEndpoint)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.WireguardEndpoint)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.PublicKey) > 0 {
+ i -= len(m.PublicKey)
+ copy(dAtA[i:], m.PublicKey)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PublicKey)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.PrivateKey) > 0 {
+ i -= len(m.PrivateKey)
+ copy(dAtA[i:], m.PrivateKey)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PrivateKey)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SiderolinkSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SiderolinkSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *SiderolinkSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Connected {
+ i--
+ if m.Connected {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.LastEndpoint) > 0 {
+ i -= len(m.LastEndpoint)
+ copy(dAtA[i:], m.LastEndpoint)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.LastEndpoint)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.NodePublicKey) > 0 {
+ i -= len(m.NodePublicKey)
+ copy(dAtA[i:], m.NodePublicKey)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.NodePublicKey)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.NodeSubnet) > 0 {
+ i -= len(m.NodeSubnet)
+ copy(dAtA[i:], m.NodeSubnet)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.NodeSubnet)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SiderolinkCounterSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SiderolinkCounterSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *SiderolinkCounterSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.LastAlive != nil {
+ size, err := (*timestamppb1.Timestamp)(m.LastAlive).MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.BytesSent != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.BytesSent))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.BytesReceived != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.BytesReceived))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ConnectionParamsSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ConnectionParamsSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ConnectionParamsSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.JoinToken) > 0 {
+ i -= len(m.JoinToken)
+ copy(dAtA[i:], m.JoinToken)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.JoinToken)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.WireguardEndpoint) > 0 {
+ i -= len(m.WireguardEndpoint)
+ copy(dAtA[i:], m.WireguardEndpoint)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.WireguardEndpoint)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.ApiEndpoint) > 0 {
+ i -= len(m.ApiEndpoint)
+ copy(dAtA[i:], m.ApiEndpoint)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ApiEndpoint)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Args) > 0 {
+ i -= len(m.Args)
+ copy(dAtA[i:], m.Args)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Args)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SiderolinkConfigSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.PrivateKey)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.PublicKey)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.WireguardEndpoint)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Subnet)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ServerAddress)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.JoinToken)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.AdvertisedEndpoint)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *SiderolinkSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.NodeSubnet)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.NodePublicKey)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.LastEndpoint)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Connected {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *SiderolinkCounterSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.BytesReceived != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.BytesReceived))
+ }
+ if m.BytesSent != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.BytesSent))
+ }
+ if m.LastAlive != nil {
+ l = (*timestamppb1.Timestamp)(m.LastAlive).SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ConnectionParamsSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Args)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.ApiEndpoint)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.WireguardEndpoint)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.JoinToken)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *SiderolinkConfigSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SiderolinkConfigSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SiderolinkConfigSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PrivateKey", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PrivateKey = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PublicKey", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PublicKey = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WireguardEndpoint", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.WireguardEndpoint = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Subnet", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Subnet = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ServerAddress", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ServerAddress = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field JoinToken", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.JoinToken = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AdvertisedEndpoint", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.AdvertisedEndpoint = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SiderolinkSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SiderolinkSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SiderolinkSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NodeSubnet", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.NodeSubnet = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NodePublicKey", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.NodePublicKey = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastEndpoint", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LastEndpoint = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Connected", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Connected = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SiderolinkCounterSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SiderolinkCounterSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SiderolinkCounterSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BytesReceived", wireType)
+ }
+ m.BytesReceived = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.BytesReceived |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BytesSent", wireType)
+ }
+ m.BytesSent = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.BytesSent |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastAlive", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.LastAlive == nil {
+ m.LastAlive = ×tamppb.Timestamp{}
+ }
+ if err := (*timestamppb1.Timestamp)(m.LastAlive).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ConnectionParamsSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ConnectionParamsSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ConnectionParamsSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Args", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Args = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ApiEndpoint", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ApiEndpoint = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WireguardEndpoint", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.WireguardEndpoint = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field JoinToken", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.JoinToken = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
diff --git a/client/api/omni/specs/system.pb.go b/client/api/omni/specs/system.pb.go
new file mode 100644
index 000000000..f853685a7
--- /dev/null
+++ b/client/api/omni/specs/system.pb.go
@@ -0,0 +1,286 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.32.0
+// protoc v4.24.4
+// source: omni/specs/system.proto
+
+package specs
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// DBVersionSpec keeps the current version of the COSI DB.
+type DBVersionSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Version uint64 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
+}
+
+func (x *DBVersionSpec) Reset() {
+ *x = DBVersionSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_system_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DBVersionSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DBVersionSpec) ProtoMessage() {}
+
+func (x *DBVersionSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_system_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DBVersionSpec.ProtoReflect.Descriptor instead.
+func (*DBVersionSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_system_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *DBVersionSpec) GetVersion() uint64 {
+ if x != nil {
+ return x.Version
+ }
+ return 0
+}
+
+// SysVersionSpec keeps the current version of Omni.
+type SysVersionSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ BackendVersion string `protobuf:"bytes,1,opt,name=backend_version,json=backendVersion,proto3" json:"backend_version,omitempty"`
+ InstanceName string `protobuf:"bytes,2,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"`
+ BackendApiVersion uint32 `protobuf:"varint,3,opt,name=backend_api_version,json=backendApiVersion,proto3" json:"backend_api_version,omitempty"`
+}
+
+func (x *SysVersionSpec) Reset() {
+ *x = SysVersionSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_system_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SysVersionSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SysVersionSpec) ProtoMessage() {}
+
+func (x *SysVersionSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_system_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SysVersionSpec.ProtoReflect.Descriptor instead.
+func (*SysVersionSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_system_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *SysVersionSpec) GetBackendVersion() string {
+ if x != nil {
+ return x.BackendVersion
+ }
+ return ""
+}
+
+func (x *SysVersionSpec) GetInstanceName() string {
+ if x != nil {
+ return x.InstanceName
+ }
+ return ""
+}
+
+func (x *SysVersionSpec) GetBackendApiVersion() uint32 {
+ if x != nil {
+ return x.BackendApiVersion
+ }
+ return 0
+}
+
+// CertRefreshTickSpec is a certificate refresh tick.
+type CertRefreshTickSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *CertRefreshTickSpec) Reset() {
+ *x = CertRefreshTickSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_system_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CertRefreshTickSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CertRefreshTickSpec) ProtoMessage() {}
+
+func (x *CertRefreshTickSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_system_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CertRefreshTickSpec.ProtoReflect.Descriptor instead.
+func (*CertRefreshTickSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_system_proto_rawDescGZIP(), []int{2}
+}
+
+var File_omni_specs_system_proto protoreflect.FileDescriptor
+
+var file_omni_specs_system_proto_rawDesc = []byte{
+ 0x0a, 0x17, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2f, 0x73, 0x79, 0x73,
+ 0x74, 0x65, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x73, 0x70, 0x65, 0x63, 0x73,
+ 0x22, 0x29, 0x0a, 0x0d, 0x44, 0x42, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65,
+ 0x63, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8e, 0x01, 0x0a, 0x0e,
+ 0x53, 0x79, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x27,
+ 0x0a, 0x0f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64,
+ 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
+ 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13,
+ 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x62, 0x61, 0x63, 0x6b, 0x65,
+ 0x6e, 0x64, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x15, 0x0a, 0x13,
+ 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, 0x63, 0x6b, 0x53,
+ 0x70, 0x65, 0x63, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
+ 0x6d, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6f, 0x6d, 0x6e,
+ 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x6d, 0x6e,
+ 0x69, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_omni_specs_system_proto_rawDescOnce sync.Once
+ file_omni_specs_system_proto_rawDescData = file_omni_specs_system_proto_rawDesc
+)
+
+func file_omni_specs_system_proto_rawDescGZIP() []byte {
+ file_omni_specs_system_proto_rawDescOnce.Do(func() {
+ file_omni_specs_system_proto_rawDescData = protoimpl.X.CompressGZIP(file_omni_specs_system_proto_rawDescData)
+ })
+ return file_omni_specs_system_proto_rawDescData
+}
+
+var file_omni_specs_system_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_omni_specs_system_proto_goTypes = []interface{}{
+ (*DBVersionSpec)(nil), // 0: specs.DBVersionSpec
+ (*SysVersionSpec)(nil), // 1: specs.SysVersionSpec
+ (*CertRefreshTickSpec)(nil), // 2: specs.CertRefreshTickSpec
+}
+var file_omni_specs_system_proto_depIdxs = []int32{
+ 0, // [0:0] is the sub-list for method output_type
+ 0, // [0:0] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_omni_specs_system_proto_init() }
+func file_omni_specs_system_proto_init() {
+ if File_omni_specs_system_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_omni_specs_system_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DBVersionSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_system_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SysVersionSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_system_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CertRefreshTickSpec); 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{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_omni_specs_system_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 3,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_omni_specs_system_proto_goTypes,
+ DependencyIndexes: file_omni_specs_system_proto_depIdxs,
+ MessageInfos: file_omni_specs_system_proto_msgTypes,
+ }.Build()
+ File_omni_specs_system_proto = out.File
+ file_omni_specs_system_proto_rawDesc = nil
+ file_omni_specs_system_proto_goTypes = nil
+ file_omni_specs_system_proto_depIdxs = nil
+}
diff --git a/client/api/omni/specs/system.proto b/client/api/omni/specs/system.proto
new file mode 100644
index 000000000..3cf3c496a
--- /dev/null
+++ b/client/api/omni/specs/system.proto
@@ -0,0 +1,20 @@
+syntax = "proto3";
+package specs;
+
+option go_package = "github.com/siderolabs/omni/client/api/omni/specs";
+
+// DBVersionSpec keeps the current version of the COSI DB.
+message DBVersionSpec {
+ uint64 version = 1;
+}
+
+// SysVersionSpec keeps the current version of Omni.
+message SysVersionSpec {
+ string backend_version = 1;
+ string instance_name = 2;
+ uint32 backend_api_version = 3;
+}
+
+// CertRefreshTickSpec is a certificate refresh tick.
+message CertRefreshTickSpec {
+}
diff --git a/client/api/omni/specs/system_vtproto.pb.go b/client/api/omni/specs/system_vtproto.pb.go
new file mode 100644
index 000000000..3e3dfcf77
--- /dev/null
+++ b/client/api/omni/specs/system_vtproto.pb.go
@@ -0,0 +1,556 @@
+// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.
+// protoc-gen-go-vtproto version: v0.6.0
+// source: omni/specs/system.proto
+
+package specs
+
+import (
+ fmt "fmt"
+ io "io"
+
+ protohelpers "github.com/planetscale/vtprotobuf/protohelpers"
+ proto "google.golang.org/protobuf/proto"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+func (m *DBVersionSpec) CloneVT() *DBVersionSpec {
+ if m == nil {
+ return (*DBVersionSpec)(nil)
+ }
+ r := new(DBVersionSpec)
+ r.Version = m.Version
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *DBVersionSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *SysVersionSpec) CloneVT() *SysVersionSpec {
+ if m == nil {
+ return (*SysVersionSpec)(nil)
+ }
+ r := new(SysVersionSpec)
+ r.BackendVersion = m.BackendVersion
+ r.InstanceName = m.InstanceName
+ r.BackendApiVersion = m.BackendApiVersion
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *SysVersionSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *CertRefreshTickSpec) CloneVT() *CertRefreshTickSpec {
+ if m == nil {
+ return (*CertRefreshTickSpec)(nil)
+ }
+ r := new(CertRefreshTickSpec)
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *CertRefreshTickSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (this *DBVersionSpec) EqualVT(that *DBVersionSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Version != that.Version {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *DBVersionSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*DBVersionSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *SysVersionSpec) EqualVT(that *SysVersionSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.BackendVersion != that.BackendVersion {
+ return false
+ }
+ if this.InstanceName != that.InstanceName {
+ return false
+ }
+ if this.BackendApiVersion != that.BackendApiVersion {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *SysVersionSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*SysVersionSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *CertRefreshTickSpec) EqualVT(that *CertRefreshTickSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *CertRefreshTickSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*CertRefreshTickSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (m *DBVersionSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DBVersionSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *DBVersionSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Version != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Version))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SysVersionSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SysVersionSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *SysVersionSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.BackendApiVersion != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.BackendApiVersion))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.InstanceName) > 0 {
+ i -= len(m.InstanceName)
+ copy(dAtA[i:], m.InstanceName)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.InstanceName)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.BackendVersion) > 0 {
+ i -= len(m.BackendVersion)
+ copy(dAtA[i:], m.BackendVersion)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.BackendVersion)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CertRefreshTickSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CertRefreshTickSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *CertRefreshTickSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *DBVersionSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Version != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Version))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *SysVersionSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.BackendVersion)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.InstanceName)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.BackendApiVersion != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.BackendApiVersion))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *CertRefreshTickSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *DBVersionSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DBVersionSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DBVersionSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
+ }
+ m.Version = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Version |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SysVersionSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SysVersionSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SysVersionSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BackendVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.BackendVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field InstanceName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.InstanceName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BackendApiVersion", wireType)
+ }
+ m.BackendApiVersion = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.BackendApiVersion |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CertRefreshTickSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CertRefreshTickSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CertRefreshTickSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
diff --git a/client/api/omni/specs/virtual.pb.go b/client/api/omni/specs/virtual.pb.go
new file mode 100644
index 000000000..13140efb9
--- /dev/null
+++ b/client/api/omni/specs/virtual.pb.go
@@ -0,0 +1,489 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.32.0
+// protoc v4.24.4
+// source: omni/specs/virtual.proto
+
+package specs
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type CurrentUserSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"`
+ Role string `protobuf:"bytes,3,opt,name=role,proto3" json:"role,omitempty"`
+}
+
+func (x *CurrentUserSpec) Reset() {
+ *x = CurrentUserSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_virtual_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CurrentUserSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CurrentUserSpec) ProtoMessage() {}
+
+func (x *CurrentUserSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_virtual_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CurrentUserSpec.ProtoReflect.Descriptor instead.
+func (*CurrentUserSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_virtual_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *CurrentUserSpec) GetIdentity() string {
+ if x != nil {
+ return x.Identity
+ }
+ return ""
+}
+
+func (x *CurrentUserSpec) GetRole() string {
+ if x != nil {
+ return x.Role
+ }
+ return ""
+}
+
+type PermissionsSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CanReadClusters bool `protobuf:"varint,1,opt,name=can_read_clusters,json=canReadClusters,proto3" json:"can_read_clusters,omitempty"`
+ CanCreateClusters bool `protobuf:"varint,2,opt,name=can_create_clusters,json=canCreateClusters,proto3" json:"can_create_clusters,omitempty"`
+ CanManageUsers bool `protobuf:"varint,3,opt,name=can_manage_users,json=canManageUsers,proto3" json:"can_manage_users,omitempty"`
+ CanReadMachines bool `protobuf:"varint,4,opt,name=can_read_machines,json=canReadMachines,proto3" json:"can_read_machines,omitempty"`
+ CanRemoveMachines bool `protobuf:"varint,5,opt,name=can_remove_machines,json=canRemoveMachines,proto3" json:"can_remove_machines,omitempty"`
+ CanReadMachineLogs bool `protobuf:"varint,6,opt,name=can_read_machine_logs,json=canReadMachineLogs,proto3" json:"can_read_machine_logs,omitempty"`
+ CanReadMachineConfigPatches bool `protobuf:"varint,9,opt,name=can_read_machine_config_patches,json=canReadMachineConfigPatches,proto3" json:"can_read_machine_config_patches,omitempty"`
+ CanManageMachineConfigPatches bool `protobuf:"varint,10,opt,name=can_manage_machine_config_patches,json=canManageMachineConfigPatches,proto3" json:"can_manage_machine_config_patches,omitempty"`
+ CanManageBackupStore bool `protobuf:"varint,11,opt,name=can_manage_backup_store,json=canManageBackupStore,proto3" json:"can_manage_backup_store,omitempty"`
+}
+
+func (x *PermissionsSpec) Reset() {
+ *x = PermissionsSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_virtual_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PermissionsSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PermissionsSpec) ProtoMessage() {}
+
+func (x *PermissionsSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_virtual_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PermissionsSpec.ProtoReflect.Descriptor instead.
+func (*PermissionsSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_virtual_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *PermissionsSpec) GetCanReadClusters() bool {
+ if x != nil {
+ return x.CanReadClusters
+ }
+ return false
+}
+
+func (x *PermissionsSpec) GetCanCreateClusters() bool {
+ if x != nil {
+ return x.CanCreateClusters
+ }
+ return false
+}
+
+func (x *PermissionsSpec) GetCanManageUsers() bool {
+ if x != nil {
+ return x.CanManageUsers
+ }
+ return false
+}
+
+func (x *PermissionsSpec) GetCanReadMachines() bool {
+ if x != nil {
+ return x.CanReadMachines
+ }
+ return false
+}
+
+func (x *PermissionsSpec) GetCanRemoveMachines() bool {
+ if x != nil {
+ return x.CanRemoveMachines
+ }
+ return false
+}
+
+func (x *PermissionsSpec) GetCanReadMachineLogs() bool {
+ if x != nil {
+ return x.CanReadMachineLogs
+ }
+ return false
+}
+
+func (x *PermissionsSpec) GetCanReadMachineConfigPatches() bool {
+ if x != nil {
+ return x.CanReadMachineConfigPatches
+ }
+ return false
+}
+
+func (x *PermissionsSpec) GetCanManageMachineConfigPatches() bool {
+ if x != nil {
+ return x.CanManageMachineConfigPatches
+ }
+ return false
+}
+
+func (x *PermissionsSpec) GetCanManageBackupStore() bool {
+ if x != nil {
+ return x.CanManageBackupStore
+ }
+ return false
+}
+
+type ClusterPermissionsSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CanAddMachines bool `protobuf:"varint,1,opt,name=can_add_machines,json=canAddMachines,proto3" json:"can_add_machines,omitempty"`
+ CanRemoveMachines bool `protobuf:"varint,2,opt,name=can_remove_machines,json=canRemoveMachines,proto3" json:"can_remove_machines,omitempty"`
+ CanRebootMachines bool `protobuf:"varint,3,opt,name=can_reboot_machines,json=canRebootMachines,proto3" json:"can_reboot_machines,omitempty"`
+ CanUpdateKubernetes bool `protobuf:"varint,4,opt,name=can_update_kubernetes,json=canUpdateKubernetes,proto3" json:"can_update_kubernetes,omitempty"`
+ CanDownloadKubeconfig bool `protobuf:"varint,5,opt,name=can_download_kubeconfig,json=canDownloadKubeconfig,proto3" json:"can_download_kubeconfig,omitempty"`
+ CanSyncKubernetesManifests bool `protobuf:"varint,6,opt,name=can_sync_kubernetes_manifests,json=canSyncKubernetesManifests,proto3" json:"can_sync_kubernetes_manifests,omitempty"`
+ CanUpdateTalos bool `protobuf:"varint,7,opt,name=can_update_talos,json=canUpdateTalos,proto3" json:"can_update_talos,omitempty"`
+ CanDownloadTalosconfig bool `protobuf:"varint,8,opt,name=can_download_talosconfig,json=canDownloadTalosconfig,proto3" json:"can_download_talosconfig,omitempty"`
+ CanReadConfigPatches bool `protobuf:"varint,9,opt,name=can_read_config_patches,json=canReadConfigPatches,proto3" json:"can_read_config_patches,omitempty"`
+ CanManageConfigPatches bool `protobuf:"varint,10,opt,name=can_manage_config_patches,json=canManageConfigPatches,proto3" json:"can_manage_config_patches,omitempty"`
+ CanManageClusterFeatures bool `protobuf:"varint,11,opt,name=can_manage_cluster_features,json=canManageClusterFeatures,proto3" json:"can_manage_cluster_features,omitempty"`
+}
+
+func (x *ClusterPermissionsSpec) Reset() {
+ *x = ClusterPermissionsSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_omni_specs_virtual_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterPermissionsSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterPermissionsSpec) ProtoMessage() {}
+
+func (x *ClusterPermissionsSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_omni_specs_virtual_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterPermissionsSpec.ProtoReflect.Descriptor instead.
+func (*ClusterPermissionsSpec) Descriptor() ([]byte, []int) {
+ return file_omni_specs_virtual_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *ClusterPermissionsSpec) GetCanAddMachines() bool {
+ if x != nil {
+ return x.CanAddMachines
+ }
+ return false
+}
+
+func (x *ClusterPermissionsSpec) GetCanRemoveMachines() bool {
+ if x != nil {
+ return x.CanRemoveMachines
+ }
+ return false
+}
+
+func (x *ClusterPermissionsSpec) GetCanRebootMachines() bool {
+ if x != nil {
+ return x.CanRebootMachines
+ }
+ return false
+}
+
+func (x *ClusterPermissionsSpec) GetCanUpdateKubernetes() bool {
+ if x != nil {
+ return x.CanUpdateKubernetes
+ }
+ return false
+}
+
+func (x *ClusterPermissionsSpec) GetCanDownloadKubeconfig() bool {
+ if x != nil {
+ return x.CanDownloadKubeconfig
+ }
+ return false
+}
+
+func (x *ClusterPermissionsSpec) GetCanSyncKubernetesManifests() bool {
+ if x != nil {
+ return x.CanSyncKubernetesManifests
+ }
+ return false
+}
+
+func (x *ClusterPermissionsSpec) GetCanUpdateTalos() bool {
+ if x != nil {
+ return x.CanUpdateTalos
+ }
+ return false
+}
+
+func (x *ClusterPermissionsSpec) GetCanDownloadTalosconfig() bool {
+ if x != nil {
+ return x.CanDownloadTalosconfig
+ }
+ return false
+}
+
+func (x *ClusterPermissionsSpec) GetCanReadConfigPatches() bool {
+ if x != nil {
+ return x.CanReadConfigPatches
+ }
+ return false
+}
+
+func (x *ClusterPermissionsSpec) GetCanManageConfigPatches() bool {
+ if x != nil {
+ return x.CanManageConfigPatches
+ }
+ return false
+}
+
+func (x *ClusterPermissionsSpec) GetCanManageClusterFeatures() bool {
+ if x != nil {
+ return x.CanManageClusterFeatures
+ }
+ return false
+}
+
+var File_omni_specs_virtual_proto protoreflect.FileDescriptor
+
+var file_omni_specs_virtual_proto_rawDesc = []byte{
+ 0x0a, 0x18, 0x6f, 0x6d, 0x6e, 0x69, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2f, 0x76, 0x69, 0x72,
+ 0x74, 0x75, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x73, 0x70, 0x65, 0x63,
+ 0x73, 0x22, 0x47, 0x0a, 0x0f, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72,
+ 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+ 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x72, 0x6f, 0x6c, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0xed, 0x03, 0x0a, 0x0f, 0x50,
+ 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2a,
+ 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x52, 0x65,
+ 0x61, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x61,
+ 0x6e, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x61, 0x6e, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61,
+ 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, 0x61, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x55,
+ 0x73, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64,
+ 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x0f, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73,
+ 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x6d,
+ 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63,
+ 0x61, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73,
+ 0x12, 0x31, 0x0a, 0x15, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x63,
+ 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x12, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4c,
+ 0x6f, 0x67, 0x73, 0x12, 0x44, 0x0a, 0x1f, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f,
+ 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70,
+ 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x63, 0x61,
+ 0x6e, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x50, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x21, 0x63, 0x61, 0x6e,
+ 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f,
+ 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x0a,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x63, 0x61, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x4d,
+ 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x63,
+ 0x68, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x61, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67,
+ 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x0b,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x63, 0x61, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x42,
+ 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x22, 0xe6, 0x04, 0x0a, 0x16, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
+ 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x6e, 0x5f, 0x61, 0x64, 0x64,
+ 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x0e, 0x63, 0x61, 0x6e, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12,
+ 0x2e, 0x0a, 0x13, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x6d, 0x61,
+ 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x61,
+ 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12,
+ 0x2e, 0x0a, 0x13, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x6d, 0x61,
+ 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x61,
+ 0x6e, 0x52, 0x65, 0x62, 0x6f, 0x6f, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12,
+ 0x32, 0x0a, 0x15, 0x63, 0x61, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x75,
+ 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13,
+ 0x63, 0x61, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65,
+ 0x74, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x61, 0x6e, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c,
+ 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x75, 0x62, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x63, 0x61, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61,
+ 0x64, 0x4b, 0x75, 0x62, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x1d, 0x63,
+ 0x61, 0x6e, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74,
+ 0x65, 0x73, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x1a, 0x63, 0x61, 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x75, 0x62, 0x65, 0x72,
+ 0x6e, 0x65, 0x74, 0x65, 0x73, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x73, 0x12, 0x28,
+ 0x0a, 0x10, 0x63, 0x61, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x6c,
+ 0x6f, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x54, 0x61, 0x6c, 0x6f, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x63, 0x61, 0x6e, 0x5f,
+ 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x63, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x63, 0x61, 0x6e, 0x44,
+ 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x6c, 0x6f, 0x73, 0x63, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x09, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x14, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x50, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x63, 0x61, 0x6e,
+ 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70,
+ 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x63, 0x61,
+ 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74,
+ 0x63, 0x68, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x63, 0x61, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61,
+ 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75,
+ 0x72, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x63, 0x61, 0x6e, 0x4d, 0x61,
+ 0x6e, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75,
+ 0x72, 0x65, 0x73, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
+ 0x6d, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6f, 0x6d, 0x6e,
+ 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x6d, 0x6e,
+ 0x69, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_omni_specs_virtual_proto_rawDescOnce sync.Once
+ file_omni_specs_virtual_proto_rawDescData = file_omni_specs_virtual_proto_rawDesc
+)
+
+func file_omni_specs_virtual_proto_rawDescGZIP() []byte {
+ file_omni_specs_virtual_proto_rawDescOnce.Do(func() {
+ file_omni_specs_virtual_proto_rawDescData = protoimpl.X.CompressGZIP(file_omni_specs_virtual_proto_rawDescData)
+ })
+ return file_omni_specs_virtual_proto_rawDescData
+}
+
+var file_omni_specs_virtual_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_omni_specs_virtual_proto_goTypes = []interface{}{
+ (*CurrentUserSpec)(nil), // 0: specs.CurrentUserSpec
+ (*PermissionsSpec)(nil), // 1: specs.PermissionsSpec
+ (*ClusterPermissionsSpec)(nil), // 2: specs.ClusterPermissionsSpec
+}
+var file_omni_specs_virtual_proto_depIdxs = []int32{
+ 0, // [0:0] is the sub-list for method output_type
+ 0, // [0:0] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_omni_specs_virtual_proto_init() }
+func file_omni_specs_virtual_proto_init() {
+ if File_omni_specs_virtual_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_omni_specs_virtual_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CurrentUserSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_virtual_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PermissionsSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_omni_specs_virtual_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterPermissionsSpec); 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{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_omni_specs_virtual_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 3,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_omni_specs_virtual_proto_goTypes,
+ DependencyIndexes: file_omni_specs_virtual_proto_depIdxs,
+ MessageInfos: file_omni_specs_virtual_proto_msgTypes,
+ }.Build()
+ File_omni_specs_virtual_proto = out.File
+ file_omni_specs_virtual_proto_rawDesc = nil
+ file_omni_specs_virtual_proto_goTypes = nil
+ file_omni_specs_virtual_proto_depIdxs = nil
+}
diff --git a/client/api/omni/specs/virtual.proto b/client/api/omni/specs/virtual.proto
new file mode 100644
index 000000000..5fdaa9084
--- /dev/null
+++ b/client/api/omni/specs/virtual.proto
@@ -0,0 +1,36 @@
+syntax = "proto3";
+package specs;
+
+option go_package = "github.com/siderolabs/omni/client/api/omni/specs";
+
+message CurrentUserSpec {
+ string identity = 1;
+ reserved 2;
+ string role = 3;
+}
+
+message PermissionsSpec {
+ bool can_read_clusters = 1;
+ bool can_create_clusters = 2;
+ bool can_manage_users = 3;
+ bool can_read_machines = 4;
+ bool can_remove_machines = 5;
+ bool can_read_machine_logs = 6;
+ bool can_read_machine_config_patches = 9;
+ bool can_manage_machine_config_patches = 10;
+ bool can_manage_backup_store = 11;
+}
+
+message ClusterPermissionsSpec {
+ bool can_add_machines = 1;
+ bool can_remove_machines = 2;
+ bool can_reboot_machines = 3;
+ bool can_update_kubernetes = 4;
+ bool can_download_kubeconfig = 5;
+ bool can_sync_kubernetes_manifests = 6;
+ bool can_update_talos = 7;
+ bool can_download_talosconfig = 8;
+ bool can_read_config_patches = 9;
+ bool can_manage_config_patches = 10;
+ bool can_manage_cluster_features = 11;
+}
diff --git a/client/api/omni/specs/virtual_vtproto.pb.go b/client/api/omni/specs/virtual_vtproto.pb.go
new file mode 100644
index 000000000..9e404056c
--- /dev/null
+++ b/client/api/omni/specs/virtual_vtproto.pb.go
@@ -0,0 +1,1234 @@
+// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.
+// protoc-gen-go-vtproto version: v0.6.0
+// source: omni/specs/virtual.proto
+
+package specs
+
+import (
+ fmt "fmt"
+ io "io"
+
+ protohelpers "github.com/planetscale/vtprotobuf/protohelpers"
+ proto "google.golang.org/protobuf/proto"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+func (m *CurrentUserSpec) CloneVT() *CurrentUserSpec {
+ if m == nil {
+ return (*CurrentUserSpec)(nil)
+ }
+ r := new(CurrentUserSpec)
+ r.Identity = m.Identity
+ r.Role = m.Role
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *CurrentUserSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *PermissionsSpec) CloneVT() *PermissionsSpec {
+ if m == nil {
+ return (*PermissionsSpec)(nil)
+ }
+ r := new(PermissionsSpec)
+ r.CanReadClusters = m.CanReadClusters
+ r.CanCreateClusters = m.CanCreateClusters
+ r.CanManageUsers = m.CanManageUsers
+ r.CanReadMachines = m.CanReadMachines
+ r.CanRemoveMachines = m.CanRemoveMachines
+ r.CanReadMachineLogs = m.CanReadMachineLogs
+ r.CanReadMachineConfigPatches = m.CanReadMachineConfigPatches
+ r.CanManageMachineConfigPatches = m.CanManageMachineConfigPatches
+ r.CanManageBackupStore = m.CanManageBackupStore
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *PermissionsSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (m *ClusterPermissionsSpec) CloneVT() *ClusterPermissionsSpec {
+ if m == nil {
+ return (*ClusterPermissionsSpec)(nil)
+ }
+ r := new(ClusterPermissionsSpec)
+ r.CanAddMachines = m.CanAddMachines
+ r.CanRemoveMachines = m.CanRemoveMachines
+ r.CanRebootMachines = m.CanRebootMachines
+ r.CanUpdateKubernetes = m.CanUpdateKubernetes
+ r.CanDownloadKubeconfig = m.CanDownloadKubeconfig
+ r.CanSyncKubernetesManifests = m.CanSyncKubernetesManifests
+ r.CanUpdateTalos = m.CanUpdateTalos
+ r.CanDownloadTalosconfig = m.CanDownloadTalosconfig
+ r.CanReadConfigPatches = m.CanReadConfigPatches
+ r.CanManageConfigPatches = m.CanManageConfigPatches
+ r.CanManageClusterFeatures = m.CanManageClusterFeatures
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *ClusterPermissionsSpec) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
+func (this *CurrentUserSpec) EqualVT(that *CurrentUserSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.Identity != that.Identity {
+ return false
+ }
+ if this.Role != that.Role {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *CurrentUserSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*CurrentUserSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *PermissionsSpec) EqualVT(that *PermissionsSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.CanReadClusters != that.CanReadClusters {
+ return false
+ }
+ if this.CanCreateClusters != that.CanCreateClusters {
+ return false
+ }
+ if this.CanManageUsers != that.CanManageUsers {
+ return false
+ }
+ if this.CanReadMachines != that.CanReadMachines {
+ return false
+ }
+ if this.CanRemoveMachines != that.CanRemoveMachines {
+ return false
+ }
+ if this.CanReadMachineLogs != that.CanReadMachineLogs {
+ return false
+ }
+ if this.CanReadMachineConfigPatches != that.CanReadMachineConfigPatches {
+ return false
+ }
+ if this.CanManageMachineConfigPatches != that.CanManageMachineConfigPatches {
+ return false
+ }
+ if this.CanManageBackupStore != that.CanManageBackupStore {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *PermissionsSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*PermissionsSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (this *ClusterPermissionsSpec) EqualVT(that *ClusterPermissionsSpec) bool {
+ if this == that {
+ return true
+ } else if this == nil || that == nil {
+ return false
+ }
+ if this.CanAddMachines != that.CanAddMachines {
+ return false
+ }
+ if this.CanRemoveMachines != that.CanRemoveMachines {
+ return false
+ }
+ if this.CanRebootMachines != that.CanRebootMachines {
+ return false
+ }
+ if this.CanUpdateKubernetes != that.CanUpdateKubernetes {
+ return false
+ }
+ if this.CanDownloadKubeconfig != that.CanDownloadKubeconfig {
+ return false
+ }
+ if this.CanSyncKubernetesManifests != that.CanSyncKubernetesManifests {
+ return false
+ }
+ if this.CanUpdateTalos != that.CanUpdateTalos {
+ return false
+ }
+ if this.CanDownloadTalosconfig != that.CanDownloadTalosconfig {
+ return false
+ }
+ if this.CanReadConfigPatches != that.CanReadConfigPatches {
+ return false
+ }
+ if this.CanManageConfigPatches != that.CanManageConfigPatches {
+ return false
+ }
+ if this.CanManageClusterFeatures != that.CanManageClusterFeatures {
+ return false
+ }
+ return string(this.unknownFields) == string(that.unknownFields)
+}
+
+func (this *ClusterPermissionsSpec) EqualMessageVT(thatMsg proto.Message) bool {
+ that, ok := thatMsg.(*ClusterPermissionsSpec)
+ if !ok {
+ return false
+ }
+ return this.EqualVT(that)
+}
+func (m *CurrentUserSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CurrentUserSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *CurrentUserSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Role) > 0 {
+ i -= len(m.Role)
+ copy(dAtA[i:], m.Role)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Role)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Identity) > 0 {
+ i -= len(m.Identity)
+ copy(dAtA[i:], m.Identity)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Identity)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *PermissionsSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PermissionsSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *PermissionsSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.CanManageBackupStore {
+ i--
+ if m.CanManageBackupStore {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x58
+ }
+ if m.CanManageMachineConfigPatches {
+ i--
+ if m.CanManageMachineConfigPatches {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x50
+ }
+ if m.CanReadMachineConfigPatches {
+ i--
+ if m.CanReadMachineConfigPatches {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x48
+ }
+ if m.CanReadMachineLogs {
+ i--
+ if m.CanReadMachineLogs {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x30
+ }
+ if m.CanRemoveMachines {
+ i--
+ if m.CanRemoveMachines {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.CanReadMachines {
+ i--
+ if m.CanReadMachines {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.CanManageUsers {
+ i--
+ if m.CanManageUsers {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.CanCreateClusters {
+ i--
+ if m.CanCreateClusters {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.CanReadClusters {
+ i--
+ if m.CanReadClusters {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterPermissionsSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterPermissionsSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *ClusterPermissionsSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.CanManageClusterFeatures {
+ i--
+ if m.CanManageClusterFeatures {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x58
+ }
+ if m.CanManageConfigPatches {
+ i--
+ if m.CanManageConfigPatches {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x50
+ }
+ if m.CanReadConfigPatches {
+ i--
+ if m.CanReadConfigPatches {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x48
+ }
+ if m.CanDownloadTalosconfig {
+ i--
+ if m.CanDownloadTalosconfig {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x40
+ }
+ if m.CanUpdateTalos {
+ i--
+ if m.CanUpdateTalos {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x38
+ }
+ if m.CanSyncKubernetesManifests {
+ i--
+ if m.CanSyncKubernetesManifests {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x30
+ }
+ if m.CanDownloadKubeconfig {
+ i--
+ if m.CanDownloadKubeconfig {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.CanUpdateKubernetes {
+ i--
+ if m.CanUpdateKubernetes {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.CanRebootMachines {
+ i--
+ if m.CanRebootMachines {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.CanRemoveMachines {
+ i--
+ if m.CanRemoveMachines {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.CanAddMachines {
+ i--
+ if m.CanAddMachines {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CurrentUserSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Identity)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.Role)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *PermissionsSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.CanReadClusters {
+ n += 2
+ }
+ if m.CanCreateClusters {
+ n += 2
+ }
+ if m.CanManageUsers {
+ n += 2
+ }
+ if m.CanReadMachines {
+ n += 2
+ }
+ if m.CanRemoveMachines {
+ n += 2
+ }
+ if m.CanReadMachineLogs {
+ n += 2
+ }
+ if m.CanReadMachineConfigPatches {
+ n += 2
+ }
+ if m.CanManageMachineConfigPatches {
+ n += 2
+ }
+ if m.CanManageBackupStore {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *ClusterPermissionsSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.CanAddMachines {
+ n += 2
+ }
+ if m.CanRemoveMachines {
+ n += 2
+ }
+ if m.CanRebootMachines {
+ n += 2
+ }
+ if m.CanUpdateKubernetes {
+ n += 2
+ }
+ if m.CanDownloadKubeconfig {
+ n += 2
+ }
+ if m.CanSyncKubernetesManifests {
+ n += 2
+ }
+ if m.CanUpdateTalos {
+ n += 2
+ }
+ if m.CanDownloadTalosconfig {
+ n += 2
+ }
+ if m.CanReadConfigPatches {
+ n += 2
+ }
+ if m.CanManageConfigPatches {
+ n += 2
+ }
+ if m.CanManageClusterFeatures {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *CurrentUserSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CurrentUserSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CurrentUserSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Identity", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Identity = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Role = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PermissionsSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PermissionsSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PermissionsSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanReadClusters", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanReadClusters = bool(v != 0)
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanCreateClusters", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanCreateClusters = bool(v != 0)
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanManageUsers", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanManageUsers = bool(v != 0)
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanReadMachines", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanReadMachines = bool(v != 0)
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanRemoveMachines", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanRemoveMachines = bool(v != 0)
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanReadMachineLogs", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanReadMachineLogs = bool(v != 0)
+ case 9:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanReadMachineConfigPatches", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanReadMachineConfigPatches = bool(v != 0)
+ case 10:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanManageMachineConfigPatches", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanManageMachineConfigPatches = bool(v != 0)
+ case 11:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanManageBackupStore", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanManageBackupStore = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterPermissionsSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterPermissionsSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterPermissionsSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanAddMachines", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanAddMachines = bool(v != 0)
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanRemoveMachines", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanRemoveMachines = bool(v != 0)
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanRebootMachines", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanRebootMachines = bool(v != 0)
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateKubernetes", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanUpdateKubernetes = bool(v != 0)
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanDownloadKubeconfig", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanDownloadKubeconfig = bool(v != 0)
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanSyncKubernetesManifests", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanSyncKubernetesManifests = bool(v != 0)
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateTalos", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanUpdateTalos = bool(v != 0)
+ case 8:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanDownloadTalosconfig", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanDownloadTalosconfig = bool(v != 0)
+ case 9:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanReadConfigPatches", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanReadConfigPatches = bool(v != 0)
+ case 10:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanManageConfigPatches", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanManageConfigPatches = bool(v != 0)
+ case 11:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CanManageClusterFeatures", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CanManageClusterFeatures = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
diff --git a/client/api/talos/machine/machine.pb.gw.go b/client/api/talos/machine/machine.pb.gw.go
new file mode 100644
index 000000000..b901f5124
--- /dev/null
+++ b/client/api/talos/machine/machine.pb.gw.go
@@ -0,0 +1,3016 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: talos/machine/machine.proto
+
+/*
+Package machine is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package machine
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ extCommon "github.com/siderolabs/talos/pkg/machinery/api/common"
+ extMachine "github.com/siderolabs/talos/pkg/machinery/api/machine"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+ extEmptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_MachineService_ApplyConfiguration_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ApplyConfigurationRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.ApplyConfiguration(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_ApplyConfiguration_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ApplyConfigurationRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.ApplyConfiguration(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Bootstrap_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.BootstrapRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Bootstrap(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_Bootstrap_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.BootstrapRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Bootstrap(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Containers_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ContainersRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Containers(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_Containers_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ContainersRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Containers(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Copy_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (extMachine.MachineService_CopyClient, runtime.ServerMetadata, error) {
+ var protoReq extMachine.CopyRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ stream, err := client.Copy(ctx, &protoReq)
+ if err != nil {
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+ return stream, metadata, nil
+
+}
+
+func request_MachineService_CPUInfo_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.CPUInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_CPUInfo_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.CPUInfo(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_DiskStats_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.DiskStats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_DiskStats_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.DiskStats(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Dmesg_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (extMachine.MachineService_DmesgClient, runtime.ServerMetadata, error) {
+ var protoReq extMachine.DmesgRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ stream, err := client.Dmesg(ctx, &protoReq)
+ if err != nil {
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+ return stream, metadata, nil
+
+}
+
+func request_MachineService_Events_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (extMachine.MachineService_EventsClient, runtime.ServerMetadata, error) {
+ var protoReq extMachine.EventsRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ stream, err := client.Events(ctx, &protoReq)
+ if err != nil {
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+ return stream, metadata, nil
+
+}
+
+func request_MachineService_EtcdMemberList_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.EtcdMemberListRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.EtcdMemberList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_EtcdMemberList_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.EtcdMemberListRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.EtcdMemberList(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_EtcdRemoveMember_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.EtcdRemoveMemberRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.EtcdRemoveMember(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_EtcdRemoveMember_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.EtcdRemoveMemberRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.EtcdRemoveMember(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_EtcdLeaveCluster_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.EtcdLeaveClusterRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.EtcdLeaveCluster(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_EtcdLeaveCluster_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.EtcdLeaveClusterRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.EtcdLeaveCluster(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_EtcdForfeitLeadership_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.EtcdForfeitLeadershipRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.EtcdForfeitLeadership(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_EtcdForfeitLeadership_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.EtcdForfeitLeadershipRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.EtcdForfeitLeadership(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_EtcdRecover_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var metadata runtime.ServerMetadata
+ stream, err := client.EtcdRecover(ctx)
+ if err != nil {
+ grpclog.Infof("Failed to start streaming: %v", err)
+ return nil, metadata, err
+ }
+ dec := marshaler.NewDecoder(req.Body)
+ for {
+ var protoReq extCommon.Data
+ err = dec.Decode(&protoReq)
+ if err == io.EOF {
+ break
+ }
+ if err != nil {
+ grpclog.Infof("Failed to decode request: %v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err = stream.Send(&protoReq); err != nil {
+ if err == io.EOF {
+ break
+ }
+ grpclog.Infof("Failed to send request: %v", err)
+ return nil, metadata, err
+ }
+ }
+
+ if err := stream.CloseSend(); err != nil {
+ grpclog.Infof("Failed to terminate client stream: %v", err)
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ grpclog.Infof("Failed to get header from client: %v", err)
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+
+ msg, err := stream.CloseAndRecv()
+ metadata.TrailerMD = stream.Trailer()
+ return msg, metadata, err
+
+}
+
+func request_MachineService_EtcdSnapshot_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (extMachine.MachineService_EtcdSnapshotClient, runtime.ServerMetadata, error) {
+ var protoReq extMachine.EtcdSnapshotRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ stream, err := client.EtcdSnapshot(ctx, &protoReq)
+ if err != nil {
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+ return stream, metadata, nil
+
+}
+
+func request_MachineService_GenerateConfiguration_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.GenerateConfigurationRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.GenerateConfiguration(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_GenerateConfiguration_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.GenerateConfigurationRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.GenerateConfiguration(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Hostname_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Hostname(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_Hostname_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Hostname(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Kubeconfig_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (extMachine.MachineService_KubeconfigClient, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ stream, err := client.Kubeconfig(ctx, &protoReq)
+ if err != nil {
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+ return stream, metadata, nil
+
+}
+
+func request_MachineService_List_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (extMachine.MachineService_ListClient, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ListRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ stream, err := client.List(ctx, &protoReq)
+ if err != nil {
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+ return stream, metadata, nil
+
+}
+
+func request_MachineService_DiskUsage_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (extMachine.MachineService_DiskUsageClient, runtime.ServerMetadata, error) {
+ var protoReq extMachine.DiskUsageRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ stream, err := client.DiskUsage(ctx, &protoReq)
+ if err != nil {
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+ return stream, metadata, nil
+
+}
+
+func request_MachineService_LoadAvg_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.LoadAvg(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_LoadAvg_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.LoadAvg(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Logs_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (extMachine.MachineService_LogsClient, runtime.ServerMetadata, error) {
+ var protoReq extMachine.LogsRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ stream, err := client.Logs(ctx, &protoReq)
+ if err != nil {
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+ return stream, metadata, nil
+
+}
+
+func request_MachineService_Memory_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Memory(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_Memory_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Memory(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Mounts_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Mounts(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_Mounts_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Mounts(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_NetworkDeviceStats_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.NetworkDeviceStats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_NetworkDeviceStats_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.NetworkDeviceStats(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Processes_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Processes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_Processes_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Processes(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Read_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (extMachine.MachineService_ReadClient, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ReadRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ stream, err := client.Read(ctx, &protoReq)
+ if err != nil {
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+ return stream, metadata, nil
+
+}
+
+func request_MachineService_Reboot_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.RebootRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Reboot(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_Reboot_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.RebootRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Reboot(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Restart_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.RestartRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Restart(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_Restart_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.RestartRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Restart(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Rollback_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.RollbackRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Rollback(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_Rollback_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.RollbackRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Rollback(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Reset_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ResetRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Reset(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_Reset_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ResetRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Reset(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_ServiceList_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.ServiceList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_ServiceList_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.ServiceList(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_ServiceRestart_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ServiceRestartRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.ServiceRestart(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_ServiceRestart_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ServiceRestartRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.ServiceRestart(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_ServiceStart_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ServiceStartRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.ServiceStart(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_ServiceStart_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ServiceStartRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.ServiceStart(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_ServiceStop_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ServiceStopRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.ServiceStop(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_ServiceStop_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ServiceStopRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.ServiceStop(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Shutdown_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ShutdownRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Shutdown(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_Shutdown_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.ShutdownRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Shutdown(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Stats_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.StatsRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Stats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_Stats_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.StatsRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Stats(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_SystemStat_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.SystemStat(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_SystemStat_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.SystemStat(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Upgrade_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.UpgradeRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Upgrade(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_Upgrade_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.UpgradeRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Upgrade(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_Version_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Version(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_Version_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extEmptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Version(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_GenerateClientConfiguration_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.GenerateClientConfigurationRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.GenerateClientConfiguration(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_MachineService_GenerateClientConfiguration_0(ctx context.Context, marshaler runtime.Marshaler, server extMachine.MachineServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq extMachine.GenerateClientConfigurationRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.GenerateClientConfiguration(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_MachineService_PacketCapture_0(ctx context.Context, marshaler runtime.Marshaler, client extMachine.MachineServiceClient, req *http.Request, pathParams map[string]string) (extMachine.MachineService_PacketCaptureClient, runtime.ServerMetadata, error) {
+ var protoReq extMachine.PacketCaptureRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ stream, err := client.PacketCapture(ctx, &protoReq)
+ if err != nil {
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+ return stream, metadata, nil
+
+}
+
+// RegisterMachineServiceHandlerServer registers the http handlers for service MachineService to "mux".
+// UnaryRPC :call MachineServiceServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterMachineServiceHandlerFromEndpoint instead.
+func RegisterMachineServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server extMachine.MachineServiceServer) error {
+
+ mux.Handle("POST", pattern_MachineService_ApplyConfiguration_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/ApplyConfiguration", runtime.WithHTTPPathPattern("/machine.MachineService/ApplyConfiguration"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_ApplyConfiguration_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_ApplyConfiguration_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Bootstrap_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/Bootstrap", runtime.WithHTTPPathPattern("/machine.MachineService/Bootstrap"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_Bootstrap_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Bootstrap_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Containers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/Containers", runtime.WithHTTPPathPattern("/machine.MachineService/Containers"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_Containers_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Containers_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Copy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport")
+ _, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ })
+
+ mux.Handle("POST", pattern_MachineService_CPUInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/CPUInfo", runtime.WithHTTPPathPattern("/machine.MachineService/CPUInfo"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_CPUInfo_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_CPUInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_DiskStats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/DiskStats", runtime.WithHTTPPathPattern("/machine.MachineService/DiskStats"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_DiskStats_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_DiskStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Dmesg_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport")
+ _, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ })
+
+ mux.Handle("POST", pattern_MachineService_Events_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport")
+ _, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ })
+
+ mux.Handle("POST", pattern_MachineService_EtcdMemberList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/EtcdMemberList", runtime.WithHTTPPathPattern("/machine.MachineService/EtcdMemberList"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_EtcdMemberList_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_EtcdMemberList_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_EtcdRemoveMember_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/EtcdRemoveMember", runtime.WithHTTPPathPattern("/machine.MachineService/EtcdRemoveMember"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_EtcdRemoveMember_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_EtcdRemoveMember_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_EtcdLeaveCluster_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/EtcdLeaveCluster", runtime.WithHTTPPathPattern("/machine.MachineService/EtcdLeaveCluster"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_EtcdLeaveCluster_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_EtcdLeaveCluster_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_EtcdForfeitLeadership_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/EtcdForfeitLeadership", runtime.WithHTTPPathPattern("/machine.MachineService/EtcdForfeitLeadership"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_EtcdForfeitLeadership_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_EtcdForfeitLeadership_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_EtcdRecover_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport")
+ _, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ })
+
+ mux.Handle("POST", pattern_MachineService_EtcdSnapshot_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport")
+ _, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ })
+
+ mux.Handle("POST", pattern_MachineService_GenerateConfiguration_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/GenerateConfiguration", runtime.WithHTTPPathPattern("/machine.MachineService/GenerateConfiguration"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_GenerateConfiguration_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_GenerateConfiguration_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Hostname_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/Hostname", runtime.WithHTTPPathPattern("/machine.MachineService/Hostname"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_Hostname_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Hostname_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Kubeconfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport")
+ _, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ })
+
+ mux.Handle("POST", pattern_MachineService_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport")
+ _, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ })
+
+ mux.Handle("POST", pattern_MachineService_DiskUsage_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport")
+ _, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ })
+
+ mux.Handle("POST", pattern_MachineService_LoadAvg_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/LoadAvg", runtime.WithHTTPPathPattern("/machine.MachineService/LoadAvg"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_LoadAvg_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_LoadAvg_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Logs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport")
+ _, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ })
+
+ mux.Handle("POST", pattern_MachineService_Memory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/Memory", runtime.WithHTTPPathPattern("/machine.MachineService/Memory"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_Memory_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Memory_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Mounts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/Mounts", runtime.WithHTTPPathPattern("/machine.MachineService/Mounts"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_Mounts_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Mounts_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_NetworkDeviceStats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/NetworkDeviceStats", runtime.WithHTTPPathPattern("/machine.MachineService/NetworkDeviceStats"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_NetworkDeviceStats_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_NetworkDeviceStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Processes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/Processes", runtime.WithHTTPPathPattern("/machine.MachineService/Processes"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_Processes_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Processes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Read_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport")
+ _, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ })
+
+ mux.Handle("POST", pattern_MachineService_Reboot_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/Reboot", runtime.WithHTTPPathPattern("/machine.MachineService/Reboot"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_Reboot_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Reboot_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Restart_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/Restart", runtime.WithHTTPPathPattern("/machine.MachineService/Restart"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_Restart_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Restart_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Rollback_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/Rollback", runtime.WithHTTPPathPattern("/machine.MachineService/Rollback"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_Rollback_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Rollback_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Reset_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/Reset", runtime.WithHTTPPathPattern("/machine.MachineService/Reset"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_Reset_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Reset_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_ServiceList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/ServiceList", runtime.WithHTTPPathPattern("/machine.MachineService/ServiceList"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_ServiceList_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_ServiceList_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_ServiceRestart_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/ServiceRestart", runtime.WithHTTPPathPattern("/machine.MachineService/ServiceRestart"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_ServiceRestart_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_ServiceRestart_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_ServiceStart_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/ServiceStart", runtime.WithHTTPPathPattern("/machine.MachineService/ServiceStart"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_ServiceStart_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_ServiceStart_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_ServiceStop_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/ServiceStop", runtime.WithHTTPPathPattern("/machine.MachineService/ServiceStop"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_ServiceStop_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_ServiceStop_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Shutdown_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/Shutdown", runtime.WithHTTPPathPattern("/machine.MachineService/Shutdown"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_Shutdown_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Shutdown_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Stats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/Stats", runtime.WithHTTPPathPattern("/machine.MachineService/Stats"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_Stats_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Stats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_SystemStat_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/SystemStat", runtime.WithHTTPPathPattern("/machine.MachineService/SystemStat"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_SystemStat_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_SystemStat_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Upgrade_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/Upgrade", runtime.WithHTTPPathPattern("/machine.MachineService/Upgrade"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_Upgrade_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Upgrade_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Version_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/Version", runtime.WithHTTPPathPattern("/machine.MachineService/Version"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_Version_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Version_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_GenerateClientConfiguration_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/machine.MachineService/GenerateClientConfiguration", runtime.WithHTTPPathPattern("/machine.MachineService/GenerateClientConfiguration"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_MachineService_GenerateClientConfiguration_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_GenerateClientConfiguration_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_PacketCapture_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport")
+ _, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ })
+
+ return nil
+}
+
+// RegisterMachineServiceHandlerFromEndpoint is same as RegisterMachineServiceHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterMachineServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.DialContext(ctx, endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterMachineServiceHandler(ctx, mux, conn)
+}
+
+// RegisterMachineServiceHandler registers the http handlers for service MachineService to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterMachineServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterMachineServiceHandlerClient(ctx, mux, extMachine.NewMachineServiceClient(conn))
+}
+
+// RegisterMachineServiceHandlerClient registers the http handlers for service MachineService
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "extMachine.MachineServiceClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "extMachine.MachineServiceClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "extMachine.MachineServiceClient" to call the correct interceptors.
+func RegisterMachineServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client extMachine.MachineServiceClient) error {
+
+ mux.Handle("POST", pattern_MachineService_ApplyConfiguration_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/ApplyConfiguration", runtime.WithHTTPPathPattern("/machine.MachineService/ApplyConfiguration"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_ApplyConfiguration_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_ApplyConfiguration_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Bootstrap_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Bootstrap", runtime.WithHTTPPathPattern("/machine.MachineService/Bootstrap"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Bootstrap_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Bootstrap_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Containers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Containers", runtime.WithHTTPPathPattern("/machine.MachineService/Containers"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Containers_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Containers_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Copy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Copy", runtime.WithHTTPPathPattern("/machine.MachineService/Copy"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Copy_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Copy_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_CPUInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/CPUInfo", runtime.WithHTTPPathPattern("/machine.MachineService/CPUInfo"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_CPUInfo_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_CPUInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_DiskStats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/DiskStats", runtime.WithHTTPPathPattern("/machine.MachineService/DiskStats"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_DiskStats_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_DiskStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Dmesg_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Dmesg", runtime.WithHTTPPathPattern("/machine.MachineService/Dmesg"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Dmesg_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Dmesg_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Events_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Events", runtime.WithHTTPPathPattern("/machine.MachineService/Events"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Events_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Events_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_EtcdMemberList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/EtcdMemberList", runtime.WithHTTPPathPattern("/machine.MachineService/EtcdMemberList"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_EtcdMemberList_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_EtcdMemberList_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_EtcdRemoveMember_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/EtcdRemoveMember", runtime.WithHTTPPathPattern("/machine.MachineService/EtcdRemoveMember"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_EtcdRemoveMember_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_EtcdRemoveMember_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_EtcdLeaveCluster_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/EtcdLeaveCluster", runtime.WithHTTPPathPattern("/machine.MachineService/EtcdLeaveCluster"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_EtcdLeaveCluster_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_EtcdLeaveCluster_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_EtcdForfeitLeadership_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/EtcdForfeitLeadership", runtime.WithHTTPPathPattern("/machine.MachineService/EtcdForfeitLeadership"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_EtcdForfeitLeadership_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_EtcdForfeitLeadership_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_EtcdRecover_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/EtcdRecover", runtime.WithHTTPPathPattern("/machine.MachineService/EtcdRecover"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_EtcdRecover_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_EtcdRecover_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_EtcdSnapshot_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/EtcdSnapshot", runtime.WithHTTPPathPattern("/machine.MachineService/EtcdSnapshot"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_EtcdSnapshot_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_EtcdSnapshot_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_GenerateConfiguration_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/GenerateConfiguration", runtime.WithHTTPPathPattern("/machine.MachineService/GenerateConfiguration"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_GenerateConfiguration_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_GenerateConfiguration_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Hostname_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Hostname", runtime.WithHTTPPathPattern("/machine.MachineService/Hostname"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Hostname_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Hostname_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Kubeconfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Kubeconfig", runtime.WithHTTPPathPattern("/machine.MachineService/Kubeconfig"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Kubeconfig_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Kubeconfig_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/List", runtime.WithHTTPPathPattern("/machine.MachineService/List"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_List_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_List_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_DiskUsage_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/DiskUsage", runtime.WithHTTPPathPattern("/machine.MachineService/DiskUsage"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_DiskUsage_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_DiskUsage_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_LoadAvg_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/LoadAvg", runtime.WithHTTPPathPattern("/machine.MachineService/LoadAvg"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_LoadAvg_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_LoadAvg_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Logs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Logs", runtime.WithHTTPPathPattern("/machine.MachineService/Logs"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Logs_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Logs_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Memory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Memory", runtime.WithHTTPPathPattern("/machine.MachineService/Memory"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Memory_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Memory_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Mounts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Mounts", runtime.WithHTTPPathPattern("/machine.MachineService/Mounts"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Mounts_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Mounts_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_NetworkDeviceStats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/NetworkDeviceStats", runtime.WithHTTPPathPattern("/machine.MachineService/NetworkDeviceStats"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_NetworkDeviceStats_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_NetworkDeviceStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Processes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Processes", runtime.WithHTTPPathPattern("/machine.MachineService/Processes"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Processes_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Processes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Read_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Read", runtime.WithHTTPPathPattern("/machine.MachineService/Read"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Read_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Read_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Reboot_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Reboot", runtime.WithHTTPPathPattern("/machine.MachineService/Reboot"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Reboot_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Reboot_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Restart_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Restart", runtime.WithHTTPPathPattern("/machine.MachineService/Restart"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Restart_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Restart_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Rollback_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Rollback", runtime.WithHTTPPathPattern("/machine.MachineService/Rollback"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Rollback_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Rollback_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Reset_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Reset", runtime.WithHTTPPathPattern("/machine.MachineService/Reset"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Reset_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Reset_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_ServiceList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/ServiceList", runtime.WithHTTPPathPattern("/machine.MachineService/ServiceList"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_ServiceList_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_ServiceList_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_ServiceRestart_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/ServiceRestart", runtime.WithHTTPPathPattern("/machine.MachineService/ServiceRestart"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_ServiceRestart_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_ServiceRestart_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_ServiceStart_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/ServiceStart", runtime.WithHTTPPathPattern("/machine.MachineService/ServiceStart"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_ServiceStart_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_ServiceStart_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_ServiceStop_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/ServiceStop", runtime.WithHTTPPathPattern("/machine.MachineService/ServiceStop"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_ServiceStop_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_ServiceStop_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Shutdown_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Shutdown", runtime.WithHTTPPathPattern("/machine.MachineService/Shutdown"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Shutdown_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Shutdown_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Stats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Stats", runtime.WithHTTPPathPattern("/machine.MachineService/Stats"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Stats_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Stats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_SystemStat_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/SystemStat", runtime.WithHTTPPathPattern("/machine.MachineService/SystemStat"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_SystemStat_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_SystemStat_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Upgrade_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Upgrade", runtime.WithHTTPPathPattern("/machine.MachineService/Upgrade"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Upgrade_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Upgrade_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_Version_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/Version", runtime.WithHTTPPathPattern("/machine.MachineService/Version"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_Version_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_Version_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_GenerateClientConfiguration_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/GenerateClientConfiguration", runtime.WithHTTPPathPattern("/machine.MachineService/GenerateClientConfiguration"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_GenerateClientConfiguration_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_GenerateClientConfiguration_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_MachineService_PacketCapture_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/machine.MachineService/PacketCapture", runtime.WithHTTPPathPattern("/machine.MachineService/PacketCapture"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_MachineService_PacketCapture_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_MachineService_PacketCapture_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_MachineService_ApplyConfiguration_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "ApplyConfiguration"}, ""))
+
+ pattern_MachineService_Bootstrap_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Bootstrap"}, ""))
+
+ pattern_MachineService_Containers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Containers"}, ""))
+
+ pattern_MachineService_Copy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Copy"}, ""))
+
+ pattern_MachineService_CPUInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "CPUInfo"}, ""))
+
+ pattern_MachineService_DiskStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "DiskStats"}, ""))
+
+ pattern_MachineService_Dmesg_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Dmesg"}, ""))
+
+ pattern_MachineService_Events_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Events"}, ""))
+
+ pattern_MachineService_EtcdMemberList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "EtcdMemberList"}, ""))
+
+ pattern_MachineService_EtcdRemoveMember_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "EtcdRemoveMember"}, ""))
+
+ pattern_MachineService_EtcdLeaveCluster_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "EtcdLeaveCluster"}, ""))
+
+ pattern_MachineService_EtcdForfeitLeadership_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "EtcdForfeitLeadership"}, ""))
+
+ pattern_MachineService_EtcdRecover_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "EtcdRecover"}, ""))
+
+ pattern_MachineService_EtcdSnapshot_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "EtcdSnapshot"}, ""))
+
+ pattern_MachineService_GenerateConfiguration_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "GenerateConfiguration"}, ""))
+
+ pattern_MachineService_Hostname_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Hostname"}, ""))
+
+ pattern_MachineService_Kubeconfig_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Kubeconfig"}, ""))
+
+ pattern_MachineService_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "List"}, ""))
+
+ pattern_MachineService_DiskUsage_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "DiskUsage"}, ""))
+
+ pattern_MachineService_LoadAvg_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "LoadAvg"}, ""))
+
+ pattern_MachineService_Logs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Logs"}, ""))
+
+ pattern_MachineService_Memory_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Memory"}, ""))
+
+ pattern_MachineService_Mounts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Mounts"}, ""))
+
+ pattern_MachineService_NetworkDeviceStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "NetworkDeviceStats"}, ""))
+
+ pattern_MachineService_Processes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Processes"}, ""))
+
+ pattern_MachineService_Read_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Read"}, ""))
+
+ pattern_MachineService_Reboot_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Reboot"}, ""))
+
+ pattern_MachineService_Restart_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Restart"}, ""))
+
+ pattern_MachineService_Rollback_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Rollback"}, ""))
+
+ pattern_MachineService_Reset_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Reset"}, ""))
+
+ pattern_MachineService_ServiceList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "ServiceList"}, ""))
+
+ pattern_MachineService_ServiceRestart_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "ServiceRestart"}, ""))
+
+ pattern_MachineService_ServiceStart_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "ServiceStart"}, ""))
+
+ pattern_MachineService_ServiceStop_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "ServiceStop"}, ""))
+
+ pattern_MachineService_Shutdown_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Shutdown"}, ""))
+
+ pattern_MachineService_Stats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Stats"}, ""))
+
+ pattern_MachineService_SystemStat_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "SystemStat"}, ""))
+
+ pattern_MachineService_Upgrade_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Upgrade"}, ""))
+
+ pattern_MachineService_Version_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "Version"}, ""))
+
+ pattern_MachineService_GenerateClientConfiguration_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "GenerateClientConfiguration"}, ""))
+
+ pattern_MachineService_PacketCapture_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"machine.MachineService", "PacketCapture"}, ""))
+)
+
+var (
+ forward_MachineService_ApplyConfiguration_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Bootstrap_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Containers_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Copy_0 = runtime.ForwardResponseStream
+
+ forward_MachineService_CPUInfo_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_DiskStats_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Dmesg_0 = runtime.ForwardResponseStream
+
+ forward_MachineService_Events_0 = runtime.ForwardResponseStream
+
+ forward_MachineService_EtcdMemberList_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_EtcdRemoveMember_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_EtcdLeaveCluster_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_EtcdForfeitLeadership_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_EtcdRecover_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_EtcdSnapshot_0 = runtime.ForwardResponseStream
+
+ forward_MachineService_GenerateConfiguration_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Hostname_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Kubeconfig_0 = runtime.ForwardResponseStream
+
+ forward_MachineService_List_0 = runtime.ForwardResponseStream
+
+ forward_MachineService_DiskUsage_0 = runtime.ForwardResponseStream
+
+ forward_MachineService_LoadAvg_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Logs_0 = runtime.ForwardResponseStream
+
+ forward_MachineService_Memory_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Mounts_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_NetworkDeviceStats_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Processes_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Read_0 = runtime.ForwardResponseStream
+
+ forward_MachineService_Reboot_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Restart_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Rollback_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Reset_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_ServiceList_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_ServiceRestart_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_ServiceStart_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_ServiceStop_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Shutdown_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Stats_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_SystemStat_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Upgrade_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_Version_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_GenerateClientConfiguration_0 = runtime.ForwardResponseMessage
+
+ forward_MachineService_PacketCapture_0 = runtime.ForwardResponseStream
+)
diff --git a/client/api/talos/machine/machine.proto b/client/api/talos/machine/machine.proto
new file mode 100644
index 000000000..f2d6cdfff
--- /dev/null
+++ b/client/api/talos/machine/machine.proto
@@ -0,0 +1,1097 @@
+syntax = "proto3";
+
+package machine;
+
+option go_package = "github.com/siderolabs/talos/pkg/machinery/api/machine";
+
+import "common/common.proto";
+import "google/protobuf/any.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/timestamp.proto";
+
+// The machine service definition.
+service MachineService {
+ rpc ApplyConfiguration(ApplyConfigurationRequest) returns (ApplyConfigurationResponse);
+ // Bootstrap method makes control plane node enter etcd bootstrap mode.
+ //
+ // Node aborts etcd join sequence and creates single-node etcd cluster.
+ //
+ // If recover_etcd argument is specified, etcd is recovered from a snapshot
+ // uploaded with EtcdRecover.
+ rpc Bootstrap(BootstrapRequest) returns (BootstrapResponse);
+ rpc Containers(ContainersRequest) returns (ContainersResponse);
+ rpc Copy(CopyRequest) returns (stream common.Data);
+ rpc CPUInfo(google.protobuf.Empty) returns (CPUInfoResponse);
+ rpc DiskStats(google.protobuf.Empty) returns (DiskStatsResponse);
+ rpc Dmesg(DmesgRequest) returns (stream common.Data);
+ rpc Events(EventsRequest) returns (stream Event);
+ rpc EtcdMemberList(EtcdMemberListRequest) returns (EtcdMemberListResponse);
+ rpc EtcdRemoveMember(EtcdRemoveMemberRequest) returns (EtcdRemoveMemberResponse);
+ rpc EtcdLeaveCluster(EtcdLeaveClusterRequest) returns (EtcdLeaveClusterResponse);
+ rpc EtcdForfeitLeadership(EtcdForfeitLeadershipRequest) returns (EtcdForfeitLeadershipResponse);
+ // EtcdRecover method uploads etcd data snapshot created with EtcdSnapshot
+ // to the node.
+ //
+ // Snapshot can be later used to recover the cluster via Bootstrap method.
+ rpc EtcdRecover(stream common.Data) returns (EtcdRecoverResponse);
+ // EtcdSnapshot method creates etcd data snapshot (backup) from the local etcd instance
+ // and streams it back to the client.
+ //
+ // This method is available only on control plane nodes (which run etcd).
+ rpc EtcdSnapshot(EtcdSnapshotRequest) returns (stream common.Data);
+ rpc GenerateConfiguration(GenerateConfigurationRequest) returns (GenerateConfigurationResponse);
+ rpc Hostname(google.protobuf.Empty) returns (HostnameResponse);
+ rpc Kubeconfig(google.protobuf.Empty) returns (stream common.Data);
+ rpc List(ListRequest) returns (stream FileInfo);
+ rpc DiskUsage(DiskUsageRequest) returns (stream DiskUsageInfo);
+ rpc LoadAvg(google.protobuf.Empty) returns (LoadAvgResponse);
+ rpc Logs(LogsRequest) returns (stream common.Data);
+ rpc Memory(google.protobuf.Empty) returns (MemoryResponse);
+ rpc Mounts(google.protobuf.Empty) returns (MountsResponse);
+ rpc NetworkDeviceStats(google.protobuf.Empty) returns (NetworkDeviceStatsResponse);
+ rpc Processes(google.protobuf.Empty) returns (ProcessesResponse);
+ rpc Read(ReadRequest) returns (stream common.Data);
+ rpc Reboot(RebootRequest) returns (RebootResponse);
+ rpc Restart(RestartRequest) returns (RestartResponse);
+ rpc Rollback(RollbackRequest) returns (RollbackResponse);
+ rpc Reset(ResetRequest) returns (ResetResponse);
+ rpc ServiceList(google.protobuf.Empty) returns (ServiceListResponse);
+ rpc ServiceRestart(ServiceRestartRequest) returns (ServiceRestartResponse);
+ rpc ServiceStart(ServiceStartRequest) returns (ServiceStartResponse);
+ rpc ServiceStop(ServiceStopRequest) returns (ServiceStopResponse);
+ rpc Shutdown(ShutdownRequest) returns (ShutdownResponse);
+ rpc Stats(StatsRequest) returns (StatsResponse);
+ rpc SystemStat(google.protobuf.Empty) returns (SystemStatResponse);
+ rpc Upgrade(UpgradeRequest) returns (UpgradeResponse);
+ rpc Version(google.protobuf.Empty) returns (VersionResponse);
+ // GenerateClientConfiguration generates talosctl client configuration (talosconfig).
+ rpc GenerateClientConfiguration(GenerateClientConfigurationRequest) returns (GenerateClientConfigurationResponse);
+ // PacketCapture performs packet capture and streams back pcap file.
+ rpc PacketCapture(PacketCaptureRequest) returns (stream common.Data);
+}
+
+// rpc applyConfiguration
+// ApplyConfiguration describes a request to assert a new configuration upon a
+// node.
+message ApplyConfigurationRequest {
+ enum Mode {
+ REBOOT = 0;
+ AUTO = 1;
+ NO_REBOOT = 2;
+ STAGED = 3;
+ TRY = 4;
+ }
+ bytes data = 1;
+ // replaced by mode
+ bool on_reboot = 2 [
+ (common.remove_deprecated_field) = "v1.4",
+ deprecated = true
+ ];
+ // replaced by mode
+ bool immediate = 3 [
+ (common.remove_deprecated_field) = "v1.4",
+ deprecated = true
+ ];
+ Mode mode = 4;
+ bool dry_run = 5;
+ google.protobuf.Duration try_mode_timeout = 6;
+}
+
+// ApplyConfigurationResponse describes the response to a configuration request.
+message ApplyConfiguration {
+ common.Metadata metadata = 1;
+ // Configuration validation warnings.
+ repeated string warnings = 2;
+ // States which mode was actually chosen.
+ ApplyConfigurationRequest.Mode mode = 3;
+ // Human-readable message explaining the result of the apply configuration call.
+ string mode_details = 4;
+}
+
+message ApplyConfigurationResponse {
+ repeated ApplyConfiguration messages = 1;
+}
+
+// rpc reboot
+message RebootRequest {
+ enum Mode {
+ DEFAULT = 0;
+ POWERCYCLE = 1;
+ }
+ Mode mode = 1;
+}
+
+// The reboot message containing the reboot status.
+message Reboot {
+ common.Metadata metadata = 1;
+ string actor_id = 2;
+}
+
+message RebootResponse {
+ repeated Reboot messages = 1;
+}
+
+// rpc Bootstrap
+message BootstrapRequest {
+ // Enable etcd recovery from the snapshot.
+ //
+ // Snapshot should be uploaded before this call via EtcdRecover RPC.
+ bool recover_etcd = 1;
+ // Skip hash check on the snapshot (etcd).
+ //
+ // Enable this when recovering from data directory copy to skip integrity check.
+ bool recover_skip_hash_check = 2;
+}
+
+// The bootstrap message containing the bootstrap status.
+message Bootstrap {
+ common.Metadata metadata = 1;
+}
+
+message BootstrapResponse {
+ repeated Bootstrap messages = 1;
+}
+
+// rpc events
+message SequenceEvent {
+ string sequence = 1;
+ enum Action {
+ NOOP = 0;
+ START = 1;
+ STOP = 2;
+ }
+ Action action = 2;
+ common.Error error = 3;
+}
+
+message PhaseEvent {
+ string phase = 1;
+ enum Action {
+ START = 0;
+ STOP = 1;
+ }
+ Action action = 2;
+}
+
+message TaskEvent {
+ string task = 1;
+ enum Action {
+ START = 0;
+ STOP = 1;
+ }
+ Action action = 2;
+}
+
+message ServiceStateEvent {
+ string service = 1;
+ enum Action {
+ INITIALIZED = 0;
+ PREPARING = 1;
+ WAITING = 2;
+ RUNNING = 3;
+ STOPPING = 4;
+ FINISHED = 5;
+ FAILED = 6;
+ SKIPPED = 7;
+ }
+ Action action = 2;
+ string message = 3;
+ ServiceHealth health = 4;
+}
+
+message RestartEvent {
+ int64 cmd = 1;
+}
+
+// ConfigLoadErrorEvent is reported when the config loading has failed.
+message ConfigLoadErrorEvent {
+ string error = 1;
+}
+
+// ConfigValidationErrorEvent is reported when config validation has failed.
+message ConfigValidationErrorEvent {
+ string error = 1;
+}
+
+// AddressEvent reports node endpoints aggregated from k8s.Endpoints and network.Hostname.
+message AddressEvent {
+ string hostname = 1;
+ repeated string addresses = 2;
+}
+
+// MachineStatusEvent reports changes to the MachineStatus resource.
+message MachineStatusEvent {
+ message MachineStatus {
+ message UnmetCondition {
+ string name = 1;
+ string reason = 2;
+ }
+ bool ready = 1;
+ repeated UnmetCondition unmet_conditions = 2;
+ }
+ enum MachineStage {
+ UNKNOWN = 0;
+ BOOTING = 1;
+ INSTALLING = 2;
+ MAINTENANCE = 3;
+ RUNNING = 4;
+ REBOOTING = 5;
+ SHUTTING_DOWN = 6;
+ RESETTING = 7;
+ UPGRADING = 8;
+ }
+ MachineStage stage = 1;
+ MachineStatus status = 2;
+}
+
+message EventsRequest {
+ int32 tail_events = 1;
+ string tail_id = 2;
+ int32 tail_seconds = 3;
+ string with_actor_id = 4;
+}
+
+message Event {
+ common.Metadata metadata = 1;
+ google.protobuf.Any data = 2;
+ string id = 3;
+ string actor_id = 4;
+}
+
+// rpc reset
+message ResetPartitionSpec {
+ string label = 1;
+ bool wipe = 2;
+}
+
+message ResetRequest {
+ // Graceful indicates whether node should leave etcd before the upgrade, it also
+ // enforces etcd checks before leaving.
+ bool graceful = 1;
+ // Reboot indicates whether node should reboot or halt after resetting.
+ bool reboot = 2;
+ // System_partitions_to_wipe lists specific system disk partitions to be reset (wiped).
+ // If system_partitions_to_wipe is empty, all the partitions are erased.
+ repeated ResetPartitionSpec system_partitions_to_wipe = 3;
+}
+
+// The reset message containing the restart status.
+message Reset {
+ common.Metadata metadata = 1;
+ string actor_id = 2;
+}
+
+message ResetResponse {
+ repeated Reset messages = 1;
+}
+
+// rpc shutdown
+// The messages message containing the shutdown status.
+message Shutdown {
+ common.Metadata metadata = 1;
+ string actor_id = 2;
+}
+
+message ShutdownRequest {
+ // Force indicates whether node should shutdown without first cordening and draining
+ bool force = 1;
+}
+
+message ShutdownResponse {
+ repeated Shutdown messages = 1;
+}
+
+// rpc upgrade
+message UpgradeRequest {
+ string image = 1;
+ bool preserve = 2;
+ bool stage = 3;
+ bool force = 4;
+}
+
+message Upgrade {
+ common.Metadata metadata = 1;
+ string ack = 2;
+ string actor_id = 3;
+}
+
+message UpgradeResponse {
+ repeated Upgrade messages = 1;
+}
+
+// rpc servicelist
+message ServiceList {
+ common.Metadata metadata = 1;
+ repeated ServiceInfo services = 2;
+}
+
+message ServiceListResponse {
+ repeated ServiceList messages = 1;
+}
+
+message ServiceInfo {
+ string id = 1;
+ string state = 2;
+ ServiceEvents events = 3;
+ ServiceHealth health = 4;
+}
+
+message ServiceEvents {
+ repeated ServiceEvent events = 1;
+}
+
+message ServiceEvent {
+ string msg = 1;
+ string state = 2;
+ google.protobuf.Timestamp ts = 3;
+}
+
+message ServiceHealth {
+ bool unknown = 1;
+ bool healthy = 2;
+ string last_message = 3;
+ google.protobuf.Timestamp last_change = 4;
+}
+
+// rpc servicestart
+message ServiceStartRequest {
+ string id = 1;
+}
+
+message ServiceStart {
+ common.Metadata metadata = 1;
+ string resp = 2;
+}
+
+message ServiceStartResponse {
+ repeated ServiceStart messages = 1;
+}
+
+message ServiceStopRequest {
+ string id = 1;
+}
+
+message ServiceStop {
+ common.Metadata metadata = 1;
+ string resp = 2;
+}
+
+message ServiceStopResponse {
+ repeated ServiceStop messages = 1;
+}
+
+message ServiceRestartRequest {
+ string id = 1;
+}
+
+message ServiceRestart {
+ common.Metadata metadata = 1;
+ string resp = 2;
+}
+
+message ServiceRestartResponse {
+ repeated ServiceRestart messages = 1;
+}
+
+// CopyRequest describes a request to copy data out of Talos node
+//
+// Copy produces .tar.gz archive which is streamed back to the caller
+message CopyRequest {
+ // Root path to start copying data out, it might be either a file or directory
+ string root_path = 1;
+}
+
+// ListRequest describes a request to list the contents of a directory.
+message ListRequest {
+ // Root indicates the root directory for the list. If not indicated, '/' is
+ // presumed.
+ string root = 1;
+ // Recurse indicates that subdirectories should be recursed.
+ bool recurse = 2;
+ // RecursionDepth indicates how many levels of subdirectories should be
+ // recursed. The default (0) indicates that no limit should be enforced.
+ int32 recursion_depth = 3;
+ // File type.
+ enum Type {
+ // Regular file (not directory, symlink, etc).
+ REGULAR = 0;
+ // Directory.
+ DIRECTORY = 1;
+ // Symbolic link.
+ SYMLINK = 2;
+ }
+ // Types indicates what file type should be returned. If not indicated,
+ // all files will be returned.
+ repeated Type types = 4;
+}
+
+// DiskUsageRequest describes a request to list disk usage of directories and regular files
+message DiskUsageRequest {
+ // RecursionDepth indicates how many levels of subdirectories should be
+ // recursed. The default (0) indicates that no limit should be enforced.
+ int32 recursion_depth = 1;
+ // All write sizes for all files, not just directories.
+ bool all = 2;
+ // Threshold exclude entries smaller than SIZE if positive,
+ // or entries greater than SIZE if negative.
+ int64 threshold = 3;
+ // DiskUsagePaths is the list of directories to calculate disk usage for.
+ repeated string paths = 4;
+}
+
+// FileInfo describes a file or directory's information
+message FileInfo {
+ common.Metadata metadata = 1;
+ // Name is the name (including prefixed path) of the file or directory
+ string name = 2;
+ // Size indicates the number of bytes contained within the file
+ int64 size = 3;
+ // Mode is the bitmap of UNIX mode/permission flags of the file
+ uint32 mode = 4;
+ // Modified indicates the UNIX timestamp at which the file was last modified
+ int64 modified = 5;
+ // IsDir indicates that the file is a directory
+ bool is_dir = 6;
+ // Error describes any error encountered while trying to read the file
+ // information.
+ string error = 7;
+ // Link is filled with symlink target
+ string link = 8;
+ // RelativeName is the name of the file or directory relative to the RootPath
+ string relative_name = 9;
+ // Owner uid
+ uint32 uid = 10;
+ // Owner gid
+ uint32 gid = 11;
+}
+
+// DiskUsageInfo describes a file or directory's information for du command
+message DiskUsageInfo {
+ common.Metadata metadata = 1;
+ // Name is the name (including prefixed path) of the file or directory
+ string name = 2;
+ // Size indicates the number of bytes contained within the file
+ int64 size = 3;
+ // Error describes any error encountered while trying to read the file
+ // information.
+ string error = 4;
+ // RelativeName is the name of the file or directory relative to the RootPath
+ string relative_name = 5;
+}
+
+// The messages message containing the requested df stats.
+message Mounts {
+ common.Metadata metadata = 1;
+ repeated MountStat stats = 2;
+}
+
+message MountsResponse {
+ repeated Mounts messages = 1;
+}
+
+// The messages message containing the requested processes.
+message MountStat {
+ string filesystem = 1;
+ uint64 size = 2;
+ uint64 available = 3;
+ string mounted_on = 4;
+}
+
+message Version {
+ common.Metadata metadata = 1;
+ VersionInfo version = 2;
+ PlatformInfo platform = 3;
+ // Features describe individual Talos features that can be switched on or off.
+ FeaturesInfo features = 4;
+}
+
+message VersionResponse {
+ repeated Version messages = 1;
+}
+
+message VersionInfo {
+ string tag = 1;
+ string sha = 2;
+ string built = 3;
+ string go_version = 4;
+ string os = 5;
+ string arch = 6;
+}
+
+message PlatformInfo {
+ string name = 1;
+ string mode = 2;
+}
+
+// FeaturesInfo describes individual Talos features that can be switched on or off.
+message FeaturesInfo {
+ // RBAC is true if role-based access control is enabled.
+ bool rbac = 1;
+}
+
+// rpc logs
+// The request message containing the process name.
+message LogsRequest {
+ string namespace = 1;
+ string id = 2;
+ // driver might be default "containerd" or "cri"
+ common.ContainerDriver driver = 3;
+ bool follow = 4;
+ int32 tail_lines = 5;
+}
+
+message ReadRequest {
+ string path = 1;
+}
+
+// rpc rollback
+message RollbackRequest {}
+
+message Rollback {
+ common.Metadata metadata = 1;
+}
+
+message RollbackResponse {
+ repeated Rollback messages = 1;
+}
+
+// rpc Containers
+
+message ContainersRequest {
+ string namespace = 1;
+ // driver might be default "containerd" or "cri"
+ common.ContainerDriver driver = 2;
+}
+
+// The messages message containing the requested containers.
+message ContainerInfo {
+ string namespace = 1;
+ string id = 2;
+ string image = 3;
+ uint32 pid = 4;
+ string status = 5;
+ string pod_id = 6;
+ string name = 7;
+}
+
+// The messages message containing the requested containers.
+message Container {
+ common.Metadata metadata = 1;
+ repeated ContainerInfo containers = 2;
+}
+
+message ContainersResponse {
+ repeated Container messages = 1;
+}
+
+// dmesg
+message DmesgRequest {
+ bool follow = 1;
+ bool tail = 2;
+}
+
+// rpc processes
+message ProcessesResponse {
+ repeated Process messages = 1;
+}
+
+message Process {
+ common.Metadata metadata = 1;
+ repeated ProcessInfo processes = 2;
+}
+
+message ProcessInfo {
+ int32 pid = 1;
+ int32 ppid = 2;
+ string state = 3;
+ int32 threads = 4;
+ double cpu_time = 5;
+ uint64 virtual_memory = 6;
+ uint64 resident_memory = 7;
+ string command = 8;
+ string executable = 9;
+ string args = 10;
+}
+
+// rpc restart
+// The request message containing the process to restart.
+message RestartRequest {
+ string namespace = 1;
+ string id = 2;
+ // driver might be default "containerd" or "cri"
+ common.ContainerDriver driver = 3;
+}
+
+message Restart {
+ common.Metadata metadata = 1;
+}
+
+// The messages message containing the restart status.
+message RestartResponse {
+ repeated Restart messages = 1;
+}
+
+// rpc stats
+
+// The request message containing the containerd namespace.
+message StatsRequest {
+ string namespace = 1;
+ // driver might be default "containerd" or "cri"
+ common.ContainerDriver driver = 2;
+}
+
+// The messages message containing the requested stats.
+message Stats {
+ common.Metadata metadata = 1;
+ repeated Stat stats = 2;
+}
+
+message StatsResponse {
+ repeated Stats messages = 1;
+}
+
+// The messages message containing the requested stat.
+message Stat {
+ string namespace = 1;
+ string id = 2;
+ uint64 memory_usage = 4;
+ uint64 cpu_usage = 5;
+ string pod_id = 6;
+ string name = 7;
+}
+
+message Memory {
+ common.Metadata metadata = 1;
+ MemInfo meminfo = 2;
+}
+
+message MemoryResponse {
+ repeated Memory messages = 1;
+}
+
+message MemInfo {
+ uint64 memtotal = 1;
+ uint64 memfree = 2;
+ uint64 memavailable = 3;
+ uint64 buffers = 4;
+ uint64 cached = 5;
+ uint64 swapcached = 6;
+ uint64 active = 7;
+ uint64 inactive = 8;
+ uint64 activeanon = 9;
+ uint64 inactiveanon = 10;
+ uint64 activefile = 11;
+ uint64 inactivefile = 12;
+ uint64 unevictable = 13;
+ uint64 mlocked = 14;
+ uint64 swaptotal = 15;
+ uint64 swapfree = 16;
+ uint64 dirty = 17;
+ uint64 writeback = 18;
+ uint64 anonpages = 19;
+ uint64 mapped = 20;
+ uint64 shmem = 21;
+ uint64 slab = 22;
+ uint64 sreclaimable = 23;
+ uint64 sunreclaim = 24;
+ uint64 kernelstack = 25;
+ uint64 pagetables = 26;
+ uint64 nfsunstable = 27;
+ uint64 bounce = 28;
+ uint64 writebacktmp = 29;
+ uint64 commitlimit = 30;
+ uint64 committedas = 31;
+ uint64 vmalloctotal = 32;
+ uint64 vmallocused = 33;
+ uint64 vmallocchunk = 34;
+ uint64 hardwarecorrupted = 35;
+ uint64 anonhugepages = 36;
+ uint64 shmemhugepages = 37;
+ uint64 shmempmdmapped = 38;
+ uint64 cmatotal = 39;
+ uint64 cmafree = 40;
+ uint64 hugepagestotal = 41;
+ uint64 hugepagesfree = 42;
+ uint64 hugepagesrsvd = 43;
+ uint64 hugepagessurp = 44;
+ uint64 hugepagesize = 45;
+ uint64 directmap4k = 46;
+ uint64 directmap2m = 47;
+ uint64 directmap1g = 48;
+}
+
+// rpc Hostname
+
+message HostnameResponse {
+ repeated Hostname messages = 1;
+}
+
+message Hostname {
+ common.Metadata metadata = 1;
+ string hostname = 2;
+}
+
+// rpc LoadAvg
+
+message LoadAvgResponse {
+ repeated LoadAvg messages = 1;
+}
+
+message LoadAvg {
+ common.Metadata metadata = 1;
+ double load1 = 2;
+ double load5 = 3;
+ double load15 = 4;
+}
+
+// rpc SystemStat
+
+message SystemStatResponse {
+ repeated SystemStat messages = 1;
+}
+
+message SystemStat {
+ common.Metadata metadata = 1;
+ uint64 boot_time = 2;
+ CPUStat cpu_total = 3;
+ repeated CPUStat cpu = 4;
+ uint64 irq_total = 5;
+ repeated uint64 irq = 6;
+ uint64 context_switches = 7;
+ uint64 process_created = 8;
+ uint64 process_running = 9;
+ uint64 process_blocked = 10;
+ uint64 soft_irq_total = 11;
+ SoftIRQStat soft_irq = 12;
+}
+
+message CPUStat {
+ double user = 1;
+ double nice = 2;
+ double system = 3;
+ double idle = 4;
+ double iowait = 5;
+ double irq = 6;
+ double soft_irq = 7;
+ double steal = 8;
+ double guest = 9;
+ double guest_nice = 10;
+}
+
+message SoftIRQStat {
+ uint64 hi = 1;
+ uint64 timer = 2;
+ uint64 net_tx = 3;
+ uint64 net_rx = 4;
+ uint64 block = 5;
+ uint64 block_io_poll = 6;
+ uint64 tasklet = 7;
+ uint64 sched = 8;
+ uint64 hrtimer = 9;
+ uint64 rcu = 10;
+}
+
+// rpc CPUInfo
+
+message CPUInfoResponse {
+ repeated CPUsInfo messages = 1;
+}
+
+message CPUsInfo {
+ common.Metadata metadata = 1;
+ repeated CPUInfo cpu_info = 2;
+}
+
+message CPUInfo {
+ uint32 processor = 1;
+ string vendor_id = 2;
+ string cpu_family = 3;
+ string model = 4;
+ string model_name = 5;
+ string stepping = 6;
+ string microcode = 7;
+ double cpu_mhz = 8;
+ string cache_size = 9;
+ string physical_id = 10;
+ uint32 siblings = 11;
+ string core_id = 12;
+ uint32 cpu_cores = 13;
+ string apic_id = 14;
+ string initial_apic_id = 15;
+ string fpu = 16;
+ string fpu_exception = 17;
+ uint32 cpu_id_level = 18;
+ string wp = 19;
+ repeated string flags = 20;
+ repeated string bugs = 21;
+ double bogo_mips = 22;
+ uint32 cl_flush_size = 23;
+ uint32 cache_alignment = 24;
+ string address_sizes = 25;
+ string power_management = 26;
+}
+
+// rpc NetworkDeviceStats
+
+message NetworkDeviceStatsResponse {
+ repeated NetworkDeviceStats messages = 1;
+}
+
+message NetworkDeviceStats {
+ common.Metadata metadata = 1;
+ NetDev total = 2;
+ repeated NetDev devices = 3;
+}
+
+message NetDev {
+ string name = 1;
+ uint64 rx_bytes = 2;
+ uint64 rx_packets = 3;
+ uint64 rx_errors = 4;
+ uint64 rx_dropped = 5;
+ uint64 rx_fifo = 6;
+ uint64 rx_frame = 7;
+ uint64 rx_compressed = 8;
+ uint64 rx_multicast = 9;
+ uint64 tx_bytes = 10;
+ uint64 tx_packets = 11;
+ uint64 tx_errors = 12;
+ uint64 tx_dropped = 13;
+ uint64 tx_fifo = 14;
+ uint64 tx_collisions = 15;
+ uint64 tx_carrier = 16;
+ uint64 tx_compressed = 17;
+}
+
+// rpc DiskStats
+
+message DiskStatsResponse {
+ repeated DiskStats messages = 1;
+}
+
+message DiskStats {
+ common.Metadata metadata = 1;
+ DiskStat total = 2;
+ repeated DiskStat devices = 3;
+}
+
+message DiskStat {
+ string name = 1;
+ uint64 read_completed = 2;
+ uint64 read_merged = 3;
+ uint64 read_sectors = 4;
+ uint64 read_time_ms = 5;
+ uint64 write_completed = 6;
+ uint64 write_merged = 7;
+ uint64 write_sectors = 8;
+ uint64 write_time_ms = 9;
+ uint64 io_in_progress = 10;
+ uint64 io_time_ms = 11;
+ uint64 io_time_weighted_ms = 12;
+ uint64 discard_completed = 13;
+ uint64 discard_merged = 14;
+ uint64 discard_sectors = 15;
+ uint64 discard_time_ms = 16;
+}
+
+message EtcdLeaveClusterRequest {}
+
+message EtcdLeaveCluster {
+ common.Metadata metadata = 1;
+}
+
+message EtcdLeaveClusterResponse {
+ repeated EtcdLeaveCluster messages = 1;
+}
+
+message EtcdRemoveMemberRequest {
+ string member = 1;
+}
+
+message EtcdRemoveMember {
+ common.Metadata metadata = 1;
+}
+
+message EtcdRemoveMemberResponse {
+ repeated EtcdRemoveMember messages = 1;
+}
+
+message EtcdForfeitLeadershipRequest {}
+
+message EtcdForfeitLeadership {
+ common.Metadata metadata = 1;
+ string member = 2;
+}
+
+message EtcdForfeitLeadershipResponse {
+ repeated EtcdForfeitLeadership messages = 1;
+}
+
+message EtcdMemberListRequest {
+ bool query_local = 1;
+}
+
+// EtcdMember describes a single etcd member.
+message EtcdMember {
+ // member ID.
+ uint64 id = 2;
+ // human-readable name of the member.
+ string hostname = 3;
+ // the list of URLs the member exposes to clients for communication.
+ repeated string peer_urls = 4;
+ // the list of URLs the member exposes to the cluster for communication.
+ repeated string client_urls = 5;
+ // learner flag
+ bool is_learner = 6;
+}
+
+// EtcdMembers contains the list of members registered on the host.
+message EtcdMembers {
+ common.Metadata metadata = 1;
+ // list of member hostnames.
+ repeated string legacy_members = 2;
+ // the list of etcd members registered on the node.
+ repeated EtcdMember members = 3;
+}
+
+message EtcdMemberListResponse {
+ repeated EtcdMembers messages = 1;
+}
+
+message EtcdSnapshotRequest {}
+
+message EtcdRecover {
+ common.Metadata metadata = 1;
+}
+
+message EtcdRecoverResponse {
+ repeated EtcdRecover messages = 1;
+}
+
+// rpc generateConfiguration
+
+message RouteConfig {
+ string network = 1;
+ string gateway = 2;
+ uint32 metric = 3;
+}
+
+message DHCPOptionsConfig {
+ uint32 route_metric = 1;
+}
+
+message NetworkDeviceConfig {
+ string interface = 1;
+ string cidr = 2;
+ int32 mtu = 3;
+ bool dhcp = 4;
+ bool ignore = 5;
+ DHCPOptionsConfig dhcp_options = 6;
+ repeated RouteConfig routes = 7;
+}
+
+message NetworkConfig {
+ string hostname = 1;
+ repeated NetworkDeviceConfig interfaces = 2;
+}
+
+message InstallConfig {
+ string install_disk = 1;
+ string install_image = 2;
+}
+
+message MachineConfig {
+ enum MachineType {
+ TYPE_UNKNOWN = 0;
+ TYPE_INIT = 1;
+ TYPE_CONTROL_PLANE = 2;
+ TYPE_WORKER = 3;
+ }
+ MachineType type = 1;
+ InstallConfig install_config = 2;
+ NetworkConfig network_config = 3;
+ string kubernetes_version = 4;
+}
+
+message ControlPlaneConfig {
+ string endpoint = 1;
+}
+
+message CNIConfig {
+ string name = 1;
+ repeated string urls = 2;
+}
+
+message ClusterNetworkConfig {
+ string dns_domain = 1;
+ CNIConfig cni_config = 2;
+}
+
+message ClusterConfig {
+ string name = 1;
+ ControlPlaneConfig control_plane = 2;
+ ClusterNetworkConfig cluster_network = 3;
+ bool allow_scheduling_on_control_planes = 4;
+}
+
+// GenerateConfigurationRequest describes a request to generate a new configuration
+// on a node.
+message GenerateConfigurationRequest {
+ string config_version = 1;
+ ClusterConfig cluster_config = 2;
+ MachineConfig machine_config = 3;
+ google.protobuf.Timestamp override_time = 4;
+}
+
+// GenerateConfiguration describes the response to a generate configuration request.
+message GenerateConfiguration {
+ common.Metadata metadata = 1;
+ repeated bytes data = 2;
+ bytes talosconfig = 3;
+}
+
+message GenerateConfigurationResponse {
+ repeated GenerateConfiguration messages = 1;
+}
+
+message GenerateClientConfigurationRequest {
+ // Roles in the generated client certificate.
+ repeated string roles = 1;
+ // Client certificate TTL.
+ google.protobuf.Duration crt_ttl = 2;
+}
+
+message GenerateClientConfiguration {
+ common.Metadata metadata = 1;
+ // PEM-encoded CA certificate.
+ bytes ca = 2;
+ // PEM-encoded generated client certificate.
+ bytes crt = 3;
+ // PEM-encoded generated client key.
+ bytes key = 4;
+ // Client configuration (talosconfig) file content.
+ bytes talosconfig = 5;
+}
+
+message GenerateClientConfigurationResponse {
+ repeated GenerateClientConfiguration messages = 1;
+}
+
+message PacketCaptureRequest {
+ // Interface name to perform packet capture on.
+ string interface = 1;
+ // Enable promiscuous mode.
+ bool promiscuous = 2;
+ // Snap length in bytes.
+ uint32 snap_len = 3;
+ // BPF filter.
+ repeated BPFInstruction bpf_filter = 4;
+}
+
+message BPFInstruction {
+ uint32 op = 1;
+ uint32 jt = 2;
+ uint32 jf = 3;
+ uint32 k = 4;
+}
diff --git a/client/api/v1alpha1/resource.proto b/client/api/v1alpha1/resource.proto
new file mode 100644
index 000000000..3a8caf703
--- /dev/null
+++ b/client/api/v1alpha1/resource.proto
@@ -0,0 +1,72 @@
+syntax = "proto3";
+
+// Resource package defines protobuf serialization of COSI resources.
+package cosi.resource;
+
+option go_package = "github.com/cosi-project/runtime/api/v1alpha1";
+
+import "google/protobuf/timestamp.proto";
+
+// Metadata represents resource metadata.
+//
+// (namespace, type, id) is a resource pointer.
+// (version) is a current resource version.
+// (owner) is filled in for controller-managed resources with controller name.
+// (phase) indicates whether resource is going through tear down phase.
+// (finalizers) are attached controllers blocking teardown of the resource.
+// (labels) and (annotations) are free-form key-value pairs; labels allow queries.
+message Metadata {
+ string namespace = 1;
+ string type = 2;
+ string id = 3;
+ string version = 4;
+ string owner = 5;
+ string phase = 6;
+ google.protobuf.Timestamp created = 7;
+ google.protobuf.Timestamp updated = 8;
+ repeated string finalizers = 9;
+ map annotations = 11;
+ map labels = 10;
+}
+
+// Spec defines content of the resource.
+message Spec {
+ // Protobuf-serialized representation of the resource.
+ bytes proto_spec = 1;
+ // YAML representation of the spec (optional).
+ string yaml_spec = 2;
+}
+
+// Resource is a combination of metadata and spec.
+message Resource {
+ Metadata metadata = 1;
+ Spec spec = 2;
+}
+
+// LabelTerm is an expression on a label.
+message LabelTerm {
+ enum Operation {
+ // Label exists.
+ EXISTS = 0;
+ // Label value is equal.
+ EQUAL = 1;
+ // Label doesn't exist.
+ NOT_EXISTS = 2;
+ }
+
+ string key = 1;
+ Operation op = 2;
+ string value = 3;
+}
+
+// LabelQuery is a query on resource metadata labels.
+//
+// Terms are combined with AND.
+message LabelQuery {
+ repeated LabelTerm terms = 1;
+}
+
+// IDQuery is a query on resource metadata ID.
+message IDQuery {
+ string regexp = 1;
+}
diff --git a/client/go.mod b/client/go.mod
new file mode 100644
index 000000000..1428c1772
--- /dev/null
+++ b/client/go.mod
@@ -0,0 +1,100 @@
+module github.com/siderolabs/omni/client
+
+go 1.22.0
+
+replace (
+ // forked go-yaml that introduces RawYAML interface, which can be used to populate YAML fields using bytes
+ // which are then encoded as a valid YAML blocks with proper indentiation
+ gopkg.in/yaml.v3 => github.com/unix4ever/yaml v0.0.0-20220527175918-f17b0f05cf2c
+ // our fork for tcpproxy with fixes
+ inet.af/tcpproxy => github.com/smira/tcpproxy v0.0.0-20201015133617-de5f7797b95b
+)
+
+require (
+ github.com/adrg/xdg v0.4.0
+ github.com/blang/semver v3.5.1+incompatible
+ github.com/cosi-project/runtime v0.4.0-alpha.6
+ github.com/fatih/color v1.16.0
+ github.com/google/uuid v1.4.0
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0
+ github.com/hashicorp/go-multierror v1.1.1
+ github.com/hexops/gotextdiff v1.0.3
+ github.com/mattn/go-isatty v0.0.20
+ github.com/planetscale/vtprotobuf v0.6.0
+ github.com/sergi/go-diff v1.3.1
+ github.com/siderolabs/gen v0.4.7
+ github.com/siderolabs/go-api-signature v0.3.1
+ github.com/siderolabs/go-kubeconfig v0.1.0
+ github.com/siderolabs/go-pointer v1.0.0
+ github.com/siderolabs/talos/pkg/machinery v1.6.4
+ github.com/spf13/cobra v1.8.0
+ github.com/stretchr/testify v1.8.4
+ github.com/xlab/treeprint v1.2.0
+ go.uber.org/zap v1.26.0
+ golang.org/x/term v0.15.0
+ google.golang.org/grpc v1.61.0
+ google.golang.org/protobuf v1.32.0
+ gopkg.in/yaml.v3 v3.0.1
+ k8s.io/client-go v0.28.4
+)
+
+require (
+ github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c // indirect
+ github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f // indirect
+ github.com/ProtonMail/gopenpgp/v2 v2.7.4 // indirect
+ github.com/cloudflare/circl v1.3.6 // indirect
+ github.com/containerd/go-cni v1.1.9 // indirect
+ github.com/containernetworking/cni v1.1.2 // indirect
+ github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect
+ github.com/davecgh/go-spew v1.1.1 // indirect
+ github.com/dustin/go-humanize v1.0.1 // indirect
+ github.com/gertd/go-pluralize v0.2.1 // indirect
+ github.com/go-logr/logr v1.3.0 // indirect
+ github.com/gogo/protobuf v1.3.2 // indirect
+ github.com/golang/protobuf v1.5.3 // indirect
+ github.com/google/go-cmp v0.6.0 // indirect
+ github.com/google/gofuzz v1.2.0 // indirect
+ github.com/hashicorp/errwrap v1.1.0 // indirect
+ github.com/imdario/mergo v0.3.16 // indirect
+ github.com/inconshreveable/mousetrap v1.1.0 // indirect
+ github.com/josharian/native v1.1.0 // indirect
+ github.com/jsimonetti/rtnetlink v1.4.0 // indirect
+ github.com/json-iterator/go v1.1.12 // indirect
+ github.com/mattn/go-colorable v0.1.13 // indirect
+ github.com/mdlayher/ethtool v0.1.0 // indirect
+ github.com/mdlayher/genetlink v1.3.2 // indirect
+ github.com/mdlayher/netlink v1.7.2 // indirect
+ github.com/mdlayher/socket v0.5.0 // indirect
+ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+ github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/opencontainers/runtime-spec v1.1.0 // indirect
+ github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
+ github.com/pkg/errors v0.9.1 // indirect
+ github.com/pmezard/go-difflib v1.0.0 // indirect
+ github.com/russross/blackfriday/v2 v2.1.0 // indirect
+ github.com/ryanuber/go-glob v1.0.0 // indirect
+ github.com/siderolabs/crypto v0.4.1 // indirect
+ github.com/siderolabs/go-blockdevice v0.4.7 // indirect
+ github.com/siderolabs/net v0.4.0 // indirect
+ github.com/siderolabs/protoenc v0.2.1 // indirect
+ github.com/spf13/pflag v1.0.5 // indirect
+ go.uber.org/multierr v1.11.0 // indirect
+ golang.org/x/crypto v0.16.0 // indirect
+ golang.org/x/net v0.19.0 // indirect
+ golang.org/x/oauth2 v0.15.0 // indirect
+ golang.org/x/sync v0.6.0 // indirect
+ golang.org/x/sys v0.15.0 // indirect
+ golang.org/x/text v0.14.0 // indirect
+ golang.org/x/time v0.5.0 // indirect
+ google.golang.org/appengine v1.6.8 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
+ gopkg.in/inf.v0 v0.9.1 // indirect
+ gopkg.in/yaml.v2 v2.4.0 // indirect
+ k8s.io/apimachinery v0.28.4 // indirect
+ k8s.io/klog/v2 v2.110.1 // indirect
+ k8s.io/utils v0.0.0-20231127182322-b307cd553661 // indirect
+ sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
+ sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
+ sigs.k8s.io/yaml v1.4.0 // indirect
+)
diff --git a/client/go.sum b/client/go.sum
new file mode 100644
index 000000000..e7b2f4007
--- /dev/null
+++ b/client/go.sum
@@ -0,0 +1,368 @@
+github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
+github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c h1:kMFnB0vCcX7IL/m9Y5LO+KQYv+t1CQOiFe6+SV2J7bE=
+github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
+github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f h1:tCbYj7/299ekTTXpdwKYF8eBlsYsDVoggDAuAjoK66k=
+github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f/go.mod h1:gcr0kNtGBqin9zDW9GOHcVntrwnjrK+qdJ06mWYBybw=
+github.com/ProtonMail/gopenpgp/v2 v2.7.4 h1:Vz/8+HViFFnf2A6XX8JOvZMrA6F5puwNvvF21O1mRlo=
+github.com/ProtonMail/gopenpgp/v2 v2.7.4/go.mod h1:IhkNEDaxec6NyzSI0PlxapinnwPVIESk8/76da3Ct3g=
+github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls=
+github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E=
+github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
+github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
+github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
+github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
+github.com/brianvoe/gofakeit/v6 v6.24.0 h1:74yq7RRz/noddscZHRS2T84oHZisW9muwbb8sRnU52A=
+github.com/brianvoe/gofakeit/v6 v6.24.0/go.mod h1:Ow6qC71xtwm79anlwKRlWZW6zVq9D2XHE4QSSMP/rU8=
+github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/cilium/ebpf v0.12.3 h1:8ht6F9MquybnY97at+VDZb3eQQr8ev79RueWeVaEcG4=
+github.com/cilium/ebpf v0.12.3/go.mod h1:TctK1ivibvI3znr66ljgi4hqOT8EYQjz1KWBfb1UVgM=
+github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
+github.com/cloudflare/circl v1.3.6 h1:/xbKIqSHbZXHwkhbrhrt2YOHIwYJlXH94E3tI/gDlUg=
+github.com/cloudflare/circl v1.3.6/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
+github.com/containerd/go-cni v1.1.9 h1:ORi7P1dYzCwVM6XPN4n3CbkuOx/NZ2DOqy+SHRdo9rU=
+github.com/containerd/go-cni v1.1.9/go.mod h1:XYrZJ1d5W6E2VOvjffL3IZq0Dz6bsVlERHbekNK90PM=
+github.com/containernetworking/cni v1.1.2 h1:wtRGZVv7olUHMOqouPpn3cXJWpJgM6+EUl31EQbXALQ=
+github.com/containernetworking/cni v1.1.2/go.mod h1:sDpYKmGVENF3s6uvMvGgldDWeG8dMxakj/u+i9ht9vw=
+github.com/cosi-project/runtime v0.4.0-alpha.6 h1:GFxRH6fc/9z0ffDjod6P7SzjqhKOk6BgoDBgBEOjTvo=
+github.com/cosi-project/runtime v0.4.0-alpha.6/go.mod h1:JE9yuyufGRCd28AyCWFkTNf3UMiZJT722bpfPEPnsNE=
+github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM=
+github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
+github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
+github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE=
+github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI=
+github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
+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/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
+github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/gertd/go-pluralize v0.2.1 h1:M3uASbVjMnTsPb0PNqg+E/24Vwigyo/tvyMTtAlLgiA=
+github.com/gertd/go-pluralize v0.2.1/go.mod h1:rbYaKDbsXxmRfr8uygAEKhOWsjyrrqrkHVpZvoOp8zk=
+github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
+github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
+github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
+github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
+github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
+github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
+github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
+github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
+github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
+github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+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/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
+github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
+github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
+github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
+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=
+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/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
+github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
+github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
+github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
+github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
+github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA=
+github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w=
+github.com/jsimonetti/rtnetlink v1.4.0 h1:Z1BF0fRgcETPEa0Kt0MRk3yV5+kF1FWTni6KUFKrq2I=
+github.com/jsimonetti/rtnetlink v1.4.0/go.mod h1:5W1jDvWdnthFJ7fxYX1GMK07BUpI4oskfOqvPteYS6E=
+github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
+github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mdlayher/ethtool v0.1.0 h1:XAWHsmKhyPOo42qq/yTPb0eFBGUKKTR1rE0dVrWVQ0Y=
+github.com/mdlayher/ethtool v0.1.0/go.mod h1:fBMLn2UhfRGtcH5ZFjr+6GUiHEjZsItFD7fSn7jbZVQ=
+github.com/mdlayher/genetlink v1.3.2 h1:KdrNKe+CTu+IbZnm/GVUMXSqBBLqcGpRDa0xkQy56gw=
+github.com/mdlayher/genetlink v1.3.2/go.mod h1:tcC3pkCrPUGIKKsCsp0B3AdaaKuHtaxoJRz3cc+528o=
+github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g=
+github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw=
+github.com/mdlayher/socket v0.5.0 h1:ilICZmJcQz70vrWVes1MFera4jGiWNocSkykwwoy3XI=
+github.com/mdlayher/socket v0.5.0/go.mod h1:WkcBFfvyG8QENs5+hfQPl1X6Jpd2yeLIYgrGFmJiJxI=
+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=
+github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
+github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
+github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
+github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
+github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
+github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=
+github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
+github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
+github.com/onsi/ginkgo/v2 v2.9.4 h1:xR7vG4IXt5RWx6FfIjyAtsoMAtnc3C/rFXBBd2AjZwE=
+github.com/onsi/ginkgo/v2 v2.9.4/go.mod h1:gCQYp2Q+kSoIj7ykSVb9nskRSsR6PUj4AiLywzIhbKM=
+github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
+github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
+github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
+github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE=
+github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg=
+github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg=
+github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
+github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
+github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/planetscale/vtprotobuf v0.6.0 h1:nBeETjudeJ5ZgBHUz1fVHvbqUKnYOXNhsIEabROxmNA=
+github.com/planetscale/vtprotobuf v0.6.0/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
+github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
+github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=
+github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
+github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
+github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
+github.com/siderolabs/crypto v0.4.1 h1:PP84WSDDyCCbjYKePcc0IaMSPXDndz8V3cQ9hMRSvpA=
+github.com/siderolabs/crypto v0.4.1/go.mod h1:nJmvkqWy1Hngbzw3eg2TdtJ/ZYHHofQK1NbmmYywW8k=
+github.com/siderolabs/gen v0.4.7 h1:lM69UYggT7yzpubf7hEFaNujPdY55Y9zvQf/NC18GvA=
+github.com/siderolabs/gen v0.4.7/go.mod h1:4PBYMdXxTg292IDRq4CGn5AymyDxJVEDvobVKDqFBEA=
+github.com/siderolabs/go-api-signature v0.3.1 h1:ePXOxBT2fxRICsDntXed9kivmVK269nZe5UXvOxgtnM=
+github.com/siderolabs/go-api-signature v0.3.1/go.mod h1:RZQFRiZ4midsdC9XCGhhWyS8QcIWtpEFeigvqoDPYJY=
+github.com/siderolabs/go-blockdevice v0.4.7 h1:2bk4WpEEflGxjrNwp57ye24Pr+cYgAiAeNMWiQOuWbQ=
+github.com/siderolabs/go-blockdevice v0.4.7/go.mod h1:4PeOuk71pReJj1JQEXDE7kIIQJPVe8a+HZQa+qjxSEA=
+github.com/siderolabs/go-kubeconfig v0.1.0 h1:t/2oMWkLSdWHXglKPMz8ySXnx6ZjHckeGY79NaDcBTo=
+github.com/siderolabs/go-kubeconfig v0.1.0/go.mod h1:eM3mO02Td6wYDvdi9zTbMrj1Q4WqEFN8XQ6pNjCUWkI=
+github.com/siderolabs/go-pointer v1.0.0 h1:6TshPKep2doDQJAAtHUuHWXbca8ZfyRySjSBT/4GsMU=
+github.com/siderolabs/go-pointer v1.0.0/go.mod h1:HTRFUNYa3R+k0FFKNv11zgkaCLzEkWVzoYZ433P3kHc=
+github.com/siderolabs/go-retry v0.3.3 h1:zKV+S1vumtO72E6sYsLlmIdV/G/GcYSBLiEx/c9oCEg=
+github.com/siderolabs/go-retry v0.3.3/go.mod h1:Ff/VGc7v7un4uQg3DybgrmOWHEmJ8BzZds/XNn/BqMI=
+github.com/siderolabs/net v0.4.0 h1:1bOgVay/ijPkJz4qct98nHsiB/ysLQU0KLoBC4qLm7I=
+github.com/siderolabs/net v0.4.0/go.mod h1:/ibG+Hm9HU27agp5r9Q3eZicEfjquzNzQNux5uEk0kM=
+github.com/siderolabs/protoenc v0.2.1 h1:BqxEmeWQeMpNP3R6WrPqDatX8sM/r4t97OP8mFmg6GA=
+github.com/siderolabs/protoenc v0.2.1/go.mod h1:StTHxjet1g11GpNAWiATgc8K0HMKiFSEVVFOa/H0otc=
+github.com/siderolabs/talos/pkg/machinery v1.6.4 h1:xzkHpHqVnio3IL2z44f/dG3TNVvSafZFvuyqlR6J7nY=
+github.com/siderolabs/talos/pkg/machinery v1.6.4/go.mod h1:0x8zKxjyasg7n03lHXo5FX8ZaodFSSaompcGYa4alPE=
+github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
+github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
+github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
+github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
+github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/unix4ever/yaml v0.0.0-20220527175918-f17b0f05cf2c h1:Vn6nVVu9MdOYvXPkJP83iX5jVIfvxFC9v9xIKb+DlaQ=
+github.com/unix4ever/yaml v0.0.0-20220527175918-f17b0f05cf2c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ=
+github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
+go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
+go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
+go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
+go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
+go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
+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.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
+golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
+golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY=
+golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
+golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2 h1:Jvc7gsqn21cJHCmAWx0LiimpP18LZmUxkT5Mp7EZ1mI=
+golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.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-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+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-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+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-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
+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.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
+golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
+golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
+golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ=
+golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/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-20190911185100-cd5d95a43a6e/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-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.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
+golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+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=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.3.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.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
+golang.org/x/sys v0.15.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=
+golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
+golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
+golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4=
+golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
+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.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
+golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+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=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
+golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y=
+golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
+google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
+google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 h1:YJ5pD9rF8o9Qtta0Cmy9rdBwkSjrTCT6XTiUQVOtIos=
+google.golang.org/genproto v0.0.0-20231212172506-995d672761c0/go.mod h1:l/k7rMz0vFTBPy+tFSGvXEd3z+BcoG1k7EHbqm+YBsY=
+google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 h1:rcS6EyEaoCO52hQDupoSfrxI3R6C2Tq741is7X8OvnM=
+google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917/go.mod h1:CmlNWB9lSezaYELKS5Ym1r44VrrbPUa7JTvw+6MbpJ0=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 h1:6G8oQ016D88m1xAKljMlBOOGWDZkes4kMhgGFlf8WcQ=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU=
+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 v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+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.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
+google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/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=
+gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
+gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
+gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+k8s.io/api v0.28.4 h1:8ZBrLjwosLl/NYgv1P7EQLqoO8MGQApnbgH8tu3BMzY=
+k8s.io/api v0.28.4/go.mod h1:axWTGrY88s/5YE+JSt4uUi6NMM+gur1en2REMR7IRj0=
+k8s.io/apimachinery v0.28.4 h1:zOSJe1mc+GxuMnFzD4Z/U1wst50X28ZNsn5bhgIIao8=
+k8s.io/apimachinery v0.28.4/go.mod h1:wI37ncBvfAoswfq626yPTe6Bz1c22L7uaJ8dho83mgg=
+k8s.io/client-go v0.28.4 h1:Np5ocjlZcTrkyRJ3+T3PkXDpe4UpatQxj85+xjaD2wY=
+k8s.io/client-go v0.28.4/go.mod h1:0VDZFpgoZfelyP5Wqu0/r/TRYcLYuJ2U1KEeoaPa1N4=
+k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0=
+k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo=
+k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ=
+k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM=
+k8s.io/utils v0.0.0-20231127182322-b307cd553661 h1:FepOBzJ0GXm8t0su67ln2wAZjbQ6RxQGZDnzuLcrUTI=
+k8s.io/utils v0.0.0-20231127182322-b307cd553661/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
+sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
+sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
+sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
+sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
+sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
diff --git a/client/pkg/access/access.go b/client/pkg/access/access.go
new file mode 100644
index 000000000..60aecf4e5
--- /dev/null
+++ b/client/pkg/access/access.go
@@ -0,0 +1,11 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package access contains commands related to API access for the client.
+package access
+
+const (
+ // ServiceAccountNameSuffix is appended to the name of all service accounts.
+ ServiceAccountNameSuffix = "@serviceaccount.omni.sidero.dev"
+)
diff --git a/client/pkg/client/client.go b/client/pkg/client/client.go
new file mode 100644
index 000000000..dbd126cb0
--- /dev/null
+++ b/client/pkg/client/client.go
@@ -0,0 +1,132 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package client provides Omni API client.
+package client
+
+import (
+ "context"
+ "crypto/tls"
+ "net"
+ "net/url"
+
+ "github.com/siderolabs/go-api-signature/pkg/client/auth"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/credentials"
+ "google.golang.org/grpc/credentials/insecure"
+ "google.golang.org/grpc/encoding/gzip"
+
+ "github.com/siderolabs/omni/client/pkg/client/management"
+ "github.com/siderolabs/omni/client/pkg/client/oidc"
+ "github.com/siderolabs/omni/client/pkg/client/omni"
+ "github.com/siderolabs/omni/client/pkg/client/talos"
+ "github.com/siderolabs/omni/client/pkg/constants"
+)
+
+// Client is Omni API client.
+type Client struct {
+ conn *grpc.ClientConn
+
+ endpoint string
+}
+
+// New creates a new Omni API client.
+func New(ctx context.Context, endpoint string, opts ...Option) (*Client, error) {
+ u, err := url.Parse(endpoint)
+ if err != nil {
+ return nil, err
+ }
+
+ if u.Port() == "" && u.Scheme == "https" {
+ u.Host = net.JoinHostPort(u.Host, "443")
+ }
+
+ if u.Scheme == "http" {
+ u.Scheme = "grpc"
+ }
+
+ if u.Port() == "" && u.Scheme == "grpc" {
+ u.Host = net.JoinHostPort(u.Host, "80")
+ }
+
+ var (
+ options Options
+ grpcDialOptions []grpc.DialOption
+ )
+
+ for _, opt := range opts {
+ opt(&options)
+ }
+
+ if options.AuthInterceptor != nil {
+ grpcDialOptions = append(grpcDialOptions,
+ grpc.WithUnaryInterceptor(options.AuthInterceptor.Unary()),
+ grpc.WithStreamInterceptor(options.AuthInterceptor.Stream()))
+ }
+
+ grpcDialOptions = append(grpcDialOptions, options.AdditionalGRPCDialOptions...)
+
+ switch u.Scheme {
+ case "https":
+ grpcDialOptions = append(grpcDialOptions, grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{
+ InsecureSkipVerify: options.InsecureSkipTLSVerify,
+ })))
+ default:
+ grpcDialOptions = append(grpcDialOptions, grpc.WithTransportCredentials(insecure.NewCredentials()))
+ }
+
+ grpcDialOptions = append(grpcDialOptions,
+ grpc.WithDefaultCallOptions(
+ grpc.MaxCallRecvMsgSize(constants.GRPCMaxMessageSize),
+ grpc.UseCompressor(gzip.Name),
+ ),
+ grpc.WithSharedWriteBuffer(true),
+ )
+
+ c := &Client{
+ endpoint: u.String(),
+ }
+
+ c.conn, err = grpc.DialContext(ctx, u.Host, grpcDialOptions...)
+ if err != nil {
+ return nil, err
+ }
+
+ return c, nil
+}
+
+// Close the client.
+func (c *Client) Close() error {
+ return c.conn.Close()
+}
+
+// Omni provides access to Omni resource API.
+func (c *Client) Omni() *omni.Client {
+ return omni.NewClient(c.conn)
+}
+
+// Management provides access to the management API.
+func (c *Client) Management() *management.Client {
+ return management.NewClient(c.conn)
+}
+
+// OIDC provides access to the OIDC API.
+func (c *Client) OIDC() *oidc.Client {
+ return oidc.NewClient(c.conn)
+}
+
+// Auth provides access to the auth API.
+func (c *Client) Auth() *auth.Client {
+ return auth.NewClient(c.conn)
+}
+
+// Talos provides access to Talos machine API.
+func (c *Client) Talos() *talos.Client {
+ return talos.NewClient(c.conn)
+}
+
+// Endpoint returns the endpoint this client is configured to talk to.
+func (c *Client) Endpoint() string {
+ return c.endpoint
+}
diff --git a/client/pkg/client/example_test.go b/client/pkg/client/example_test.go
new file mode 100644
index 000000000..cdd736eaa
--- /dev/null
+++ b/client/pkg/client/example_test.go
@@ -0,0 +1,130 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package client_test
+
+import (
+ "context"
+ "log"
+
+ "github.com/cosi-project/runtime/pkg/safe"
+ "google.golang.org/protobuf/types/known/emptypb"
+
+ "github.com/siderolabs/omni/client/pkg/client"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+ "github.com/siderolabs/omni/client/pkg/omni/resources/omni"
+ "github.com/siderolabs/omni/client/pkg/template"
+ "github.com/siderolabs/omni/client/pkg/version"
+)
+
+//nolint:wsl,testableexamples
+func Example() {
+ // This example shows how to use Omni client to access resources.
+
+ // Setup versions information. You can embed that into `go build` too.
+ version.Name = "omni"
+ version.SHA = "build SHA"
+ version.Tag = "v0.9.1"
+
+ // For this example we will use Omni service account.
+ // You can create your service account in advance:
+ //
+ // omnictl serviceaccount create example.account
+ // Created service account "example.account" with public key ID ""
+ //
+ // Set the following environment variables to use the service account:
+ // OMNI_ENDPOINT=https://.omni.siderolabs.io:443
+ // OMNI_SERVICE_ACCOUNT_KEY=base64encodedkey
+ //
+ // Note: Store the service account key securely, it will not be displayed again
+
+ ctx := context.Background()
+
+ // Creating a new client.
+ client, err := client.New(ctx, "https://.omni.siderolabs.io:443", client.WithServiceAccount(
+ "base64encodedkey", // From the generated service account.
+ ))
+ if err != nil {
+ log.Fatalf("failed to create omni client %s", err)
+ }
+
+ // Omni service is using COSI https://github.com/cosi-project/runtime/.
+ // The same client is used to get resources in Talos.
+ st := client.Omni().State()
+
+ // Getting the resources from the Omni state.
+ machines, err := safe.StateList[*omni.MachineStatus](ctx, st, omni.NewMachineStatus(resources.DefaultNamespace, "").Metadata())
+ if err != nil {
+ log.Fatalf("failed to get machines %s", err)
+ }
+
+ var (
+ cluster string
+ machine *omni.MachineStatus
+ )
+
+ for iter := machines.Iterator(); iter.Next(); {
+ item := iter.Value()
+
+ log.Printf("machine %s, connected: %t", item.Metadata(), item.TypedSpec().Value.GetConnected())
+
+ // Check cluster assignment for a machine.
+ // Find a machine which is allocated into a cluster for the later use.
+ if c, ok := item.Metadata().Labels().Get(omni.LabelCluster); ok && machine == nil {
+ cluster = c
+ machine = item
+ }
+ }
+
+ // Creating an empty cluster via template.
+ // Alternative is to use template.Load to load a cluster template.
+ template := template.WithCluster("example.cluster")
+
+ if _, err = template.Sync(ctx, st); err != nil {
+ log.Fatalf("failed to sync cluster %s", err)
+ }
+
+ log.Printf("sync cluster")
+
+ // Delete cluster.
+ if _, err = template.Delete(ctx, st); err != nil {
+ log.Fatalf("failed to delete the cluster %s", err)
+ }
+
+ log.Printf("destroyed cluster")
+
+ // No machines found, exit.
+ if machine == nil {
+ log.Printf("no allocated machines found, exit")
+
+ return
+ }
+
+ // Using Talos through Omni.
+ // Use cluster and machine which we previously found.
+ cpuInfo, err := client.Talos().WithCluster(
+ cluster,
+ ).WithNodes(
+ machine.Metadata().ID(), // You can use machine UUID as Omni will properly resolve it into machine IP.
+ ).CPUInfo(ctx, &emptypb.Empty{})
+ if err != nil {
+ log.Fatalf("failed to read machine CPU info %s", err)
+ }
+
+ for _, message := range cpuInfo.Messages {
+ for i, info := range message.CpuInfo {
+ log.Printf("machine %s, CPU %d family %s", machine.Metadata(), i, info.CpuFamily)
+ }
+
+ if len(message.CpuInfo) == 0 {
+ log.Printf("no CPU info for machine %s", machine.Metadata())
+ }
+ }
+
+ // Talking to Omni specific APIs: getting talosconfig.
+ _, err = client.Management().Talosconfig(ctx)
+ if err != nil {
+ log.Fatalf("failed to get talosconfig %s", err)
+ }
+}
diff --git a/client/pkg/client/management/management.go b/client/pkg/client/management/management.go
new file mode 100644
index 000000000..7084bcc24
--- /dev/null
+++ b/client/pkg/client/management/management.go
@@ -0,0 +1,316 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package management provides client for Omni management API.
+package management
+
+import (
+ "bytes"
+ "context"
+ "errors"
+ "fmt"
+ "io"
+ "time"
+
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/types/known/durationpb"
+ "google.golang.org/protobuf/types/known/emptypb"
+
+ "github.com/siderolabs/omni/client/api/omni/management"
+)
+
+// TalosconfigOption is a functional option for Talosconfig.
+type TalosconfigOption func(*management.TalosconfigRequest)
+
+// WithAdminTalosconfig sets whether the Talosconfig request should return an admin Talosconfig.
+func WithAdminTalosconfig(adminConfig bool) TalosconfigOption {
+ return func(req *management.TalosconfigRequest) {
+ req.Admin = adminConfig
+ }
+}
+
+// KubeconfigOption is a functional option for Kubeconfig.
+type KubeconfigOption func(request *management.KubeconfigRequest)
+
+// WithServiceAccount sets whether the Kubeconfig request should return a user or service account type kubeconfig.
+func WithServiceAccount(ttl time.Duration, user string, groups ...string) KubeconfigOption {
+ return func(request *management.KubeconfigRequest) {
+ request.ServiceAccount = true
+ request.ServiceAccountTtl = durationpb.New(ttl)
+ request.ServiceAccountUser = user
+ request.ServiceAccountGroups = groups
+ }
+}
+
+// Client for Management API .
+type Client struct {
+ conn management.ManagementServiceClient
+}
+
+// NewClient builds a client out of gRPC connection.
+func NewClient(conn *grpc.ClientConn) *Client {
+ return &Client{
+ conn: management.NewManagementServiceClient(conn),
+ }
+}
+
+// WithCluster sets the cluster name context.
+func (client *Client) WithCluster(clusterName string) *ClusterClient {
+ return &ClusterClient{
+ client: client,
+ clusterName: clusterName,
+ }
+}
+
+// Talosconfig retrieves Talos client configuration for the whole instance.
+func (client *Client) Talosconfig(ctx context.Context, opts ...TalosconfigOption) ([]byte, error) {
+ request := management.TalosconfigRequest{}
+
+ for _, opt := range opts {
+ opt(&request)
+ }
+
+ talosconfigResp, err := client.conn.Talosconfig(ctx, &request)
+
+ return talosconfigResp.GetTalosconfig(), err
+}
+
+// Omniconfig retrieves Omni configuration for the clients.
+func (client *Client) Omniconfig(ctx context.Context) ([]byte, error) {
+ omniconfig, err := client.conn.Omniconfig(ctx, &emptypb.Empty{})
+ if err != nil {
+ return nil, fmt.Errorf("failed to get omniconfig: %w", err)
+ }
+
+ return omniconfig.Omniconfig, nil
+}
+
+// LogsReader returns the io.Reader for the logs with each message separated by '\n'.
+func (client *Client) LogsReader(ctx context.Context, machineID string, follow bool, tailLines int32) (io.Reader, error) {
+ logStream, err := client.conn.MachineLogs(ctx, &management.MachineLogsRequest{
+ MachineId: machineID,
+ Follow: follow,
+ TailLines: tailLines,
+ })
+ if err != nil {
+ return nil, err
+ }
+
+ return &LogReader{
+ ctx: ctx,
+ client: logStream,
+ }, nil
+}
+
+// CreateSchematic using the image factory.
+func (client *Client) CreateSchematic(ctx context.Context, req *management.CreateSchematicRequest) (*management.CreateSchematicResponse, error) {
+ schematic, err := client.conn.CreateSchematic(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ return schematic, nil
+}
+
+// CreateServiceAccount creates a service account and returns the public key ID.
+func (client *Client) CreateServiceAccount(ctx context.Context, armoredPGPPublicKey string, role string, useUserRole bool) (string, error) {
+ resp, err := client.conn.CreateServiceAccount(ctx, &management.CreateServiceAccountRequest{
+ ArmoredPgpPublicKey: armoredPGPPublicKey,
+ Role: role,
+ UseUserRole: useUserRole,
+ })
+ if err != nil {
+ return "", err
+ }
+
+ return resp.PublicKeyId, nil
+}
+
+// RenewServiceAccount renews a service account and returns the public key ID.
+func (client *Client) RenewServiceAccount(ctx context.Context, name, armoredPGPPublicKey string) (string, error) {
+ resp, err := client.conn.RenewServiceAccount(ctx, &management.RenewServiceAccountRequest{
+ Name: name,
+ ArmoredPgpPublicKey: armoredPGPPublicKey,
+ })
+ if err != nil {
+ return "", err
+ }
+
+ return resp.PublicKeyId, nil
+}
+
+// ListServiceAccounts lists service accounts.
+func (client *Client) ListServiceAccounts(ctx context.Context) ([]*management.ListServiceAccountsResponse_ServiceAccount, error) {
+ response, err := client.conn.ListServiceAccounts(ctx, &emptypb.Empty{})
+ if err != nil {
+ return nil, err
+ }
+
+ return response.GetServiceAccounts(), nil
+}
+
+// DestroyServiceAccount deletes a service account.
+func (client *Client) DestroyServiceAccount(ctx context.Context, name string) error {
+ _, err := client.conn.DestroyServiceAccount(ctx, &management.DestroyServiceAccountRequest{
+ Name: name,
+ })
+
+ return err
+}
+
+// LogReader is a log client reader which implements io.Reader.
+type LogReader struct {
+ ctx context.Context //nolint:containedctx
+ client management.ManagementService_MachineLogsClient
+
+ buf bytes.Buffer
+}
+
+// Read reads from the log stream.
+func (l *LogReader) Read(p []byte) (int, error) {
+ if l.buf.Len() > 0 {
+ return l.buf.Read(p)
+ }
+
+ for {
+ if l.ctx.Err() != nil {
+ return 0, io.EOF
+ }
+
+ recv, err := l.client.Recv()
+ if err != nil {
+ if expectedErr(err) {
+ return 0, io.EOF
+ }
+
+ return 0, err
+ }
+
+ err = writeLine(&l.buf, recv.Bytes)
+ if err != nil {
+ return 0, fmt.Errorf("failed to write log msg: %w", err)
+ }
+
+ if l.buf.Len() > 0 {
+ return l.buf.Read(p)
+ }
+ }
+}
+
+type byteWriter interface {
+ io.Writer
+ io.ByteWriter
+}
+
+func writeLine(writer byteWriter, line []byte) error {
+ _, err := writer.Write(line)
+ if err != nil {
+ return err
+ }
+
+ err = writer.WriteByte('\n')
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func expectedErr(err error) bool {
+ return errors.Is(err, context.Canceled) ||
+ errors.Is(err, context.DeadlineExceeded) ||
+ errors.Is(err, io.EOF) ||
+ status.Code(err) == codes.Canceled
+}
+
+// ClusterClient is a client for a specific cluster.
+type ClusterClient struct {
+ client *Client
+ clusterName string
+}
+
+// Kubeconfig retrieves Kubernetes client configuration for the cluster.
+func (client *ClusterClient) Kubeconfig(ctx context.Context, opts ...KubeconfigOption) ([]byte, error) {
+ ctx = metadata.AppendToOutgoingContext(ctx, "context", client.clusterName)
+
+ request := management.KubeconfigRequest{}
+
+ for _, opt := range opts {
+ opt(&request)
+ }
+
+ kubeconfigResp, err := client.client.conn.Kubeconfig(ctx, &request)
+
+ return kubeconfigResp.GetKubeconfig(), err
+}
+
+// Talosconfig retrieves Talos client configuration for the cluster.
+func (client *ClusterClient) Talosconfig(ctx context.Context, opts ...TalosconfigOption) ([]byte, error) {
+ ctx = metadata.AppendToOutgoingContext(ctx, "context", client.clusterName)
+
+ request := management.TalosconfigRequest{}
+
+ for _, opt := range opts {
+ opt(&request)
+ }
+
+ talosconfigResp, err := client.client.conn.Talosconfig(ctx, &request)
+
+ return talosconfigResp.GetTalosconfig(), err
+}
+
+// KubernetesUpgradePreChecks runs the pre-checks for an upgrade.
+func (client *ClusterClient) KubernetesUpgradePreChecks(ctx context.Context, newVersion string) error {
+ ctx = metadata.AppendToOutgoingContext(ctx, "context", client.clusterName)
+
+ resp, err := client.client.conn.KubernetesUpgradePreChecks(ctx, &management.KubernetesUpgradePreChecksRequest{
+ NewVersion: newVersion,
+ })
+ if err != nil {
+ return err
+ }
+
+ if resp.Ok {
+ return nil
+ }
+
+ return fmt.Errorf("%s", resp.GetReason())
+}
+
+// KubernetesSyncManifestHandler is called for each sync event.
+type KubernetesSyncManifestHandler func(*management.KubernetesSyncManifestResponse) error
+
+// KubernetesSyncManifests syncs the bootstrap Kubernetes manifests.
+func (client *ClusterClient) KubernetesSyncManifests(ctx context.Context, dryRun bool, handler KubernetesSyncManifestHandler) error {
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+
+ ctx = metadata.AppendToOutgoingContext(ctx, "context", client.clusterName)
+
+ cli, err := client.client.conn.KubernetesSyncManifests(ctx, &management.KubernetesSyncManifestRequest{
+ DryRun: dryRun,
+ })
+ if err != nil {
+ return err
+ }
+
+ for {
+ msg, err := cli.Recv()
+ if err != nil {
+ if errors.Is(err, io.EOF) || status.Code(err) == codes.Canceled {
+ return nil
+ }
+
+ return err
+ }
+
+ err = handler(msg)
+ if err != nil {
+ return err
+ }
+ }
+}
diff --git a/client/pkg/client/oidc/oidc.go b/client/pkg/client/oidc/oidc.go
new file mode 100644
index 000000000..4c79f7638
--- /dev/null
+++ b/client/pkg/client/oidc/oidc.go
@@ -0,0 +1,37 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package oidc provides client for Omni OIDC API.
+package oidc
+
+import (
+ "context"
+
+ "google.golang.org/grpc"
+
+ "github.com/siderolabs/omni/client/api/omni/oidc"
+)
+
+// Client for Management API .
+type Client struct {
+ conn oidc.OIDCServiceClient
+}
+
+// NewClient builds a client out of gRPC connection.
+func NewClient(conn *grpc.ClientConn) *Client {
+ return &Client{
+ conn: oidc.NewOIDCServiceClient(conn),
+ }
+}
+
+// Authenticate confirms the OIDC auth request.
+func (client *Client) Authenticate(ctx context.Context, requestID string) (string, error) {
+ resp, err := client.conn.Authenticate(ctx,
+ &oidc.AuthenticateRequest{
+ AuthRequestId: requestID,
+ },
+ )
+
+ return resp.GetRedirectUrl(), err
+}
diff --git a/client/pkg/client/omni/omni.go b/client/pkg/client/omni/omni.go
new file mode 100644
index 000000000..7be31bc16
--- /dev/null
+++ b/client/pkg/client/omni/omni.go
@@ -0,0 +1,38 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package omni provides client for Omni resource access.
+package omni
+
+import (
+ "github.com/cosi-project/runtime/api/v1alpha1"
+ "github.com/cosi-project/runtime/pkg/state"
+ "github.com/cosi-project/runtime/pkg/state/protobuf/client"
+ "google.golang.org/grpc"
+
+ _ "github.com/siderolabs/omni/client/pkg/omni/resources/auth" // import resources to register protobufs
+ _ "github.com/siderolabs/omni/client/pkg/omni/resources/k8s"
+ _ "github.com/siderolabs/omni/client/pkg/omni/resources/oidc"
+ _ "github.com/siderolabs/omni/client/pkg/omni/resources/omni"
+ _ "github.com/siderolabs/omni/client/pkg/omni/resources/siderolink"
+ _ "github.com/siderolabs/omni/client/pkg/omni/resources/system"
+ _ "github.com/siderolabs/omni/client/pkg/omni/resources/virtual"
+)
+
+// Client for Omni resource API (COSI).
+type Client struct {
+ state state.State
+}
+
+// NewClient builds a client out of gRPC connection.
+func NewClient(conn *grpc.ClientConn) *Client {
+ return &Client{
+ state: state.WrapCore(client.NewAdapter(v1alpha1.NewStateClient(conn))),
+ }
+}
+
+// State provides access to the COSI resource state.
+func (client *Client) State() state.State { //nolint:ireturn
+ return client.state
+}
diff --git a/client/pkg/client/options.go b/client/pkg/client/options.go
new file mode 100644
index 000000000..46ee786b4
--- /dev/null
+++ b/client/pkg/client/options.go
@@ -0,0 +1,64 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package client provides Omni API client.
+package client
+
+import (
+ "github.com/siderolabs/go-api-signature/pkg/client/interceptor"
+ "github.com/siderolabs/go-api-signature/pkg/pgp/client"
+ "google.golang.org/grpc"
+
+ "github.com/siderolabs/omni/client/pkg/version"
+)
+
+// Options is the options for the client.
+type Options struct {
+ AuthInterceptor *interceptor.Interceptor
+
+ AdditionalGRPCDialOptions []grpc.DialOption
+
+ InsecureSkipTLSVerify bool
+}
+
+// Option is a functional option for the client.
+type Option func(*Options)
+
+// WithInsecureSkipTLSVerify creates the client with insecure TLS verification.
+func WithInsecureSkipTLSVerify(insecureSkipTLSVerify bool) Option {
+ return func(options *Options) {
+ options.InsecureSkipTLSVerify = insecureSkipTLSVerify
+ }
+}
+
+// WithServiceAccount creates the client authenticating with the given service account.
+func WithServiceAccount(serviceAccountBase64 string) Option {
+ return func(options *Options) {
+ options.AuthInterceptor = signatureAuthInterceptor("", "", serviceAccountBase64)
+ }
+}
+
+// WithUserAccount is used for accessing Omni by a human.
+func WithUserAccount(contextName, identity string) Option {
+ return func(options *Options) {
+ options.AuthInterceptor = signatureAuthInterceptor(contextName, identity, "")
+ }
+}
+
+func signatureAuthInterceptor(contextName, identity, serviceAccountBase64 string) *interceptor.Interceptor {
+ return interceptor.New(interceptor.Options{
+ UserKeyProvider: client.NewKeyProvider("omni/keys"),
+ ContextName: contextName,
+ Identity: identity,
+ ClientName: version.Name + " " + version.Tag,
+ ServiceAccountBase64: serviceAccountBase64,
+ })
+}
+
+// WithGrpcOpts adds additional gRPC dial options to the client.
+func WithGrpcOpts(opts ...grpc.DialOption) Option {
+ return func(options *Options) {
+ options.AdditionalGRPCDialOptions = append(options.AdditionalGRPCDialOptions, opts...)
+ }
+}
diff --git a/client/pkg/client/talos/talos.go b/client/pkg/client/talos/talos.go
new file mode 100644
index 000000000..308962158
--- /dev/null
+++ b/client/pkg/client/talos/talos.go
@@ -0,0 +1,80 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package talos provides helpers for accessing Talos Machine API.
+package talos
+
+import (
+ "context"
+
+ "github.com/siderolabs/talos/pkg/machinery/api/machine"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/metadata"
+
+ "github.com/siderolabs/omni/client/api/common"
+)
+
+// NewClient wraps gRPC connection interface which adds nodes, cluster name
+// to each request.
+func NewClient(conn grpc.ClientConnInterface) *Client {
+ c := &Client{
+ conn: conn,
+ }
+
+ c.MachineServiceClient = machine.NewMachineServiceClient(c)
+
+ return c
+}
+
+// Client adds runtime, cluster and nodes metadata to all gRPC calls.
+type Client struct {
+ machine.MachineServiceClient
+ conn grpc.ClientConnInterface
+ clusterName string
+ nodes []string
+}
+
+// WithCluster adds clusterName to the request metadata.
+func (c *Client) WithCluster(clusterName string) *Client {
+ c.clusterName = clusterName
+
+ return c
+}
+
+// WithNodes adds nodes to the request metadata.
+func (c *Client) WithNodes(nodes ...string) *Client {
+ c.nodes = nodes
+
+ return c
+}
+
+// Invoke performs a unary RPC and returns after the response is received
+// into reply.
+func (c *Client) Invoke(ctx context.Context, method string, args any, reply any, opts ...grpc.CallOption) error {
+ return c.conn.Invoke(c.appendMetadata(ctx), method, args, reply, opts...)
+}
+
+// NewStream begins a streaming RPC.
+func (c *Client) NewStream(ctx context.Context, desc *grpc.StreamDesc, method string, opts ...grpc.CallOption) (grpc.ClientStream, error) {
+ return c.conn.NewStream(c.appendMetadata(ctx), desc, method, opts...)
+}
+
+func (c *Client) appendMetadata(ctx context.Context) context.Context {
+ ctx = metadata.AppendToOutgoingContext(ctx, "runtime", common.Runtime_Talos.String())
+
+ if c.clusterName != "" {
+ ctx = metadata.AppendToOutgoingContext(ctx, "context", c.clusterName)
+ }
+
+ if len(c.nodes) > 0 {
+ pairs := make([]string, 0, len(c.nodes)*2)
+ for _, node := range c.nodes {
+ pairs = append(pairs, "nodes", node)
+ }
+
+ ctx = metadata.AppendToOutgoingContext(ctx, pairs...)
+ }
+
+ return ctx
+}
diff --git a/client/pkg/constants/constants.go b/client/pkg/constants/constants.go
new file mode 100644
index 000000000..9547b3f17
--- /dev/null
+++ b/client/pkg/constants/constants.go
@@ -0,0 +1,75 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package constants contains global backend constants.
+package constants
+
+import "time"
+
+// SecureBoot defines query parameter for enabling secure boot for the generated image.
+// tsgen:SecureBoot
+const SecureBoot = "secureboot"
+
+// DefaultTalosVersion is pre-selected in the UI, default image and used in the integration tests.
+//
+// tsgen:DefaultTalosVersion
+const DefaultTalosVersion = "1.6.4"
+
+const (
+ // TalosRegistry is the default Talos repository URL.
+ TalosRegistry = "ghcr.io/siderolabs/installer"
+
+ // ImageFactoryBaseURL is the default Image Factory base URL.
+ ImageFactoryBaseURL = "https://factory.talos.dev"
+
+ // KubernetesRegistry is the default kubernetes repository URL.
+ KubernetesRegistry = "ghcr.io/siderolabs/kubelet"
+)
+
+const (
+ // PatchWeightInstallDisk is the weight of the install disk config patch.
+ // tsgen:PatchWeightInstallDisk
+ PatchWeightInstallDisk = 0
+ // PatchBaseWeightCluster is the base weight for cluster patches.
+ // tsgen:PatchBaseWeightCluster
+ PatchBaseWeightCluster = 200
+ // PatchBaseWeightMachineSet is the base weight for machine set patches.
+ // tsgen:PatchBaseWeightMachineSet
+ PatchBaseWeightMachineSet = 400
+ // PatchBaseWeightClusterMachine is the base weight for cluster machine patches.
+ // tsgen:PatchBaseWeightClusterMachine
+ PatchBaseWeightClusterMachine = 400
+)
+
+const (
+ // DefaultAccessGroup specifies the default Kubernetes group asserted in the token claims if the user has modify access to the clusters.
+ //
+ // If not, the user will only have the groups specified in the ACLs (AccessPolicies) in the token claims (will be empty if there is no matching ACL).
+ DefaultAccessGroup = "system:masters"
+)
+
+// GRPCMaxMessageSize is the maximum message size for gRPC server.
+const GRPCMaxMessageSize = 32 * 1024 * 1024
+
+// DisableValidation force disable resource validation on the Omni runtime for a particular resource (only for debug build).
+const DisableValidation = "disable-validation"
+
+const (
+ // EncryptionPatchPrefix is the prefix of the encryption config patch.
+ EncryptionPatchPrefix = "950"
+)
+
+const (
+ // EncryptionConfigName human-readable encryption config patch name annotation.
+ EncryptionConfigName = "disk encryption config"
+
+ // EncryptionConfigDescription description of the encryption config patch.
+ EncryptionConfigDescription = "Makes machine encrypt disks using Omni as a KMS server"
+)
+
+// CertificateValidityTime is the default validity time for certificates.
+const CertificateValidityTime = time.Hour * 24 * 365 // 1 year
+
+// KubernetesAdminCertCommonName is the common name of the Kubernetes admin certificate.
+const KubernetesAdminCertCommonName = "omni:admin"
diff --git a/client/pkg/constants/debug_disabled.go b/client/pkg/constants/debug_disabled.go
new file mode 100644
index 000000000..57630f913
--- /dev/null
+++ b/client/pkg/constants/debug_disabled.go
@@ -0,0 +1,10 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+//go:build sidero.debug
+
+package constants
+
+// IsDebugBuild is set to true when the build is a debug build (WITH_DEBUG=true).
+const IsDebugBuild = true
diff --git a/client/pkg/constants/debug_enabled.go b/client/pkg/constants/debug_enabled.go
new file mode 100644
index 000000000..9385db8d1
--- /dev/null
+++ b/client/pkg/constants/debug_enabled.go
@@ -0,0 +1,10 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+//go:build !sidero.debug
+
+package constants
+
+// IsDebugBuild is set to true when the build is a debug build (WITH_DEBUG=true).
+const IsDebugBuild = false
diff --git a/client/pkg/constants/talos.go b/client/pkg/constants/talos.go
new file mode 100644
index 000000000..6ab0a99a1
--- /dev/null
+++ b/client/pkg/constants/talos.go
@@ -0,0 +1,55 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package constants
+
+import (
+ "github.com/siderolabs/talos/pkg/machinery/resources/cluster"
+ "github.com/siderolabs/talos/pkg/machinery/resources/k8s"
+ "github.com/siderolabs/talos/pkg/machinery/resources/network"
+ "github.com/siderolabs/talos/pkg/machinery/resources/perf"
+ "github.com/siderolabs/talos/pkg/machinery/resources/runtime"
+ "github.com/siderolabs/talos/pkg/machinery/resources/v1alpha1"
+)
+
+// Copy Talos constants to generate them for Typescript.
+const (
+ // Types.
+ // tsgen:TalosServiceType
+ _ = v1alpha1.ServiceType
+ // tsgen:TalosCPUType
+ _ = perf.CPUType
+ // tsgen:TalosMemoryType
+ _ = perf.MemoryType
+ // tsgen:TalosNodenameType
+ _ = k8s.NodenameType
+ // tsgen:TalosMemberType
+ _ = cluster.MemberType
+ // tsgen:TalosNodeAddressType
+ _ = network.NodeAddressType
+ // tsgen:TalosMountStatusType
+ _ = runtime.MountStatusType
+
+ // Resource ids.
+ // tsgen:TalosNodenameID
+ _ = k8s.NodenameID
+ // tsgen:TalosAddressRoutedNoK8s
+ _ = "routed-no-k8s"
+ // tsgen:TalosCPUID
+ _ = perf.CPUID
+ // tsgen:TalosMemoryID
+ _ = perf.MemoryID
+
+ // Namespaces.
+ // tsgen:TalosPerfNamespace
+ _ = perf.NamespaceName
+ // tsgen:TalosClusterNamespace
+ _ = cluster.NamespaceName
+ // tsgen:TalosRuntimeNamespace
+ _ = v1alpha1.NamespaceName
+ // tsgen:TalosK8sNamespace
+ _ = k8s.NamespaceName
+ // tsgen:TalosNetworkNamespace
+ _ = network.NamespaceName
+)
diff --git a/client/pkg/cosi/labels/labels.go b/client/pkg/cosi/labels/labels.go
new file mode 100644
index 000000000..47994d80a
--- /dev/null
+++ b/client/pkg/cosi/labels/labels.go
@@ -0,0 +1,37 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package labels implements label selector parser.
+package labels
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/status"
+)
+
+// ParseQuery creates resource.LabelQuery from the string formatted selector.
+func ParseQuery(selector string) (*resource.LabelQuery, error) {
+ return (&parser{
+ l: &lexer{
+ s: selector,
+ },
+ }).parse()
+}
+
+// ParseSelectors creates resource.LabelQuery from the string formatted selectors.
+func ParseSelectors(selectors []string) (resource.LabelQueries, error) {
+ res := make([]resource.LabelQuery, 0, len(selectors))
+
+ for _, selector := range selectors {
+ query, err := ParseQuery(selector)
+ if err != nil {
+ return nil, status.Error(codes.InvalidArgument, err.Error())
+ }
+
+ res = append(res, *query)
+ }
+
+ return res, nil
+}
diff --git a/client/pkg/cosi/labels/labels_test.go b/client/pkg/cosi/labels/labels_test.go
new file mode 100644
index 000000000..09e638d17
--- /dev/null
+++ b/client/pkg/cosi/labels/labels_test.go
@@ -0,0 +1,211 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package labels_test
+
+import (
+ "testing"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/stretchr/testify/require"
+
+ "github.com/siderolabs/omni/client/pkg/cosi/labels"
+)
+
+func TestParseQuery(t *testing.T) {
+ for _, tt := range []struct {
+ expected *resource.LabelQuery
+ query string
+ }{
+ {
+ query: "!a",
+ expected: &resource.LabelQuery{
+ Terms: []resource.LabelTerm{
+ {
+ Key: "a",
+ Op: resource.LabelOpExists,
+ Invert: true,
+ },
+ },
+ },
+ },
+ {
+ query: "a",
+ expected: &resource.LabelQuery{
+ Terms: []resource.LabelTerm{
+ {
+ Key: "a",
+ Op: resource.LabelOpExists,
+ },
+ },
+ },
+ },
+ {
+ query: "a != b",
+ expected: &resource.LabelQuery{
+ Terms: []resource.LabelTerm{
+ {
+ Key: "a",
+ Op: resource.LabelOpEqual,
+ Value: []string{"b"},
+ Invert: true,
+ },
+ },
+ },
+ },
+ {
+ query: "a == b",
+ expected: &resource.LabelQuery{
+ Terms: []resource.LabelTerm{
+ {
+ Key: "a",
+ Op: resource.LabelOpEqual,
+ Value: []string{"b"},
+ },
+ },
+ },
+ },
+ {
+ query: "a = b",
+ expected: &resource.LabelQuery{
+ Terms: []resource.LabelTerm{
+ {
+ Key: "a",
+ Op: resource.LabelOpEqual,
+ Value: []string{"b"},
+ },
+ },
+ },
+ },
+ {
+ query: "a < b",
+ expected: &resource.LabelQuery{
+ Terms: []resource.LabelTerm{
+ {
+ Key: "a",
+ Op: resource.LabelOpLTNumeric,
+ Value: []string{"b"},
+ },
+ },
+ },
+ },
+ {
+ query: "a <= b",
+ expected: &resource.LabelQuery{
+ Terms: []resource.LabelTerm{
+ {
+ Key: "a",
+ Op: resource.LabelOpLTENumeric,
+ Value: []string{"b"},
+ },
+ },
+ },
+ },
+ {
+ query: "a > b",
+ expected: &resource.LabelQuery{
+ Terms: []resource.LabelTerm{
+ {
+ Key: "a",
+ Op: resource.LabelOpLTENumeric,
+ Value: []string{"b"},
+ Invert: true,
+ },
+ },
+ },
+ },
+ {
+ query: "a >= 㰀㰀",
+ expected: &resource.LabelQuery{
+ Terms: []resource.LabelTerm{
+ {
+ Key: "a",
+ Op: resource.LabelOpLTNumeric,
+ Value: []string{"㰀㰀"},
+ Invert: true,
+ },
+ },
+ },
+ },
+ {
+ query: "a >= b",
+ expected: &resource.LabelQuery{
+ Terms: []resource.LabelTerm{
+ {
+ Key: "a",
+ Op: resource.LabelOpLTNumeric,
+ Value: []string{"b"},
+ Invert: true,
+ },
+ },
+ },
+ },
+ {
+ query: "a notin (a, b, c, d)",
+ expected: &resource.LabelQuery{
+ Terms: []resource.LabelTerm{
+ {
+ Key: "a",
+ Op: resource.LabelOpIn,
+ Value: []string{"a", "b", "c", "d"},
+ Invert: true,
+ },
+ },
+ },
+ },
+ {
+ query: "a in (a, b, c, d)",
+ expected: &resource.LabelQuery{
+ Terms: []resource.LabelTerm{
+ {
+ Key: "a",
+ Op: resource.LabelOpIn,
+ Value: []string{"a", "b", "c", "d"},
+ },
+ },
+ },
+ },
+ {
+ query: "a in a, b, c, d",
+ },
+ {
+ query: "a in a",
+ },
+ {
+ query: "!a= 1",
+ },
+ {
+ query: "a, b > 0",
+ expected: &resource.LabelQuery{
+ Terms: []resource.LabelTerm{
+ {
+ Key: "a",
+ Op: resource.LabelOpExists,
+ },
+ {
+ Key: "b",
+ Op: resource.LabelOpLTENumeric,
+ Value: []string{"0"},
+ Invert: true,
+ },
+ },
+ },
+ },
+ } {
+ t.Run(tt.query, func(t *testing.T) {
+ require := require.New(t)
+
+ res, err := labels.ParseQuery(tt.query)
+
+ if tt.expected == nil {
+ require.Error(err)
+
+ return
+ }
+
+ require.NoError(err)
+ require.Equal(tt.expected, res)
+ })
+ }
+}
diff --git a/client/pkg/cosi/labels/lexer.go b/client/pkg/cosi/labels/lexer.go
new file mode 100644
index 000000000..8761a95ac
--- /dev/null
+++ b/client/pkg/cosi/labels/lexer.go
@@ -0,0 +1,247 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package labels
+
+import (
+ "fmt"
+ "unicode/utf8"
+)
+
+// lexerToken represents constant definition for lexer token.
+type lexerToken int
+
+// newToken parses token from string.
+func newToken(s string) (lexerToken, bool) {
+ switch s {
+ case ")":
+ return closedParToken, true
+ case "(":
+ return openParToken, true
+ case ",":
+ return commaToken, true
+ case "!":
+ return doesNotExistToken, true
+ case "!=":
+ return neqToken, true
+ case "==":
+ return doubleEQToken, true
+ case "=":
+ return eqToken, true
+ case ">":
+ return gtToken, true
+ case ">=":
+ return gteToken, true
+ case "<":
+ return ltToken, true
+ case "<=":
+ return lteToken, true
+ case "notin":
+ return notInToken, true
+ case "in":
+ return inToken, true
+ default:
+ return 0, false
+ }
+}
+
+// String converts token to string.
+func (t lexerToken) String() string {
+ //nolint:exhaustive
+ switch t {
+ case closedParToken:
+ return ")"
+ case openParToken:
+ return "("
+ case commaToken:
+ return ","
+ case doesNotExistToken:
+ return "!"
+ case doubleEQToken:
+ return "=="
+ case eqToken:
+ return "="
+ case gtToken:
+ return ">"
+ case gteToken:
+ return ">="
+ case ltToken:
+ return "<"
+ case lteToken:
+ return "<="
+ case neqToken:
+ return "!="
+ case notInToken:
+ return "notin"
+ case inToken:
+ return "in"
+ default:
+ return ""
+ }
+}
+
+const (
+ // errorToken represents scan error.
+ errorToken lexerToken = iota
+ // endOfStringToken represents end of string.
+ endOfStringToken
+ // closedParToken represents close parenthesis.
+ closedParToken
+ // commaToken represents the comma.
+ commaToken
+ // doesNotExistToken represents logic not.
+ doesNotExistToken
+ // doubleEQToken represents double equals.
+ doubleEQToken
+ // eqToken represents equal.
+ eqToken
+ // gtToken represents greater than.
+ gtToken
+ // gteToken represents greater than or equal.
+ gteToken
+ // IdentifierToken represents identifier, e.g. keys and values.
+ IdentifierToken
+ // inToken represents in.
+ inToken
+ // ltToken represents less than.
+ ltToken
+ // lteToken represents less than or equal.
+ lteToken
+ // neqToken represents not equal.
+ neqToken
+ // notInToken represents not in.
+ notInToken
+ // openParToken represents open parenthesis.
+ openParToken
+)
+
+// isWhitespace returns true if the rune is a space, tab, or newline.
+func isWhitespace(ch rune) bool {
+ return ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n'
+}
+
+// isSpecialSymbol detects if the character ch can be an operator.
+func isSpecialSymbol(ch rune) bool {
+ switch ch {
+ case '=', '!', '(', ')', ',', '>', '<':
+ return true
+ }
+
+ return false
+}
+
+// lexer represents the lexer struct for label selector.
+// It contains necessary information to tokenize the input string.
+type lexer struct {
+ // s stores the string to be tokenized
+ s string
+ // pos is the position currently tokenized
+ pos int
+}
+
+// read returns the character currently lexed
+// increment the position and check the buffer overflow.
+func (l *lexer) read() (rune, int) {
+ if l.pos >= len(l.s) {
+ return 0, 0
+ }
+
+ b, width := utf8.DecodeRuneInString(l.s[l.pos:])
+ l.pos += width
+
+ return b, width
+}
+
+// scanIDOrKeyword scans string to recognize literal token (for example 'in') or an identifier.
+func (l *lexer) scanIDOrKeyword() (tok lexerToken, lit string) {
+ var buffer []rune
+IdentifierLoop:
+ for {
+ switch ch, width := l.read(); {
+ case ch == 0:
+ break IdentifierLoop
+ case isSpecialSymbol(ch) || isWhitespace(ch):
+ l.pos -= width
+
+ break IdentifierLoop
+ default:
+ buffer = append(buffer, ch)
+ }
+ }
+
+ s := string(buffer)
+ if val, ok := newToken(s); ok { // is a literal token?
+ return val, s
+ }
+
+ return IdentifierToken, s // otherwise is an identifier
+}
+
+// scanSpecialSymbol scans string starting with special symbol.
+// special symbol identify non literal operators. "!=", "==", "=".
+func (l *lexer) scanSpecialSymbol() (lexerToken, string) {
+ var (
+ buffer []rune
+ token lexerToken
+ literal string
+ )
+
+SpecialSymbolLoop:
+ for {
+ switch ch, width := l.read(); {
+ case ch == 0:
+ break SpecialSymbolLoop
+ case isSpecialSymbol(ch):
+ buffer = append(buffer, ch)
+
+ if t, ok := newToken(string(buffer)); ok {
+ token = t
+ literal = string(buffer)
+ } else if token != 0 {
+ l.pos -= width
+
+ break SpecialSymbolLoop
+ }
+ default:
+ l.pos -= width
+
+ break SpecialSymbolLoop
+ }
+ }
+
+ if token == 0 {
+ return errorToken, fmt.Sprintf("error expected: keyword found '%s'", string(buffer))
+ }
+
+ return token, literal
+}
+
+// skipWhiteSpaces consumes all blank characters
+// returning the first non blank character.
+func (l *lexer) skipWhiteSpaces(ch rune, width int) (rune, int) {
+ for {
+ if !isWhitespace(ch) {
+ return ch, width
+ }
+
+ ch, width = l.read()
+ }
+}
+
+// lex returns a pair of Token and the literal.
+// Literal is meaningful only for IdentifierToken token.
+func (l *lexer) lex() (tok lexerToken, lit string) {
+ switch ch, width := l.skipWhiteSpaces(l.read()); {
+ case ch == 0:
+ return endOfStringToken, ""
+ case isSpecialSymbol(ch):
+ l.pos -= width
+
+ return l.scanSpecialSymbol()
+ default:
+ l.pos -= width
+
+ return l.scanIDOrKeyword()
+ }
+}
diff --git a/client/pkg/cosi/labels/parser.go b/client/pkg/cosi/labels/parser.go
new file mode 100644
index 000000000..f6c156144
--- /dev/null
+++ b/client/pkg/cosi/labels/parser.go
@@ -0,0 +1,298 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package labels
+
+import (
+ "fmt"
+ "sort"
+ "strings"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/siderolabs/gen/maps"
+ "github.com/siderolabs/gen/xslices"
+)
+
+// scannedItem contains the Token and the literal produced by the lexer.
+type scannedItem struct {
+ literal string
+ token lexerToken
+}
+
+// parser data structure contains the label selector parser data structure.
+type parser struct {
+ currentItem *scannedItem
+ l *lexer
+ position int
+}
+
+// parserContext represents context during parsing:
+// some literal for example 'in' and 'notin' can be
+// recognized as operator for example 'x in (a)' but
+// it can be recognized as value for example 'value in (in)'.
+type parserContext int
+
+const (
+ keyAndOperatorContext parserContext = iota
+ valuesContext
+)
+
+// lookahead func returns the current token and string. No increment of current position.
+func (p *parser) lookahead(context parserContext) (lexerToken, string) {
+ if p.currentItem == nil {
+ token, literal := p.l.lex()
+
+ p.currentItem = &scannedItem{
+ token: token,
+ literal: literal,
+ }
+ }
+
+ token, literal := p.currentItem.token, p.currentItem.literal
+
+ if context == valuesContext {
+ //nolint:exhaustive
+ switch token {
+ case inToken, notInToken:
+ token = IdentifierToken
+ }
+ }
+
+ return token, literal
+}
+
+// consume returns current token and string. Increments the position.
+func (p *parser) consume(context parserContext) (lexerToken, string) {
+ tok, lit := p.lookahead(context)
+
+ p.position++
+
+ p.currentItem = nil
+
+ return tok, lit
+}
+
+// parse runs the left recursive descending algorithm
+// on input string. It returns a list of Term objects.
+func (p *parser) parse() (*resource.LabelQuery, error) {
+ var terms []resource.LabelTerm
+
+ for {
+ tok, lit := p.lookahead(valuesContext)
+ //nolint:exhaustive
+ switch tok {
+ case IdentifierToken, doesNotExistToken:
+ r, err := p.parseTerm()
+ if err != nil {
+ return nil, fmt.Errorf("unable to parse term: %w", err)
+ }
+
+ terms = append(terms, *r)
+
+ t, l := p.consume(valuesContext)
+ //nolint:exhaustive
+ switch t {
+ case endOfStringToken:
+ return &resource.LabelQuery{
+ Terms: terms,
+ }, nil
+ case commaToken:
+ t2, l2 := p.lookahead(valuesContext)
+ if t2 != IdentifierToken && t2 != doesNotExistToken {
+ return nil, fmt.Errorf("found '%s', expected: identifier after ','", l2)
+ }
+ default:
+ return nil, fmt.Errorf("found '%s', expected: ',' or 'end of string'", l)
+ }
+ case endOfStringToken:
+ return &resource.LabelQuery{
+ Terms: terms,
+ }, nil
+ default:
+ return nil, fmt.Errorf("found '%s', expected: !, identifier, or 'end of string'", lit)
+ }
+ }
+}
+
+func (p *parser) parseTerm() (*resource.LabelTerm, error) {
+ var (
+ term resource.LabelTerm
+ err error
+ )
+
+ tok, key := p.consume(valuesContext)
+
+ doesNotExist := tok == doesNotExistToken
+
+ if doesNotExist {
+ tok, key = p.consume(valuesContext)
+
+ term.Invert = true
+ }
+
+ term.Key = key
+
+ if tok != IdentifierToken {
+ err = fmt.Errorf("found '%s', expected: identifier", key)
+
+ return nil, err
+ }
+
+ if t, _ := p.lookahead(valuesContext); t == endOfStringToken || t == commaToken {
+ term.Op = resource.LabelOpExists
+
+ return &term, nil
+ } else if doesNotExist {
+ return nil, fmt.Errorf("expected EOF or ',', found %s", tok.String())
+ }
+
+ tok, lit := p.consume(keyAndOperatorContext)
+ //nolint:exhaustive
+ switch tok {
+ case notInToken:
+ term.Invert = true
+
+ fallthrough
+ case inToken:
+ term.Op = resource.LabelOpIn
+ case neqToken:
+ term.Invert = true
+
+ fallthrough
+ case eqToken, doubleEQToken:
+ term.Op = resource.LabelOpEqual
+ // >= is inverse to <
+ case gteToken:
+ term.Invert = true
+
+ fallthrough
+ case ltToken:
+ term.Op = resource.LabelOpLTNumeric
+ // > is inverse to <=
+ case gtToken:
+ term.Invert = true
+
+ fallthrough
+ case lteToken:
+ term.Op = resource.LabelOpLTENumeric
+ default:
+ allowedTokens := []lexerToken{
+ doubleEQToken,
+ eqToken,
+ neqToken,
+ gteToken,
+ gtToken,
+ inToken,
+ notInToken,
+ lteToken,
+ ltToken,
+ }
+
+ return nil, fmt.Errorf("found '%s', expected: %v", lit, strings.Join(xslices.Map(allowedTokens, func(t lexerToken) string { return t.String() }), ", "))
+ }
+
+ if term.Op == resource.LabelOpIn {
+ term.Value, err = p.parseValues()
+
+ return &term, err
+ }
+
+ term.Value, err = p.parseExactValue()
+
+ return &term, err
+}
+
+// parseValues parses the values for set based matching (x,y,z).
+func (p *parser) parseValues() ([]string, error) {
+ tok, lit := p.consume(valuesContext)
+ if tok != openParToken {
+ return nil, fmt.Errorf("found '%s' expected: '('", lit)
+ }
+
+ tok, lit = p.lookahead(valuesContext)
+ //nolint:exhaustive
+ switch tok {
+ case IdentifierToken, commaToken:
+ s, err := p.parseIdentifiersList() // handles general cases
+ if err != nil {
+ return nil, err
+ }
+
+ if tok, _ = p.consume(valuesContext); tok != closedParToken {
+ return nil, fmt.Errorf("found '%s', expected: ')'", lit)
+ }
+
+ res := maps.Keys(s)
+ sort.Strings(res)
+
+ return res, nil
+ case closedParToken: // handles "()"
+ p.consume(valuesContext)
+
+ return []string{""}, nil
+ default:
+ return nil, fmt.Errorf("found '%s', expected: ',', ')' or identifier", lit)
+ }
+}
+
+// parseIdentifiersList parses a (possibly empty) list
+// of comma separated (possibly empty) identifiers.
+func (p *parser) parseIdentifiersList() (map[string]struct{}, error) {
+ s := map[string]struct{}{}
+
+ for {
+ tok, lit := p.consume(valuesContext)
+ //nolint:exhaustive
+ switch tok {
+ case IdentifierToken:
+ s[lit] = struct{}{}
+
+ tok2, lit2 := p.lookahead(valuesContext)
+
+ //nolint:exhaustive
+ switch tok2 {
+ case commaToken:
+ continue
+ case closedParToken:
+ return s, nil
+ default:
+ return nil, fmt.Errorf("found '%s', expected: ',' or ')'", lit2)
+ }
+ case commaToken: // handled here since we can have "(,"
+ if len(s) == 0 {
+ s[""] = struct{}{} // to handle (,
+ }
+
+ tok2, _ := p.lookahead(valuesContext)
+ if tok2 == closedParToken {
+ s[""] = struct{}{} // to handle ,) Double "" removed by StringSet
+
+ return s, nil
+ }
+
+ if tok2 == commaToken {
+ p.consume(valuesContext)
+
+ s[""] = struct{}{} // to handle ,, Double "" removed by StringSet
+ }
+ default: // it can be operator
+ return s, fmt.Errorf("found '%s', expected: ',', or identifier", lit)
+ }
+ }
+}
+
+// parseExactValue parses the only value for exact match style.
+func (p *parser) parseExactValue() ([]string, error) {
+ tok, _ := p.lookahead(valuesContext)
+ if tok == endOfStringToken || tok == commaToken {
+ return []string{""}, nil
+ }
+
+ tok, lit := p.consume(valuesContext)
+ if tok == IdentifierToken {
+ return []string{lit}, nil
+ }
+
+ return nil, fmt.Errorf("found '%s', expected: identifier", lit)
+}
diff --git a/client/pkg/example_test.go b/client/pkg/example_test.go
new file mode 100644
index 000000000..dedfb8fec
--- /dev/null
+++ b/client/pkg/example_test.go
@@ -0,0 +1,33 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package pkg_test
+
+import (
+ "os"
+
+ "github.com/siderolabs/omni/client/pkg/omnictl"
+ "github.com/siderolabs/omni/client/pkg/version"
+)
+
+//nolint:wsl,testableexamples
+func Example() {
+ // This is an example of building omnictl executable.
+
+ version.Name = "omni"
+ version.SHA = "build SHA" // Optional.
+ version.Tag = "v0.29.0" // Optional.
+ version.API = 1 // Required: omnictl validates that the client has the same API version as the server.
+
+ // You can disable this validation and warnings by setting:
+ // version.SuppressVersionWarning = true
+
+ // Initialize Root cmd version.
+ omnictl.RootCmd.Version = version.String()
+
+ // Run Root command.
+ if err := omnictl.RootCmd.Execute(); err != nil {
+ os.Exit(1)
+ }
+}
diff --git a/client/pkg/meta/labels.go b/client/pkg/meta/labels.go
new file mode 100644
index 000000000..1291bda61
--- /dev/null
+++ b/client/pkg/meta/labels.go
@@ -0,0 +1,31 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package meta keeps Talos meta partition utils.
+package meta
+
+import "gopkg.in/yaml.v3"
+
+// ImageLabels describes structure that is stored in the Talos metadata and keeps machine labels
+// that are initially assigned to the machine when it connects to Omni.
+type ImageLabels struct {
+ Labels map[string]string `yaml:"machineLabels"`
+ LegacyLabels map[string]string `yaml:"machineInitialLabels,omitempty"`
+}
+
+// Encode converts labels to the serialized value to be stored in the meta partition.
+func (l ImageLabels) Encode() ([]byte, error) {
+ return yaml.Marshal(l)
+}
+
+// ParseLabels reads label from the encoded metadata value.
+func ParseLabels(data []byte) (*ImageLabels, error) {
+ labels := &ImageLabels{}
+
+ if err := yaml.Unmarshal(data, &labels); err != nil {
+ return nil, err
+ }
+
+ return labels, nil
+}
diff --git a/client/pkg/meta/meta.go b/client/pkg/meta/meta.go
new file mode 100644
index 000000000..e47235e3e
--- /dev/null
+++ b/client/pkg/meta/meta.go
@@ -0,0 +1,38 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package meta keeps Talos meta partition utils.
+package meta
+
+// StateEncryptionConfig is github.com/siderolabs/talos/internal/pkg/meta.StateEncryptionConfig.
+const StateEncryptionConfig = 9
+
+// MetalNetworkPlatformConfig is github.com/siderolabs/talos/internal/pkg/meta.MetalNetworkPlatformConfig.
+// tsgen:MetalNetworkPlatformConfig
+const MetalNetworkPlatformConfig = 10
+
+// LabelsMeta is github.com/siderolabs/talos/internal/pkg/meta.UserReserved1.
+// Omni stores initial machine labels under that key.
+// tsgen:LabelsMeta
+const LabelsMeta = 12
+
+// UserReserved2 is github.com/siderolabs/talos/internal/pkg/meta.UserReserved2.
+const UserReserved2 = 13
+
+// UserReserved3 is github.com/siderolabs/talos/internal/pkg/meta.UserReserved3.
+const UserReserved3 = 14
+
+// CanSetMetaKey checks if the meta key can be set using Omni/Image Factory.
+// To avoid messing up things which are internal to Talos.
+func CanSetMetaKey(key int) bool {
+ switch key {
+ case LabelsMeta,
+ MetalNetworkPlatformConfig,
+ UserReserved2,
+ UserReserved3:
+ return true
+ }
+
+ return false
+}
diff --git a/client/pkg/omni/resources/auth/access_policy.go b/client/pkg/omni/resources/auth/access_policy.go
new file mode 100644
index 000000000..d0cce86c9
--- /dev/null
+++ b/client/pkg/omni/resources/auth/access_policy.go
@@ -0,0 +1,52 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package auth
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+const (
+ // AccessPolicyID is the ID of AccessPolicy resource.
+ AccessPolicyID = "access-policy"
+
+ // AccessPolicyType is the type of AccessPolicy resource.
+ //
+ // tsgen:AccessPolicyType
+ AccessPolicyType = resource.Type("AccessPolicies.omni.sidero.dev")
+)
+
+// NewAccessPolicy creates new AccessPolicy resource.
+func NewAccessPolicy() *AccessPolicy {
+ return typed.NewResource[AccessPolicySpec, AccessPolicyExtension](
+ resource.NewMetadata(resources.DefaultNamespace, AccessPolicyType, AccessPolicyID, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.AccessPolicySpec{}),
+ )
+}
+
+// AccessPolicy resource describes a user ACL.
+type AccessPolicy = typed.Resource[AccessPolicySpec, AccessPolicyExtension]
+
+// AccessPolicySpec wraps specs.AccessPolicySpec.
+type AccessPolicySpec = protobuf.ResourceSpec[specs.AccessPolicySpec, *specs.AccessPolicySpec]
+
+// AccessPolicyExtension providers auxiliary methods for AccessPolicy resource.
+type AccessPolicyExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (AccessPolicyExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: AccessPolicyType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/auth/auth.go b/client/pkg/omni/resources/auth/auth.go
new file mode 100644
index 000000000..c8af32443
--- /dev/null
+++ b/client/pkg/omni/resources/auth/auth.go
@@ -0,0 +1,18 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package auth provides resources related to the authentication.
+package auth
+
+import "github.com/siderolabs/omni/client/pkg/omni/resources/registry"
+
+func init() {
+ registry.MustRegisterResource(AuthConfigType, &Config{})
+ registry.MustRegisterResource(IdentityType, &Identity{})
+ registry.MustRegisterResource(PublicKeyType, &PublicKey{})
+ registry.MustRegisterResource(UserType, &User{})
+ registry.MustRegisterResource(AccessPolicyType, &AccessPolicy{})
+ registry.MustRegisterResource(SAMLAssertionType, &SAMLAssertion{})
+ registry.MustRegisterResource(SAMLLabelRuleType, &SAMLLabelRule{})
+}
diff --git a/client/pkg/omni/resources/auth/config.go b/client/pkg/omni/resources/auth/config.go
new file mode 100644
index 000000000..fe67dbfd2
--- /dev/null
+++ b/client/pkg/omni/resources/auth/config.go
@@ -0,0 +1,64 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package auth
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+const (
+ // ConfigID is the resource ID under which the authentication parameters for auth0 & webauthn will be written to COSI state.
+ // tsgen:AuthConfigID
+ ConfigID = "auth-config"
+)
+
+// NewAuthConfig creates new Config state.
+func NewAuthConfig() *Config {
+ return typed.NewResource[ConfigSpec, ConfigExtension](
+ resource.NewMetadata(resources.DefaultNamespace, AuthConfigType, ConfigID, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.AuthConfigSpec{}),
+ )
+}
+
+const (
+ // AuthConfigType is the type of Config resource.
+ //
+ // tsgen:AuthConfigType
+ AuthConfigType = resource.Type("AuthConfigs.omni.sidero.dev")
+)
+
+// Config resource is the Omni authentication configuration.
+//
+// Config resource ID is a human-readable string without white-space that uniquely identifies the installation media.
+type Config = typed.Resource[ConfigSpec, ConfigExtension]
+
+// ConfigSpec wraps specs.AuthConfigSpec.
+type ConfigSpec = protobuf.ResourceSpec[specs.AuthConfigSpec, *specs.AuthConfigSpec]
+
+// ConfigExtension providers auxiliary methods for Config resource.
+type ConfigExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ConfigExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: AuthConfigType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
+
+// Enabled check is config settings has any auth enabled.
+func Enabled(res *Config) bool {
+ spec := res.TypedSpec().Value
+
+ return spec.Auth0.Enabled || spec.Webauthn.Enabled || spec.Saml.Enabled
+}
diff --git a/client/pkg/omni/resources/auth/identity.go b/client/pkg/omni/resources/auth/identity.go
new file mode 100644
index 000000000..1a98bc793
--- /dev/null
+++ b/client/pkg/omni/resources/auth/identity.go
@@ -0,0 +1,49 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package auth
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewIdentity creates a new Identity resource.
+func NewIdentity(ns, id string) *Identity {
+ return typed.NewResource[IdentitySpec, IdentityExtension](
+ resource.NewMetadata(ns, IdentityType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.IdentitySpec{}),
+ )
+}
+
+const (
+ // IdentityType is the type of Identity resource.
+ //
+ // tsgen:IdentityType
+ IdentityType = resource.Type("Identities.omni.sidero.dev")
+)
+
+// Identity resource describes a user identity.
+type Identity = typed.Resource[IdentitySpec, IdentityExtension]
+
+// IdentitySpec wraps specs.IdentitySpec.
+type IdentitySpec = protobuf.ResourceSpec[specs.IdentitySpec, *specs.IdentitySpec]
+
+// IdentityExtension providers auxiliary methods for Identity resource.
+type IdentityExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (IdentityExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: IdentityType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/auth/labels.go b/client/pkg/omni/resources/auth/labels.go
new file mode 100644
index 000000000..9bf14a3d2
--- /dev/null
+++ b/client/pkg/omni/resources/auth/labels.go
@@ -0,0 +1,32 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package auth
+
+const (
+ // SAMLLabelPrefix is the prefix added to all SAML attributes on the User resource.
+ // tsgen:SAMLLabelPrefix
+ SAMLLabelPrefix = "saml.omni.sidero.dev/"
+)
+
+const (
+ // LabelPublicKeyUserID is the label that defines the user ID of the public key.
+ LabelPublicKeyUserID = "user-id"
+
+ // LabelIdentityUserID is a label linking identity to the user.
+ // tsgen:LabelIdentityUserID
+ LabelIdentityUserID = "user-id"
+
+ // LabelIdentityTypeServiceAccount is set when the type of the identity is service account.
+ // tsgen:LabelIdentityTypeServiceAccount
+ LabelIdentityTypeServiceAccount = "type-service-account"
+)
+
+const (
+ // LabelSAMLRole is the roles attribute that is copied from SAML assertion.
+ LabelSAMLRole = SAMLLabelPrefix + "role"
+
+ // LabelSAMLGroups is the groups attribute that is copied from SAML assertion.
+ LabelSAMLGroups = SAMLLabelPrefix + "groups"
+)
diff --git a/client/pkg/omni/resources/auth/public_key.go b/client/pkg/omni/resources/auth/public_key.go
new file mode 100644
index 000000000..a1c3882df
--- /dev/null
+++ b/client/pkg/omni/resources/auth/public_key.go
@@ -0,0 +1,49 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package auth
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewPublicKey creates a new PublicKey resource.
+func NewPublicKey(ns, id string) *PublicKey {
+ return typed.NewResource[PublicKeySpec, PublicKeyExtension](
+ resource.NewMetadata(ns, PublicKeyType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.PublicKeySpec{}),
+ )
+}
+
+const (
+ // PublicKeyType is the type of PublicKey resource.
+ //
+ // tsgen:PublicKeyType
+ PublicKeyType = resource.Type("PublicKeys.omni.sidero.dev")
+)
+
+// PublicKey resource describes a user public key.
+type PublicKey = typed.Resource[PublicKeySpec, PublicKeyExtension]
+
+// PublicKeySpec wraps specs.PublicKeySpec.
+type PublicKeySpec = protobuf.ResourceSpec[specs.PublicKeySpec, *specs.PublicKeySpec]
+
+// PublicKeyExtension providers auxiliary methods for PublicKey resource.
+type PublicKeyExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (PublicKeyExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: PublicKeyType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/auth/saml_assertion.go b/client/pkg/omni/resources/auth/saml_assertion.go
new file mode 100644
index 000000000..a5c033e4d
--- /dev/null
+++ b/client/pkg/omni/resources/auth/saml_assertion.go
@@ -0,0 +1,47 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package auth
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewSAMLAssertion creates a new SAMLAssertion resource.
+func NewSAMLAssertion(ns, id string) *SAMLAssertion {
+ return typed.NewResource[SAMLAssertionSpec, SAMLAssertionExtension](
+ resource.NewMetadata(ns, SAMLAssertionType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.SAMLAssertionSpec{}),
+ )
+}
+
+const (
+ // SAMLAssertionType is the type of SAMLAssertion resource.
+ SAMLAssertionType = resource.Type("SAMLAssertions.omni.sidero.dev")
+)
+
+// SAMLAssertion resource describes SAML assertion.
+type SAMLAssertion = typed.Resource[SAMLAssertionSpec, SAMLAssertionExtension]
+
+// SAMLAssertionSpec wraps specs.SAMLAssertionSpec.
+type SAMLAssertionSpec = protobuf.ResourceSpec[specs.SAMLAssertionSpec, *specs.SAMLAssertionSpec]
+
+// SAMLAssertionExtension providers auxiliary methods for SAMLAssertion resource.
+type SAMLAssertionExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (SAMLAssertionExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: SAMLAssertionType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/auth/saml_label_rule.go b/client/pkg/omni/resources/auth/saml_label_rule.go
new file mode 100644
index 000000000..8464ff340
--- /dev/null
+++ b/client/pkg/omni/resources/auth/saml_label_rule.go
@@ -0,0 +1,58 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package auth
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewSAMLLabelRule creates a new SAMLLabelRule resource.
+func NewSAMLLabelRule(ns, id string) *SAMLLabelRule {
+ return typed.NewResource[SAMLLabelRuleSpec, SAMLLabelRuleExtension](
+ resource.NewMetadata(ns, SAMLLabelRuleType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.SAMLLabelRuleSpec{}),
+ )
+}
+
+const (
+ // SAMLLabelRuleType is the type of SAMLLabelRule resource.
+ //
+ // tsgen:SAMLLabelRuleType
+ SAMLLabelRuleType = resource.Type("SAMLLabelRules.omni.sidero.dev")
+)
+
+// SAMLLabelRule resource describes a SAML label rule.
+type SAMLLabelRule = typed.Resource[SAMLLabelRuleSpec, SAMLLabelRuleExtension]
+
+// SAMLLabelRuleSpec wraps specs.SAMLLabelRuleSpec.
+type SAMLLabelRuleSpec = protobuf.ResourceSpec[specs.SAMLLabelRuleSpec, *specs.SAMLLabelRuleSpec]
+
+// SAMLLabelRuleExtension providers auxiliary methods for SAMLLabelRule resource.
+type SAMLLabelRuleExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (SAMLLabelRuleExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: SAMLLabelRuleType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Role On Registration",
+ JSONPath: "{.assignroleonregistration}",
+ },
+ {
+ Name: "Match Labels",
+ JSONPath: "{.matchlabels}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/auth/user.go b/client/pkg/omni/resources/auth/user.go
new file mode 100644
index 000000000..83d3cdf51
--- /dev/null
+++ b/client/pkg/omni/resources/auth/user.go
@@ -0,0 +1,49 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package auth
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewUser creates a new User resource.
+func NewUser(ns, id string) *User {
+ return typed.NewResource[UserSpec, UserExtension](
+ resource.NewMetadata(ns, UserType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.UserSpec{}),
+ )
+}
+
+const (
+ // UserType is the type of User resource.
+ //
+ // tsgen:UserType
+ UserType = resource.Type("Users.omni.sidero.dev")
+)
+
+// User resource describes a user.
+type User = typed.Resource[UserSpec, UserExtension]
+
+// UserSpec wraps specs.UserSpec.
+type UserSpec = protobuf.ResourceSpec[specs.UserSpec, *specs.UserSpec]
+
+// UserExtension providers auxiliary methods for User resource.
+type UserExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (UserExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: UserType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/common/common.go b/client/pkg/omni/resources/common/common.go
new file mode 100644
index 000000000..421a8f9c8
--- /dev/null
+++ b/client/pkg/omni/resources/common/common.go
@@ -0,0 +1,30 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package common contains common variables related to resources.
+package common
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+
+ authres "github.com/siderolabs/omni/client/pkg/omni/resources/auth"
+ "github.com/siderolabs/omni/client/pkg/omni/resources/omni"
+)
+
+// UserManagedResourceTypes is a list of resource types that are managed by the user.
+var UserManagedResourceTypes = []resource.Type{
+ authres.IdentityType,
+ authres.UserType,
+ authres.AccessPolicyType,
+ authres.SAMLLabelRuleType,
+ omni.ClusterType,
+ omni.ConfigPatchType,
+ omni.EtcdManualBackupType,
+ omni.MachineClassType,
+ omni.MachineLabelsType,
+ omni.MachineSetType,
+ omni.MachineSetNodeType,
+ omni.EtcdBackupS3ConfType,
+ omni.SchematicConfigurationType,
+}
diff --git a/client/pkg/omni/resources/k8s/k8s.go b/client/pkg/omni/resources/k8s/k8s.go
new file mode 100644
index 000000000..451220d5d
--- /dev/null
+++ b/client/pkg/omni/resources/k8s/k8s.go
@@ -0,0 +1,12 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package k8s provides resources related to the Kubernetes.
+package k8s
+
+import "github.com/siderolabs/omni/client/pkg/omni/resources/registry"
+
+func init() {
+ registry.MustRegisterResource(KubernetesResourceType, &KubernetesResource{})
+}
diff --git a/client/pkg/omni/resources/k8s/kubernetes_resource.go b/client/pkg/omni/resources/k8s/kubernetes_resource.go
new file mode 100644
index 000000000..c0accbd61
--- /dev/null
+++ b/client/pkg/omni/resources/k8s/kubernetes_resource.go
@@ -0,0 +1,51 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package k8s contains Kubernetes resource wrapper.
+package k8s
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewKubernetesResource creates new cluster config version resource.
+func NewKubernetesResource(ns string, id resource.ID, spec KubernetesResourceSpec) *KubernetesResource {
+ return typed.NewResource[KubernetesResourceSpec, KubernetesResourceExtension](
+ resource.NewMetadata(ns, KubernetesResourceType, id, resource.VersionUndefined),
+ spec,
+ )
+}
+
+// KubernetesResourceType is the type of KubernetesResource resource.
+//
+// tsgen:KubernetesResourceType
+const KubernetesResourceType = resource.Type("KubernetesResources.omni.sidero.dev")
+
+// KubernetesResource wraps the Kubernetes Resource.
+type KubernetesResource = typed.Resource[KubernetesResourceSpec, KubernetesResourceExtension]
+
+// KubernetesResourceSpec wraps specs.KubernetesResourceSpec.
+type KubernetesResourceSpec string
+
+// DeepCopy implements DeepCopyable interface.
+func (s KubernetesResourceSpec) DeepCopy() KubernetesResourceSpec {
+ return s
+}
+
+// KubernetesResourceExtension provides auxiliary methods for KubernetesResource.
+type KubernetesResourceExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (KubernetesResourceExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: KubernetesResourceType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/oidc/jwt_public_key.go b/client/pkg/omni/resources/oidc/jwt_public_key.go
new file mode 100644
index 000000000..f768304f0
--- /dev/null
+++ b/client/pkg/omni/resources/oidc/jwt_public_key.go
@@ -0,0 +1,43 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package oidc
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+)
+
+// NewJWTPublicKey creates new JWTPublicKey state.
+func NewJWTPublicKey(ns, id string) *JWTPublicKey {
+ return typed.NewResource[JWTPublicKeySpec, JWTPublicKeyExtension](
+ resource.NewMetadata(ns, JWTPublicKeyType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.JWTPublicKeySpec{}),
+ )
+}
+
+// JWTPublicKeyType is the type of JWTPublicKey resource.
+const JWTPublicKeyType = resource.Type("JWTPublicKeys.system.sidero.dev")
+
+// JWTPublicKey resource describes current DB version (migrations state).
+type JWTPublicKey = typed.Resource[JWTPublicKeySpec, JWTPublicKeyExtension]
+
+// JWTPublicKeySpec wraps specs.JWTPublicKeySpec.
+type JWTPublicKeySpec = protobuf.ResourceSpec[specs.JWTPublicKeySpec, *specs.JWTPublicKeySpec]
+
+// JWTPublicKeyExtension providers auxiliary methods for JWTPublicKey resource.
+type JWTPublicKeyExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (JWTPublicKeyExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: JWTPublicKeyType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: NamespaceName,
+ }
+}
diff --git a/client/pkg/omni/resources/oidc/oidc.go b/client/pkg/omni/resources/oidc/oidc.go
new file mode 100644
index 000000000..987a3612c
--- /dev/null
+++ b/client/pkg/omni/resources/oidc/oidc.go
@@ -0,0 +1,19 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package oidc provides resources related to the OpenID provider.
+package oidc
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+
+ "github.com/siderolabs/omni/client/pkg/omni/resources/registry"
+)
+
+// NamespaceName is the namespace for OIDC resources.
+const NamespaceName resource.Namespace = "oidc"
+
+func init() {
+ registry.MustRegisterResource(JWTPublicKeyType, &JWTPublicKey{})
+}
diff --git a/client/pkg/omni/resources/omni/annotations.go b/client/pkg/omni/resources/omni/annotations.go
new file mode 100644
index 000000000..cdd078d29
--- /dev/null
+++ b/client/pkg/omni/resources/omni/annotations.go
@@ -0,0 +1,23 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+const (
+ // MachineLocked locks any updates on a machine set node.
+ // tsgen:MachineLocked
+ MachineLocked = SystemLabelPrefix + "locked"
+
+ // ResourceManagedByClusterTemplates is an annotation which indicates that a resource is managed by cluster templates.
+ // tsgen:ResourceManagedByClusterTemplates
+ ResourceManagedByClusterTemplates = SystemLabelPrefix + "managed-by-cluster-templates"
+
+ // ConfigPatchName human readable patch name.
+ // tsgen:ConfigPatchName
+ ConfigPatchName = "name"
+
+ // ConfigPatchDescription human readable patch description.
+ // tsgen:ConfigPatchDescription
+ ConfigPatchDescription = "description"
+)
diff --git a/client/pkg/omni/resources/omni/backup_conf.go b/client/pkg/omni/resources/omni/backup_conf.go
new file mode 100644
index 000000000..9a724b39a
--- /dev/null
+++ b/client/pkg/omni/resources/omni/backup_conf.go
@@ -0,0 +1,74 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewEtcdBackupS3Conf creates new resource which holds for backup s3 configuration.
+func NewEtcdBackupS3Conf() *EtcdBackupS3Conf {
+ return typed.NewResource[EtcdBackupS3ConfSpec, EtcdBackupS3ConfExtension](
+ resource.NewMetadata(resources.DefaultNamespace, EtcdBackupS3ConfType, EtcdBackupS3ConfID, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.EtcdBackupS3ConfSpec{}),
+ )
+}
+
+const (
+ // EtcdBackupS3ConfID is the ID of the EtcdBackupS3Conf resource.
+ // tsgen:EtcdBackupS3ConfID
+ EtcdBackupS3ConfID = resource.ID("etcd-backup-s3-conf")
+
+ // EtcdBackupS3ConfType is the type of the EtcdBackupS3Conf resource.
+ // tsgen:EtcdBackupS3ConfType
+ EtcdBackupS3ConfType = resource.Type("EtcdBackupS3Configs.omni.sidero.dev")
+)
+
+// EtcdBackupS3Conf describes data needed for the etcd backup.
+type EtcdBackupS3Conf = typed.Resource[EtcdBackupS3ConfSpec, EtcdBackupS3ConfExtension]
+
+// EtcdBackupS3ConfSpec wraps specs.EtcdBackupS3ConfSpec.
+type EtcdBackupS3ConfSpec = protobuf.ResourceSpec[specs.EtcdBackupS3ConfSpec, *specs.EtcdBackupS3ConfSpec]
+
+// EtcdBackupS3ConfExtension provides auxiliary methods for EtcdBackupS3Conf resource.
+type EtcdBackupS3ConfExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (EtcdBackupS3ConfExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: EtcdBackupS3ConfType,
+ DefaultNamespace: resources.DefaultNamespace,
+ Aliases: []resource.Type{},
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Bucket",
+ JSONPath: "{.bucket}",
+ },
+ {
+ Name: "Region",
+ JSONPath: "{.region}",
+ },
+ {
+ Name: "Endpoint",
+ JSONPath: "{.endpoint}",
+ },
+ {
+ Name: "Access Key ID",
+ JSONPath: "{.accesskeyid}",
+ },
+ {
+ Name: "Session Token",
+ JSONPath: "{.sessiontoken}",
+ },
+ },
+ Sensitivity: meta.Sensitive,
+ }
+}
diff --git a/client/pkg/omni/resources/omni/backup_data.go b/client/pkg/omni/resources/omni/backup_data.go
new file mode 100644
index 000000000..0ad30d471
--- /dev/null
+++ b/client/pkg/omni/resources/omni/backup_data.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewBackupData creates new resource which holds data for the next etcd backup.
+func NewBackupData(id resource.ID) *BackupData {
+ return typed.NewResource[BackupDataSpec, BackupDataExtension](
+ resource.NewMetadata(resources.DefaultNamespace, BackupDataType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.BackupDataSpec{}),
+ )
+}
+
+const (
+ // BackupDataType is the type of the BackupData resource.
+ // tsgen:BackupDataType
+ BackupDataType = resource.Type("BackupDatas.omni.sidero.dev")
+)
+
+// BackupData describes data needed for the etcd backup.
+type BackupData = typed.Resource[BackupDataSpec, BackupDataExtension]
+
+// BackupDataSpec wraps specs.BackupDataSpec.
+type BackupDataSpec = protobuf.ResourceSpec[specs.BackupDataSpec, *specs.BackupDataSpec]
+
+// BackupDataExtension provides auxiliary methods for BackupData resource.
+type BackupDataExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (BackupDataExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: BackupDataType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster.go b/client/pkg/omni/resources/omni/cluster.go
new file mode 100644
index 000000000..7d914ec9a
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster.go
@@ -0,0 +1,74 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "fmt"
+ "net/url"
+ "path/filepath"
+ "strings"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewCluster creates new cluster resource.
+func NewCluster(ns string, id resource.ID) *Cluster {
+ return typed.NewResource[ClusterSpec, ClusterExtension](
+ resource.NewMetadata(ns, ClusterType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterSpec{}),
+ )
+}
+
+const (
+ // ClusterType is the type of the Cluster resource.
+ // tsgen:ClusterType
+ ClusterType = resource.Type("Clusters.omni.sidero.dev")
+)
+
+// Cluster describes client config for Talos API.
+type Cluster = typed.Resource[ClusterSpec, ClusterExtension]
+
+// ClusterSpec wraps specs.ClusterSpec.
+type ClusterSpec = protobuf.ResourceSpec[specs.ClusterSpec, *specs.ClusterSpec]
+
+// ClusterExtension provides auxiliary methods for Cluster resource.
+type ClusterExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
+
+// GetInstallImage extracts Talos version from the cluster resource and adds the installer image url.
+func GetInstallImage(vanillaInstallerBaseURL, factoryBaseURL, schematic, version string) (string, error) {
+ version = strings.TrimLeft(version, "v")
+
+ if schematic == "" {
+ return fmt.Sprintf("%s:v%s", vanillaInstallerBaseURL, version), nil
+ }
+
+ u, err := url.Parse(factoryBaseURL)
+ if err != nil {
+ return "", fmt.Errorf("failed to parse image factory url %w", err)
+ }
+
+ return filepath.Join(u.Host, "installer", fmt.Sprintf("%s:v%s", schematic, version)), nil
+}
+
+// GetEncryptionEnabled returns cluster disk encryption feature flag state.
+func GetEncryptionEnabled(cluster *Cluster) bool {
+ return cluster.TypedSpec().Value.Features != nil && cluster.TypedSpec().Value.Features.DiskEncryption
+}
diff --git a/client/pkg/omni/resources/omni/cluster_bootstrap_status.go b/client/pkg/omni/resources/omni/cluster_bootstrap_status.go
new file mode 100644
index 000000000..9405da990
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_bootstrap_status.go
@@ -0,0 +1,53 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterBootstrapStatus creates new cluster bootstrap status resource.
+func NewClusterBootstrapStatus(ns string, id resource.ID) *ClusterBootstrapStatus {
+ return typed.NewResource[ClusterBootstrapStatusSpec, ClusterBootstrapStatusExtension](
+ resource.NewMetadata(ns, ClusterBootstrapStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterBootstrapStatusSpec{}),
+ )
+}
+
+const (
+ // ClusterBootstrapStatusType is the type of the ClusterMachineConfigStatus resource.
+ // tsgen:ClusterBootstrapStatusType
+ ClusterBootstrapStatusType = resource.Type("ClusterBootstrapStatuses.omni.sidero.dev")
+)
+
+// ClusterBootstrapStatus describes a cluster machine status.
+type ClusterBootstrapStatus = typed.Resource[ClusterBootstrapStatusSpec, ClusterBootstrapStatusExtension]
+
+// ClusterBootstrapStatusSpec wraps specs.ClusterBootstrapStatusSpec.
+type ClusterBootstrapStatusSpec = protobuf.ResourceSpec[specs.ClusterBootstrapStatusSpec, *specs.ClusterBootstrapStatusSpec]
+
+// ClusterBootstrapStatusExtension provides auxiliary methods for ClusterBootstrapStatus resource.
+type ClusterBootstrapStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterBootstrapStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterBootstrapStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Bootstrapped",
+ JSONPath: "{.bootstrapped}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster_config_version.go b/client/pkg/omni/resources/omni/cluster_config_version.go
new file mode 100644
index 000000000..f423b3327
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_config_version.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterConfigVersion creates new cluster config version resource.
+func NewClusterConfigVersion(ns string, id resource.ID) *ClusterConfigVersion {
+ return typed.NewResource[ClusterConfigVersionSpec, ClusterConfigVersionExtension](
+ resource.NewMetadata(ns, ClusterConfigVersionType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterConfigVersionSpec{}),
+ )
+}
+
+const (
+ // ClusterConfigVersionType is the type of the ClusterConfigVersion resource.
+ // tsgen:ClusterConfigVersionType
+ ClusterConfigVersionType = resource.Type("ClusterConfigVersions.omni.sidero.dev")
+)
+
+// ClusterConfigVersion contains the version contract for the time when the cluster was created initially.
+type ClusterConfigVersion = typed.Resource[ClusterConfigVersionSpec, ClusterConfigVersionExtension]
+
+// ClusterConfigVersionSpec wraps specs.ClusterConfigVersionSpec.
+type ClusterConfigVersionSpec = protobuf.ResourceSpec[specs.ClusterConfigVersionSpec, *specs.ClusterConfigVersionSpec]
+
+// ClusterConfigVersionExtension provides auxiliary methods for ClusterConfigVersion resource.
+type ClusterConfigVersionExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterConfigVersionExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterConfigVersionType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: nil,
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster_destroy_status.go b/client/pkg/omni/resources/omni/cluster_destroy_status.go
new file mode 100644
index 000000000..2f96de165
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_destroy_status.go
@@ -0,0 +1,53 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterDestroyStatus creates new cluster destroy status.
+func NewClusterDestroyStatus(ns string, id resource.ID) *ClusterDestroyStatus {
+ return typed.NewResource[ClusterDestroyStatusSpec, ClusterDestroyStatusExtension](
+ resource.NewMetadata(ns, ClusterDestroyStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.DestroyStatusSpec{}),
+ )
+}
+
+const (
+ // ClusterDestroyStatusType is the type of the ClusterDestroyStatus resource.
+ // tsgen:ClusterDestroyStatusType
+ ClusterDestroyStatusType = resource.Type("ClusterDestroyStatuses.omni.sidero.dev")
+)
+
+// ClusterDestroyStatus contains the state of cluster destroy for clusters in TearingDown phase.
+type ClusterDestroyStatus = typed.Resource[ClusterDestroyStatusSpec, ClusterDestroyStatusExtension]
+
+// ClusterDestroyStatusSpec wraps specs.ClusterDestroyStatusSpec.
+type ClusterDestroyStatusSpec = protobuf.ResourceSpec[specs.DestroyStatusSpec, *specs.DestroyStatusSpec]
+
+// ClusterDestroyStatusExtension provides auxiliary methods for ClusterDestroyStatus resource.
+type ClusterDestroyStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterDestroyStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterDestroyStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Phase",
+ JSONPath: "{.phase}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster_endpoint.go b/client/pkg/omni/resources/omni/cluster_endpoint.go
new file mode 100644
index 000000000..78010d580
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_endpoint.go
@@ -0,0 +1,53 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterEndpoint creates new cluster machine status resource.
+func NewClusterEndpoint(ns string, id resource.ID) *ClusterEndpoint {
+ return typed.NewResource[ClusterEndpointSpec, ClusterEndpointExtension](
+ resource.NewMetadata(ns, ClusterEndpointType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterEndpointSpec{}),
+ )
+}
+
+const (
+ // ClusterEndpointType is the type of the ClusterEndpoint resource.
+ // tsgen:ClusterEndpointType
+ ClusterEndpointType = resource.Type("ClusterEndpoints.omni.sidero.dev")
+)
+
+// ClusterEndpoint contains the summary for the cluster health, availability, number of nodes.
+type ClusterEndpoint = typed.Resource[ClusterEndpointSpec, ClusterEndpointExtension]
+
+// ClusterEndpointSpec wraps specs.ClusterEndpointSpec.
+type ClusterEndpointSpec = protobuf.ResourceSpec[specs.ClusterEndpointSpec, *specs.ClusterEndpointSpec]
+
+// ClusterEndpointExtension provides auxiliary methods for ClusterEndpoint resource.
+type ClusterEndpointExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterEndpointExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterEndpointType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Endpoints",
+ JSONPath: "{.managementaddresses}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster_machine.go b/client/pkg/omni/resources/omni/cluster_machine.go
new file mode 100644
index 000000000..cc9ece199
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_machine.go
@@ -0,0 +1,46 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterMachine creates new cluster machine resource.
+func NewClusterMachine(ns string, id resource.ID) *ClusterMachine {
+ return typed.NewResource[ClusterMachineSpec, ClusterMachineExtension](
+ resource.NewMetadata(ns, ClusterMachineType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterMachineSpec{}),
+ )
+}
+
+// ClusterMachineType is the type of the ClusterMachine resource.
+// tsgen:ClusterMachineType
+const ClusterMachineType = resource.Type("ClusterMachines.omni.sidero.dev")
+
+// ClusterMachine describes a machine belonging to a cluster.
+type ClusterMachine = typed.Resource[ClusterMachineSpec, ClusterMachineExtension]
+
+// ClusterMachineSpec wraps specs.ClusterMachineSpec.
+type ClusterMachineSpec = protobuf.ResourceSpec[specs.ClusterMachineSpec, *specs.ClusterMachineSpec]
+
+// ClusterMachineExtension provides auxiliary methods for ClusterMachine resource.
+type ClusterMachineExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterMachineExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterMachineType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster_machine_config.go b/client/pkg/omni/resources/omni/cluster_machine_config.go
new file mode 100644
index 000000000..d5e7620b1
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_machine_config.go
@@ -0,0 +1,49 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterMachineConfig creates new cluster machine config resource.
+func NewClusterMachineConfig(ns string, id resource.ID) *ClusterMachineConfig {
+ return typed.NewResource[ClusterMachineConfigSpec, ClusterMachineConfigExtension](
+ resource.NewMetadata(ns, ClusterMachineConfigType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterMachineConfigSpec{}),
+ )
+}
+
+const (
+ // ClusterMachineConfigType is the type of the ClusterMachineConfig resource.
+ // tsgen:ClusterMachineConfigType
+ ClusterMachineConfigType = resource.Type("ClusterMachineConfigs.omni.sidero.dev")
+)
+
+// ClusterMachineConfig is the final machine config generated from the template, cluster machine, loadbalancer status
+// and siderolink config.
+type ClusterMachineConfig = typed.Resource[ClusterMachineConfigSpec, ClusterMachineConfigExtension]
+
+// ClusterMachineConfigSpec wraps specs.ClusterMachineConfigSpec.
+type ClusterMachineConfigSpec = protobuf.ResourceSpec[specs.ClusterMachineConfigSpec, *specs.ClusterMachineConfigSpec]
+
+// ClusterMachineConfigExtension provides auxiliary methods for ClusterMachineConfig resource.
+type ClusterMachineConfigExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterMachineConfigExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterMachineConfigType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster_machine_config_patches.go b/client/pkg/omni/resources/omni/cluster_machine_config_patches.go
new file mode 100644
index 000000000..02531d952
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_machine_config_patches.go
@@ -0,0 +1,46 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterMachineConfigPatches creates new cluster machine config patches resource.
+func NewClusterMachineConfigPatches(ns string, id resource.ID) *ClusterMachineConfigPatches {
+ return typed.NewResource[ClusterMachineConfigPatchesSpec, ClusterMachineConfigPatchesExtension](
+ resource.NewMetadata(ns, ClusterMachineConfigPatchesType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterMachineConfigPatchesSpec{}),
+ )
+}
+
+// ClusterMachineConfigPatchesType is the type of the ClusterMachineConfigPatches resource.
+// tsgen:ClusterMachineConfigPatchesType
+const ClusterMachineConfigPatchesType = resource.Type("ClusterMachineConfigPatches.omni.sidero.dev")
+
+// ClusterMachineConfigPatches describes a config patch list related to the cluster machine.
+type ClusterMachineConfigPatches = typed.Resource[ClusterMachineConfigPatchesSpec, ClusterMachineConfigPatchesExtension]
+
+// ClusterMachineConfigPatchesSpec wraps specs.ClusterMachineConfigPatchesSpec.
+type ClusterMachineConfigPatchesSpec = protobuf.ResourceSpec[specs.ClusterMachineConfigPatchesSpec, *specs.ClusterMachineConfigPatchesSpec]
+
+// ClusterMachineConfigPatchesExtension provides auxiliary methods for ClusterMachineConfigPatches resource.
+type ClusterMachineConfigPatchesExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterMachineConfigPatchesExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterMachineConfigPatchesType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster_machine_config_patches_test.go b/client/pkg/omni/resources/omni/cluster_machine_config_patches_test.go
new file mode 100644
index 000000000..f17e5ce91
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_machine_config_patches_test.go
@@ -0,0 +1,86 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni_test
+
+import (
+ "fmt"
+ "testing"
+ "time"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/siderolabs/gen/xtesting/must"
+ "github.com/stretchr/testify/require"
+ "gopkg.in/yaml.v3"
+
+ "github.com/siderolabs/omni/client/pkg/omni/resources/omni"
+)
+
+const (
+ newLineAndText = `
+ master: 2
+ workers: 3`
+
+ justText = `master: 1
+text: "test"`
+)
+
+func TestClusterMachineConfigPatchesSpecW_marshal(t *testing.T) {
+ original := omni.NewClusterMachineConfigPatches("default", "1")
+ original.TypedSpec().Value.Patches = []string{newLineAndText, justText}
+
+ out := must.Value(yaml.Marshal(must.Value(resource.MarshalYAML(original))(t)))(t)
+
+ var dest protobuf.YAMLResource
+
+ err := yaml.Unmarshal(out, &dest)
+ require.NoError(t, err)
+
+ fmt.Println(string(out))
+
+ if !resource.Equal(original, dest.Resource()) {
+ t.Log("original -->", string(must.Value(yaml.Marshal(original.Spec()))(t)))
+ t.Log("result -->", string(must.Value(yaml.Marshal(dest.Resource().Spec()))(t)))
+ t.FailNow()
+ }
+}
+
+func ExampleClusterMachineSpec_marshal() {
+ original := omni.NewClusterMachineConfigPatches("default", "1")
+ original.TypedSpec().Value.Patches = []string{newLineAndText, justText}
+
+ current := time.Date(2022, 12, 9, 0, 0, 0, 0, time.UTC)
+ original.Metadata().SetCreated(current)
+ original.Metadata().SetUpdated(current)
+
+ wrap, err := resource.MarshalYAML(original)
+ if err != nil {
+ panic(err)
+ }
+
+ out, err := yaml.Marshal(wrap)
+ if err != nil {
+ panic(err)
+ }
+
+ fmt.Println(string(out))
+
+ // Output:
+ // metadata:
+ // namespace: default
+ // type: ClusterMachineConfigPatches.omni.sidero.dev
+ // id: 1
+ // version: undefined
+ // owner:
+ // phase: running
+ // created: 2022-12-09T00:00:00Z
+ // updated: 2022-12-09T00:00:00Z
+ // spec:
+ // patches:
+ // - "\n master: 2\n\tworkers: 3"
+ // - |-
+ // master: 1
+ // text: "test"
+}
diff --git a/client/pkg/omni/resources/omni/cluster_machine_config_status.go b/client/pkg/omni/resources/omni/cluster_machine_config_status.go
new file mode 100644
index 000000000..3e41b96e0
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_machine_config_status.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterMachineConfigStatus creates new cluster machine status resource.
+func NewClusterMachineConfigStatus(ns string, id resource.ID) *ClusterMachineConfigStatus {
+ return typed.NewResource[ClusterMachineConfigStatusSpec, ClusterMachineConfigStatusExtension](
+ resource.NewMetadata(ns, ClusterMachineConfigStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterMachineConfigStatusSpec{}),
+ )
+}
+
+const (
+ // ClusterMachineConfigStatusType is the type of the ClusterMachineConfigStatus resource.
+ // tsgen:ClusterMachineConfigStatusType
+ ClusterMachineConfigStatusType = resource.Type("ClusterMachineConfigStatuses.omni.sidero.dev")
+)
+
+// ClusterMachineConfigStatus describes a cluster machine status.
+type ClusterMachineConfigStatus = typed.Resource[ClusterMachineConfigStatusSpec, ClusterMachineConfigStatusExtension]
+
+// ClusterMachineConfigStatusSpec wraps specs.ClusterMachineConfigStatusSpec.
+type ClusterMachineConfigStatusSpec = protobuf.ResourceSpec[specs.ClusterMachineConfigStatusSpec, *specs.ClusterMachineConfigStatusSpec]
+
+// ClusterMachineConfigStatusExtension provides auxiliary methods for ClusterMachineConfigStatus resource.
+type ClusterMachineConfigStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterMachineConfigStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterMachineConfigStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster_machine_encryption_key.go b/client/pkg/omni/resources/omni/cluster_machine_encryption_key.go
new file mode 100644
index 000000000..02dc55731
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_machine_encryption_key.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterMachineEncryptionKey creates new cluster machine encryption key resource.
+func NewClusterMachineEncryptionKey(ns string, id resource.ID) *ClusterMachineEncryptionKey {
+ return typed.NewResource[ClusterMachineEncryptionKeySpec, ClusterMachineEncryptionKeyExtension](
+ resource.NewMetadata(ns, ClusterMachineEncryptionKeyType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterMachineEncryptionKeySpec{}),
+ )
+}
+
+const (
+ // ClusterMachineEncryptionKeyType is the type of the ClusterMachineEncryptionKey resource.
+ // tsgen:ClusterMachineEncryptionKeyType
+ ClusterMachineEncryptionKeyType = resource.Type("ClusterMachineEncryptionKeys.omni.sidero.dev")
+)
+
+// ClusterMachineEncryptionKey is the generated AES256 encryption key.
+type ClusterMachineEncryptionKey = typed.Resource[ClusterMachineEncryptionKeySpec, ClusterMachineEncryptionKeyExtension]
+
+// ClusterMachineEncryptionKeySpec wraps specs.ClusterMachineEncryptionKeySpec.
+type ClusterMachineEncryptionKeySpec = protobuf.ResourceSpec[specs.ClusterMachineEncryptionKeySpec, *specs.ClusterMachineEncryptionKeySpec]
+
+// ClusterMachineEncryptionKeyExtension provides auxiliary methods for ClusterMachineEncryptionKey resource.
+type ClusterMachineEncryptionKeyExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterMachineEncryptionKeyExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterMachineEncryptionKeyType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster_machine_identity.go b/client/pkg/omni/resources/omni/cluster_machine_identity.go
new file mode 100644
index 000000000..e855136bc
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_machine_identity.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterMachineIdentity creates new cluster machine identity resource.
+func NewClusterMachineIdentity(ns string, id resource.ID) *ClusterMachineIdentity {
+ return typed.NewResource[ClusterMachineIdentitySpec, ClusterMachineIdentityExtension](
+ resource.NewMetadata(ns, ClusterMachineIdentityType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterMachineIdentitySpec{}),
+ )
+}
+
+const (
+ // ClusterMachineIdentityType is the type of the ClusterMachineIdentity resource.
+ // tsgen:ClusterMachineIdentityType
+ ClusterMachineIdentityType = resource.Type("ClusterMachineIdentities.omni.sidero.dev")
+)
+
+// ClusterMachineIdentity contains machine identifiers when it's part of a cluster.
+type ClusterMachineIdentity = typed.Resource[ClusterMachineIdentitySpec, ClusterMachineIdentityExtension]
+
+// ClusterMachineIdentitySpec wraps specs.ClusterMachineIdentitySpec.
+type ClusterMachineIdentitySpec = protobuf.ResourceSpec[specs.ClusterMachineIdentitySpec, *specs.ClusterMachineIdentitySpec]
+
+// ClusterMachineIdentityExtension provides auxiliary methods for ClusterMachineIdentity resource.
+type ClusterMachineIdentityExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterMachineIdentityExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterMachineIdentityType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster_machine_installer_options.go b/client/pkg/omni/resources/omni/cluster_machine_installer_options.go
new file mode 100644
index 000000000..33551aa2e
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_machine_installer_options.go
@@ -0,0 +1,47 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterMachineTalosVersion creates a new ClusterMachineTalosVersion state.
+func NewClusterMachineTalosVersion(ns, id string) *ClusterMachineTalosVersion {
+ return typed.NewResource[ClusterMachineTalosVersionSpec, ClusterMachineTalosVersionExtension](
+ resource.NewMetadata(ns, ClusterMachineTalosVersionType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterMachineTalosVersionSpec{}),
+ )
+}
+
+// ClusterMachineTalosVersionType is the type of the ClusterMachineTalosVersion resource.
+//
+// tsgen:ClusterMachineTalosVersionType
+const ClusterMachineTalosVersionType = resource.Type("ClusterMachineTalosVersions.omni.sidero.dev")
+
+// ClusterMachineTalosVersion resource holds information about a machine relevant to its membership in a cluster.
+type ClusterMachineTalosVersion = typed.Resource[ClusterMachineTalosVersionSpec, ClusterMachineTalosVersionExtension]
+
+// ClusterMachineTalosVersionSpec wraps specs.ClusterMachineTalosVersionSpec.
+type ClusterMachineTalosVersionSpec = protobuf.ResourceSpec[specs.ClusterMachineTalosVersionSpec, *specs.ClusterMachineTalosVersionSpec]
+
+// ClusterMachineTalosVersionExtension providers auxiliary methods for ClusterMachineTalosVersion resource.
+type ClusterMachineTalosVersionExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterMachineTalosVersionExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterMachineTalosVersionType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster_machine_status.go b/client/pkg/omni/resources/omni/cluster_machine_status.go
new file mode 100644
index 000000000..007e6b44c
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_machine_status.go
@@ -0,0 +1,60 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterMachineStatus creates a new ClusterMachineStatus state.
+func NewClusterMachineStatus(ns, id string) *ClusterMachineStatus {
+ return typed.NewResource[ClusterMachineStatusSpec, ClusterMachineStatusExtension](
+ resource.NewMetadata(ns, ClusterMachineStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterMachineStatusSpec{}),
+ )
+}
+
+// ClusterMachineStatusType is the type of the ClusterMachineStatus resource.
+//
+// tsgen:ClusterMachineStatusType
+const ClusterMachineStatusType = resource.Type("ClusterMachineStatuses.omni.sidero.dev")
+
+// ClusterMachineStatus resource holds information about a machine relevant to its membership in a cluster.
+type ClusterMachineStatus = typed.Resource[ClusterMachineStatusSpec, ClusterMachineStatusExtension]
+
+// ClusterMachineStatusSpec wraps specs.ClusterMachineStatusSpec.
+type ClusterMachineStatusSpec = protobuf.ResourceSpec[specs.ClusterMachineStatusSpec, *specs.ClusterMachineStatusSpec]
+
+// ClusterMachineStatusExtension providers auxiliary methods for ClusterMachineStatus resource.
+type ClusterMachineStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterMachineStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterMachineStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Ready",
+ JSONPath: "{.ready}",
+ },
+ {
+ Name: "Stage",
+ JSONPath: "{.stage}",
+ },
+ {
+ Name: "apid",
+ JSONPath: "{.apidavailable}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster_machine_template.go b/client/pkg/omni/resources/omni/cluster_machine_template.go
new file mode 100644
index 000000000..edfd21914
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_machine_template.go
@@ -0,0 +1,62 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterMachineTemplate creates new cluster machine status resource.
+func NewClusterMachineTemplate(ns string, id resource.ID) *ClusterMachineTemplate {
+ return typed.NewResource[ClusterMachineTemplateSpec, ClusterMachineTemplateExtension](
+ resource.NewMetadata(ns, ClusterMachineTemplateType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterMachineTemplateSpec{}),
+ )
+}
+
+const (
+ // ClusterMachineTemplateType is the type of the ClusterMachineTemplate resource.
+ // tsgen:ClusterMachineTemplateType
+ ClusterMachineTemplateType = resource.Type("ClusterMachineTemplates.omni.sidero.dev")
+)
+
+// ClusterMachineTemplate describes a cluster machine config generation template
+// It's similar to generate.Input struct in the Talos repo.
+type ClusterMachineTemplate = typed.Resource[ClusterMachineTemplateSpec, ClusterMachineTemplateExtension]
+
+// ClusterMachineTemplateSpec wraps specs.ClusterMachineTemplateSpec.
+type ClusterMachineTemplateSpec = protobuf.ResourceSpec[specs.ClusterMachineTemplateSpec, *specs.ClusterMachineTemplateSpec]
+
+// ClusterMachineTemplateExtension provides auxiliary methods for ClusterMachineTemplate resource.
+type ClusterMachineTemplateExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterMachineTemplateExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterMachineTemplateType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "InstallImage",
+ JSONPath: "{.installimage}",
+ },
+ {
+ Name: "Kubernetes",
+ JSONPath: "{.kubernetesversion}",
+ },
+ {
+ Name: "Disk",
+ JSONPath: "{.installdisk}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster_status.go b/client/pkg/omni/resources/omni/cluster_status.go
new file mode 100644
index 000000000..665e663dc
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_status.go
@@ -0,0 +1,65 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterStatus creates new cluster machine status resource.
+func NewClusterStatus(ns string, id resource.ID) *ClusterStatus {
+ return typed.NewResource[ClusterStatusSpec, ClusterStatusExtension](
+ resource.NewMetadata(ns, ClusterStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterStatusSpec{}),
+ )
+}
+
+const (
+ // ClusterStatusType is the type of the ClusterStatus resource.
+ // tsgen:ClusterStatusType
+ ClusterStatusType = resource.Type("ClusterStatuses.omni.sidero.dev")
+)
+
+// ClusterStatus contains the summary for the cluster health, availability, number of nodes.
+type ClusterStatus = typed.Resource[ClusterStatusSpec, ClusterStatusExtension]
+
+// ClusterStatusSpec wraps specs.ClusterStatusSpec.
+type ClusterStatusSpec = protobuf.ResourceSpec[specs.ClusterStatusSpec, *specs.ClusterStatusSpec]
+
+// ClusterStatusExtension provides auxiliary methods for ClusterStatus resource.
+type ClusterStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Available",
+ JSONPath: "{.available}",
+ },
+ {
+ Name: "Phase",
+ JSONPath: "{.phase}",
+ },
+ {
+ Name: "Machines",
+ JSONPath: "{.machines.total}",
+ },
+ {
+ Name: "Healthy",
+ JSONPath: "{.machines.healthy}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/cluster_uuid.go b/client/pkg/omni/resources/omni/cluster_uuid.go
new file mode 100644
index 000000000..7ea11f4c3
--- /dev/null
+++ b/client/pkg/omni/resources/omni/cluster_uuid.go
@@ -0,0 +1,53 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterUUID creates new cluster UUID resource.
+func NewClusterUUID(id resource.ID) *ClusterUUID {
+ return typed.NewResource[ClusterUUIDSpec, ClusterUUIDExtension](
+ resource.NewMetadata(resources.DefaultNamespace, ClusterUUIDType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterUUID{}),
+ )
+}
+
+const (
+ // ClusterUUIDType is the type of the Cluster UUID resource.
+ // tsgen:ClusterUUIDType
+ ClusterUUIDType = resource.Type("ClusterUUIDs.omni.sidero.dev")
+)
+
+// ClusterUUID describes cluster UUID attached to cluster.
+type ClusterUUID = typed.Resource[ClusterUUIDSpec, ClusterUUIDExtension]
+
+// ClusterUUIDSpec wraps specs.ClusterUUID.
+type ClusterUUIDSpec = protobuf.ResourceSpec[specs.ClusterUUID, *specs.ClusterUUID]
+
+// ClusterUUIDExtension provides auxiliary methods for ClusterUUID resource.
+type ClusterUUIDExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterUUIDExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterUUIDType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "UUID",
+ JSONPath: "{.uuid}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/config_patch.go b/client/pkg/omni/resources/omni/config_patch.go
new file mode 100644
index 000000000..ff462ef5f
--- /dev/null
+++ b/client/pkg/omni/resources/omni/config_patch.go
@@ -0,0 +1,148 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+ "github.com/hashicorp/go-multierror"
+ "github.com/siderolabs/gen/pair"
+ "github.com/siderolabs/talos/pkg/machinery/config/configloader"
+ talosrole "github.com/siderolabs/talos/pkg/machinery/role"
+ "gopkg.in/yaml.v3"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+var forbiddenFields = []string{
+ "cluster.clusterName",
+ "cluster.id",
+ "cluster.controlPlane.endpoint",
+ "cluster.token",
+ "cluster.secret",
+ "cluster.aescbcEncryptionSecret",
+ "cluster.secretboxEncryptionSecret",
+ "machine.token",
+ "machine.ca",
+ "machine.type",
+ "machine.install.extensions",
+}
+
+var forbiddenSliceElements = map[string]map[any]struct{}{
+ "machine.features.kubernetesTalosAPIAccess.allowedRoles": {
+ string(talosrole.Admin): {},
+ },
+}
+
+// NewConfigPatch creates new ConfigPatch resource.
+func NewConfigPatch(ns string, id resource.ID, labels ...pair.Pair[string, string]) *ConfigPatch {
+ res := typed.NewResource[ConfigPatchSpec, ConfigPatchExtension](
+ resource.NewMetadata(ns, ConfigPatchType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ConfigPatchSpec{}),
+ )
+
+ for _, label := range labels {
+ res.Metadata().Labels().Set(label.F1, label.F2)
+ }
+
+ return res
+}
+
+const (
+ // ConfigPatchType is the type of the ConfigPatch resource.
+ // tsgen:ConfigPatchType
+ ConfigPatchType = resource.Type("ConfigPatches.omni.sidero.dev")
+)
+
+// ConfigPatch describes machine config patch.
+type ConfigPatch = typed.Resource[ConfigPatchSpec, ConfigPatchExtension]
+
+// ConfigPatchSpec wraps specs.ConfigPatchSpec.
+type ConfigPatchSpec = protobuf.ResourceSpec[specs.ConfigPatchSpec, *specs.ConfigPatchSpec]
+
+// ConfigPatchExtension provides auxiliary methods for ConfigPatch resource.
+type ConfigPatchExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ConfigPatchExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ConfigPatchType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ Sensitivity: meta.Sensitive,
+ }
+}
+
+// ValidateConfigPatch parses the config patch data using Talos config loader,
+// then validates that the config patch doesn't have fields that are controlled by omni.
+func ValidateConfigPatch(data string) error {
+ _, err := configloader.NewFromBytes([]byte(data))
+ if err != nil {
+ return err
+ }
+
+ var config map[string]any
+
+ err = yaml.Unmarshal([]byte(data), &config)
+ if err != nil {
+ return err
+ }
+
+ var multiErr error
+
+ for _, field := range forbiddenFields {
+ if _, ok := getField(config, field); ok {
+ multiErr = multierror.Append(multiErr, fmt.Errorf("overriding %q is not allowed in the config patch", field))
+ }
+ }
+
+ for field, forbiddenElementSet := range forbiddenSliceElements {
+ val, ok := getField(config, field)
+ if !ok {
+ continue
+ }
+
+ slice, ok := val.([]any)
+ if !ok {
+ continue
+ }
+
+ for _, element := range slice {
+ if _, ok = forbiddenElementSet[element]; ok {
+ multiErr = multierror.Append(multiErr, fmt.Errorf("element %q is not allowed in field %q", element, field))
+ }
+ }
+ }
+
+ return multiErr
+}
+
+func getField(config map[string]any, field string) (any, bool) {
+ parts := strings.Split(field, ".")
+
+ var obj any
+
+ obj = config
+ for _, part := range parts {
+ current, ok := obj.(map[string]any)
+ if !ok {
+ return nil, false
+ }
+
+ obj, ok = current[part]
+ if !ok {
+ return nil, false
+ }
+ }
+
+ return obj, true
+}
diff --git a/client/pkg/omni/resources/omni/config_patch_test.go b/client/pkg/omni/resources/omni/config_patch_test.go
new file mode 100644
index 000000000..74973dfde
--- /dev/null
+++ b/client/pkg/omni/resources/omni/config_patch_test.go
@@ -0,0 +1,83 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni_test
+
+import (
+ "strings"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+
+ "github.com/siderolabs/omni/client/pkg/omni/resources/omni"
+)
+
+func TestValidateConfigPatchValidate(t *testing.T) {
+ for _, tt := range []struct {
+ name string
+ config string
+ expectedError string
+ }{
+ {
+ name: "valid",
+ config: strings.TrimSpace(`
+machine:
+ network:
+ hostname: abcd
+`),
+ },
+ {
+ name: "token",
+ config: strings.TrimSpace(`
+machine:
+ token: aaa
+`),
+ expectedError: "1 error occurred:\n\t* overriding \"machine.token\" is not allowed in the config patch\n\n",
+ },
+ {
+ name: "several fields",
+ config: strings.TrimSpace(`
+machine:
+ token: bab
+ ca:
+ crt: YWFhCg==
+`),
+ expectedError: "2 errors occurred:\n\t* overriding \"machine.token\" is not allowed in the config patch\n\t* overriding \"machine.ca\" is not allowed in the config patch\n\n",
+ },
+ {
+ name: "different configs",
+ config: strings.TrimSpace(`
+machine:
+ ca:
+ crt: YWFhCg==
+cluster:
+ name: default
+`),
+ expectedError: "unknown keys found during decoding:\ncluster:\n name: default\n",
+ },
+ {
+ name: "os admin talos API access",
+ config: strings.TrimSpace(`
+machine:
+ features:
+ kubernetesTalosAPIAccess:
+ allowedRoles:
+ - os:reader
+ - os:admin
+ - os:operator
+`),
+ expectedError: "1 error occurred:\n\t* element \"os:admin\" is not allowed in field \"machine.features.kubernetesTalosAPIAccess.allowedRoles\"\n\n",
+ },
+ } {
+ t.Run(tt.name, func(t *testing.T) {
+ err := omni.ValidateConfigPatch(tt.config)
+ if tt.expectedError != "" {
+ require.Error(t, err, tt.expectedError)
+ require.EqualError(t, err, tt.expectedError)
+ } else {
+ require.NoError(t, err)
+ }
+ })
+ }
+}
diff --git a/client/pkg/omni/resources/omni/control_plane_status.go b/client/pkg/omni/resources/omni/control_plane_status.go
new file mode 100644
index 000000000..cba6378fe
--- /dev/null
+++ b/client/pkg/omni/resources/omni/control_plane_status.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewControlPlaneStatus creates new ControlPlaneStatus resource.
+func NewControlPlaneStatus(ns string, id resource.ID) *ControlPlaneStatus {
+ return typed.NewResource[ControlPlaneStatusSpec, ControlPlaneStatusExtension](
+ resource.NewMetadata(ns, ControlPlaneStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ControlPlaneStatusSpec{}),
+ )
+}
+
+const (
+ // ControlPlaneStatusType is the type of the ControlPlaneStatus resource.
+ // tsgen:ControlPlaneStatusType
+ ControlPlaneStatusType = resource.Type("ControlPlaneStatuses.omni.sidero.dev")
+)
+
+// ControlPlaneStatus describes control plane machine set additional status.
+type ControlPlaneStatus = typed.Resource[ControlPlaneStatusSpec, ControlPlaneStatusExtension]
+
+// ControlPlaneStatusSpec wraps specs.ControlPlaneStatusSpec.
+type ControlPlaneStatusSpec = protobuf.ResourceSpec[specs.ControlPlaneStatusSpec, *specs.ControlPlaneStatusSpec]
+
+// ControlPlaneStatusExtension provides auxiliary methods for ControlPlaneStatus resource.
+type ControlPlaneStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ControlPlaneStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ControlPlaneStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/etcd_audit_result.go b/client/pkg/omni/resources/omni/etcd_audit_result.go
new file mode 100644
index 000000000..fd3fae336
--- /dev/null
+++ b/client/pkg/omni/resources/omni/etcd_audit_result.go
@@ -0,0 +1,45 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewEtcdAuditResult creates new etcd audit result.
+func NewEtcdAuditResult(ns string, id resource.ID) *EtcdAuditResult {
+ return typed.NewResource[EtcdAuditResultSpec, EtcdAuditResultExtension](
+ resource.NewMetadata(ns, EtcdAuditResultType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.EtcdAuditResultSpec{}),
+ )
+}
+
+// EtcdAuditResultType is the type of the EtcdAuditResult resource.
+const EtcdAuditResultType = resource.Type("EtcdAuditResults.omni.sidero.dev")
+
+// EtcdAuditResult describes etcd backup encryption data.
+type EtcdAuditResult = typed.Resource[EtcdAuditResultSpec, EtcdAuditResultExtension]
+
+// EtcdAuditResultSpec wraps specs.EtcdAuditResultSpec.
+type EtcdAuditResultSpec = protobuf.ResourceSpec[specs.EtcdAuditResultSpec, *specs.EtcdAuditResultSpec]
+
+// EtcdAuditResultExtension provides auxiliary methods for EtcdAuditResult resource.
+type EtcdAuditResultExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (EtcdAuditResultExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: EtcdAuditResultType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/etcd_backup.go b/client/pkg/omni/resources/omni/etcd_backup.go
new file mode 100644
index 000000000..ae108949f
--- /dev/null
+++ b/client/pkg/omni/resources/omni/etcd_backup.go
@@ -0,0 +1,60 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "fmt"
+ "time"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewEtcdBackup creates new etcd backup info.
+func NewEtcdBackup(clusterName string, t time.Time) *EtcdBackup {
+ return typed.NewResource[EtcdBackupSpec, EtcdBackupExtension](
+ resource.NewMetadata(resources.ExternalNamespace, EtcdBackupType, fmt.Sprintf("%s-%d", clusterName, t.Unix()), resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.EtcdBackupSpec{}),
+ )
+}
+
+const (
+ // EtcdBackupType is the type of the EtcdBackup resource.
+ // tsgen:EtcdBackupType
+ EtcdBackupType = resource.Type("EtcdBackups.omni.sidero.dev")
+)
+
+// EtcdBackup describes etcd backup data.
+type EtcdBackup = typed.Resource[EtcdBackupSpec, EtcdBackupExtension]
+
+// EtcdBackupSpec wraps specs.EtcdBackupSpec.
+type EtcdBackupSpec = protobuf.ResourceSpec[specs.EtcdBackupSpec, *specs.EtcdBackupSpec]
+
+// EtcdBackupExtension provides auxiliary methods for EtcdBackup resource.
+type EtcdBackupExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (EtcdBackupExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: EtcdBackupType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.ExternalNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Created At",
+ JSONPath: "{.createdat}",
+ },
+ {
+ Name: "Snapshot",
+ JSONPath: "{.snapshot}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/etcd_backup_conf_status.go b/client/pkg/omni/resources/omni/etcd_backup_conf_status.go
new file mode 100644
index 000000000..87ce365f3
--- /dev/null
+++ b/client/pkg/omni/resources/omni/etcd_backup_conf_status.go
@@ -0,0 +1,61 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewEtcdBackupStoreStatus creates new etcd backup configuration status info.
+func NewEtcdBackupStoreStatus() *EtcdBackupStoreStatus {
+ return typed.NewResource[EtcdBackupStoreStatusSpec, EtcdBackupStoreStatusExtension](
+ resource.NewMetadata(resources.EphemeralNamespace, EtcdBackupStoreStatusType, EtcdBackupStoreStatusID, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.EtcdBackupStoreStatusSpec{}),
+ )
+}
+
+const (
+ // EtcdBackupStoreStatusID is the ID of the EtcdBackupStoreStatus resource.
+ // tsgen:EtcdBackupStoreStatusID
+ EtcdBackupStoreStatusID = resource.ID("etcdbackup-store-status")
+
+ // EtcdBackupStoreStatusType is the type of the [EtcdBackupStoreStatus] resource.
+ // tsgen:EtcdBackupStoreStatusType
+ EtcdBackupStoreStatusType = resource.Type("EtcdBackupStoreStatuses.omni.sidero.dev")
+)
+
+// EtcdBackupStoreStatus describes etcd backup status.
+type EtcdBackupStoreStatus = typed.Resource[EtcdBackupStoreStatusSpec, EtcdBackupStoreStatusExtension]
+
+// EtcdBackupStoreStatusSpec wraps specs.EtcdBackupStoreStatusSpec.
+type EtcdBackupStoreStatusSpec = protobuf.ResourceSpec[specs.EtcdBackupStoreStatusSpec, *specs.EtcdBackupStoreStatusSpec]
+
+// EtcdBackupStoreStatusExtension provides auxiliary methods for EtcdBackupStoreStatus resource.
+type EtcdBackupStoreStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (EtcdBackupStoreStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: EtcdBackupStoreStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.EphemeralNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Configuration Name",
+ JSONPath: "{.configurationname}",
+ },
+ {
+ Name: "Configuration Error",
+ JSONPath: "{.configurationerror}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/etcd_backup_encryption.go b/client/pkg/omni/resources/omni/etcd_backup_encryption.go
new file mode 100644
index 000000000..611b9f725
--- /dev/null
+++ b/client/pkg/omni/resources/omni/etcd_backup_encryption.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewEtcdBackupEncryption creates new etcd backup encryption info.
+func NewEtcdBackupEncryption(ns string, id resource.ID) *EtcdBackupEncryption {
+ return typed.NewResource[EtcdBackupEncryptionSpec, EtcdBackupEncryptionExtension](
+ resource.NewMetadata(ns, EtcdBackupEncryptionType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.EtcdBackupEncryptionSpec{}),
+ )
+}
+
+const (
+ // EtcdBackupEncryptionType is the type of the EtcdBackupEncryption resource.
+ // tsgen:EtcdBackupEncryptionType
+ EtcdBackupEncryptionType = resource.Type("EtcdBackupEncryptions.omni.sidero.dev")
+)
+
+// EtcdBackupEncryption describes etcd backup encryption data.
+type EtcdBackupEncryption = typed.Resource[EtcdBackupEncryptionSpec, EtcdBackupEncryptionExtension]
+
+// EtcdBackupEncryptionSpec wraps specs.EtcdBackupEncryptionSpec.
+type EtcdBackupEncryptionSpec = protobuf.ResourceSpec[specs.EtcdBackupEncryptionSpec, *specs.EtcdBackupEncryptionSpec]
+
+// EtcdBackupEncryptionExtension provides auxiliary methods for EtcdBackupEncryption resource.
+type EtcdBackupEncryptionExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (EtcdBackupEncryptionExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: EtcdBackupEncryptionType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/etcd_backup_overall_status.go b/client/pkg/omni/resources/omni/etcd_backup_overall_status.go
new file mode 100644
index 000000000..395e095c9
--- /dev/null
+++ b/client/pkg/omni/resources/omni/etcd_backup_overall_status.go
@@ -0,0 +1,77 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewEtcdBackupOverallStatus creates new etcd backup status info.
+func NewEtcdBackupOverallStatus() *EtcdBackupOverallStatus {
+ return typed.NewResource[EtcdBackupOverallStatusSpec, EtcdBackupOverallStatusExtension](
+ resource.NewMetadata(resources.DefaultNamespace, EtcdBackupOverallStatusType, EtcdBackupOverallStatusID, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.EtcdBackupOverallStatusSpec{}),
+ )
+}
+
+const (
+ // EtcdBackupOverallStatusID is the ID of the EtcdBackupOverallStatus resource.
+ // tsgen:EtcdBackupOverallStatusID
+ EtcdBackupOverallStatusID = resource.ID("etcdbackup-overall-status")
+
+ // EtcdBackupOverallStatusType is the type of the [EtcdBackupOverallStatus] resource.
+ // tsgen:EtcdBackupOverallStatusType
+ EtcdBackupOverallStatusType = resource.Type("EtcdBackupOverallStatuses.omni.sidero.dev")
+)
+
+// EtcdBackupOverallStatus describes etcd backup status.
+type EtcdBackupOverallStatus = typed.Resource[EtcdBackupOverallStatusSpec, EtcdBackupOverallStatusExtension]
+
+// EtcdBackupOverallStatusSpec wraps specs.EtcdBackupOverallStatusSpec.
+type EtcdBackupOverallStatusSpec = protobuf.ResourceSpec[specs.EtcdBackupOverallStatusSpec, *specs.EtcdBackupOverallStatusSpec]
+
+// EtcdBackupOverallStatusExtension provides auxiliary methods for EtcdBackupOverallStatus resource.
+type EtcdBackupOverallStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (EtcdBackupOverallStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: EtcdBackupOverallStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Configuration Name",
+ JSONPath: "{.configurationname}",
+ },
+ {
+ Name: "Configuration Error",
+ JSONPath: "{.configurationerror}",
+ },
+ {
+ Name: "Last Backup Status",
+ JSONPath: "{.lastbackupstatus.status}",
+ },
+ {
+ Name: "Last Backup Error",
+ JSONPath: "{.lastbackupstatus.error}",
+ },
+ {
+ Name: "Last Backup Time",
+ JSONPath: "{.lastbackupstatus.lastbackuptime}",
+ },
+ {
+ Name: "Configuration Attempt",
+ JSONPath: "{.lastbackupstatus.lastbackupattempt}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/etcd_backup_status.go b/client/pkg/omni/resources/omni/etcd_backup_status.go
new file mode 100644
index 000000000..8e29b7bee
--- /dev/null
+++ b/client/pkg/omni/resources/omni/etcd_backup_status.go
@@ -0,0 +1,65 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewEtcdBackupStatus creates new etcd backup status info.
+func NewEtcdBackupStatus(id resource.ID) *EtcdBackupStatus {
+ return typed.NewResource[EtcdBackupStatusSpec, EtcdBackupStatusExtension](
+ resource.NewMetadata(resources.DefaultNamespace, EtcdBackupStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.EtcdBackupStatusSpec{}),
+ )
+}
+
+const (
+ // EtcdBackupStatusType is the type of the EtcdBackupStatus resource.
+ // tsgen:EtcdBackupStatusType
+ EtcdBackupStatusType = resource.Type("EtcdBackupStatuses.omni.sidero.dev")
+)
+
+// EtcdBackupStatus describes etcd backup status.
+type EtcdBackupStatus = typed.Resource[EtcdBackupStatusSpec, EtcdBackupStatusExtension]
+
+// EtcdBackupStatusSpec wraps specs.EtcdBackupStatusSpec.
+type EtcdBackupStatusSpec = protobuf.ResourceSpec[specs.EtcdBackupStatusSpec, *specs.EtcdBackupStatusSpec]
+
+// EtcdBackupStatusExtension provides auxiliary methods for EtcdBackupStatus resource.
+type EtcdBackupStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (EtcdBackupStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: EtcdBackupStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Status",
+ JSONPath: "{.status}",
+ },
+ {
+ Name: "Error",
+ JSONPath: "{.error}",
+ },
+ {
+ Name: "Last Backup",
+ JSONPath: "{.lastbackuptime}",
+ },
+ {
+ Name: "Last Backup Attempt",
+ JSONPath: "{.lastbackupattempt}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/etcd_manual_backup.go b/client/pkg/omni/resources/omni/etcd_manual_backup.go
new file mode 100644
index 000000000..301b6b874
--- /dev/null
+++ b/client/pkg/omni/resources/omni/etcd_manual_backup.go
@@ -0,0 +1,53 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewEtcdManualBackup creates new etcd manual backup resource.
+func NewEtcdManualBackup(id resource.ID) *EtcdManualBackup {
+ return typed.NewResource[EtcdManualBackupSpec, EtcdManualBackupExtension](
+ resource.NewMetadata(resources.EphemeralNamespace, EtcdManualBackupType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.EtcdManualBackupSpec{}),
+ )
+}
+
+const (
+ // EtcdManualBackupType is the type of the EtcdManualBackup resource.
+ // tsgen:EtcdManualBackupType
+ EtcdManualBackupType = resource.Type("EtcdManualBackups.omni.sidero.dev")
+)
+
+// EtcdManualBackup describes requested etcd manual backup.
+type EtcdManualBackup = typed.Resource[EtcdManualBackupSpec, EtcdManualBackupExtension]
+
+// EtcdManualBackupSpec wraps specs.EtcdManualBackupSpec.
+type EtcdManualBackupSpec = protobuf.ResourceSpec[specs.EtcdManualBackupSpec, *specs.EtcdManualBackupSpec]
+
+// EtcdManualBackupExtension provides auxiliary methods for EtcdManualBackup resource.
+type EtcdManualBackupExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (EtcdManualBackupExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: EtcdManualBackupType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.EphemeralNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Backup At",
+ JSONPath: "{.backupat}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/exposed_service.go b/client/pkg/omni/resources/omni/exposed_service.go
new file mode 100644
index 000000000..a2e69b3c9
--- /dev/null
+++ b/client/pkg/omni/resources/omni/exposed_service.go
@@ -0,0 +1,57 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewExposedService creates new ExposedService resource.
+func NewExposedService(ns string, id resource.ID) *ExposedService {
+ return typed.NewResource[ExposedServiceSpec, ExposedServiceExtension](
+ resource.NewMetadata(ns, ExposedServiceType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ExposedServiceSpec{}),
+ )
+}
+
+const (
+ // ExposedServiceType is the type of the ExposedService resource.
+ // tsgen:ExposedServiceType
+ ExposedServiceType = resource.Type("ExposedServices.omni.sidero.dev")
+)
+
+// ExposedService holds the information about an exposed service for workload cluster proxying feature.
+type ExposedService = typed.Resource[ExposedServiceSpec, ExposedServiceExtension]
+
+// ExposedServiceSpec wraps specs.ExposedServiceSpec.
+type ExposedServiceSpec = protobuf.ResourceSpec[specs.ExposedServiceSpec, *specs.ExposedServiceSpec]
+
+// ExposedServiceExtension provides auxiliary methods for ExposedService resource.
+type ExposedServiceExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ExposedServiceExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ExposedServiceType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Port",
+ JSONPath: "{.port}",
+ },
+ {
+ Name: "Label",
+ JSONPath: "{.label}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/features_config.go b/client/pkg/omni/resources/omni/features_config.go
new file mode 100644
index 000000000..97f92625b
--- /dev/null
+++ b/client/pkg/omni/resources/omni/features_config.go
@@ -0,0 +1,60 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+const (
+ // FeaturesConfigID is the resource ID under which the features configuration will be written to COSI state.
+ // tsgen:FeaturesConfigID
+ FeaturesConfigID = "features-config"
+)
+
+// NewFeaturesConfig creates new FeaturesConfig state.
+func NewFeaturesConfig(ns string, id resource.ID) *FeaturesConfig {
+ return typed.NewResource[FeaturesConfigSpec, FeaturesConfigExtension](
+ resource.NewMetadata(ns, FeaturesConfigType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.FeaturesConfigSpec{}),
+ )
+}
+
+const (
+ // FeaturesConfigType is the type of FeaturesConfig resource.
+ //
+ // tsgen:FeaturesConfigType
+ FeaturesConfigType = resource.Type("FeaturesConfigs.omni.sidero.dev")
+)
+
+// FeaturesConfig resource describes the features that are enabled in Omni and their configuration.
+type FeaturesConfig = typed.Resource[FeaturesConfigSpec, FeaturesConfigExtension]
+
+// FeaturesConfigSpec wraps specs.FeaturesConfigSpec.
+type FeaturesConfigSpec = protobuf.ResourceSpec[specs.FeaturesConfigSpec, *specs.FeaturesConfigSpec]
+
+// FeaturesConfigExtension providers auxiliary methods for FeaturesConfig resource.
+type FeaturesConfigExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (FeaturesConfigExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: FeaturesConfigType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Workload Proxying",
+ JSONPath: "{.enableworkloadproxying}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/image_pull_request.go b/client/pkg/omni/resources/omni/image_pull_request.go
new file mode 100644
index 000000000..289d07ed1
--- /dev/null
+++ b/client/pkg/omni/resources/omni/image_pull_request.go
@@ -0,0 +1,47 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewImagePullRequest creates a new ImagePullRequest state.
+func NewImagePullRequest(ns, id string) *ImagePullRequest {
+ return typed.NewResource[ImagePullRequestSpec, ImagePullRequestExtension](
+ resource.NewMetadata(ns, ImagePullRequestType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ImagePullRequestSpec{}),
+ )
+}
+
+// ImagePullRequestType is the type of the ImagePullRequest resource.
+//
+// tsgen:ImagePullRequestType
+const ImagePullRequestType = resource.Type("ImagePullRequests.omni.sidero.dev")
+
+// ImagePullRequest resource contains a request to pull a set of container images to a set of nodes.
+type ImagePullRequest = typed.Resource[ImagePullRequestSpec, ImagePullRequestExtension]
+
+// ImagePullRequestSpec wraps specs.ImagePullRequestSpec.
+type ImagePullRequestSpec = protobuf.ResourceSpec[specs.ImagePullRequestSpec, *specs.ImagePullRequestSpec]
+
+// ImagePullRequestExtension providers auxiliary methods for ImagePullRequest resource.
+type ImagePullRequestExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ImagePullRequestExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ImagePullRequestType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/image_pull_status.go b/client/pkg/omni/resources/omni/image_pull_status.go
new file mode 100644
index 000000000..6f3bde18e
--- /dev/null
+++ b/client/pkg/omni/resources/omni/image_pull_status.go
@@ -0,0 +1,72 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewImagePullStatus creates a new ImagePullStatus state.
+func NewImagePullStatus(ns, id string) *ImagePullStatus {
+ return typed.NewResource[ImagePullStatusSpec, ImagePullStatusExtension](
+ resource.NewMetadata(ns, ImagePullStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ImagePullStatusSpec{}),
+ )
+}
+
+// ImagePullStatusType is the type of the ImagePullStatus resource.
+//
+// tsgen:ImagePullStatusType
+const ImagePullStatusType = resource.Type("ImagePullStatuses.omni.sidero.dev")
+
+// ImagePullStatus resource contains a request to pull a set of container images to a set of nodes.
+type ImagePullStatus = typed.Resource[ImagePullStatusSpec, ImagePullStatusExtension]
+
+// ImagePullStatusSpec wraps specs.ImagePullStatusSpec.
+type ImagePullStatusSpec = protobuf.ResourceSpec[specs.ImagePullStatusSpec, *specs.ImagePullStatusSpec]
+
+// ImagePullStatusExtension providers auxiliary methods for ImagePullStatus resource.
+type ImagePullStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ImagePullStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ImagePullStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Processed",
+ JSONPath: "{.processedcount}",
+ },
+ {
+ Name: "Total",
+ JSONPath: "{.totalcount}",
+ },
+ {
+ Name: "Last Node",
+ JSONPath: "{.lastprocessednode}",
+ },
+ {
+ Name: "Last Image",
+ JSONPath: "{.lastprocessedimage}",
+ },
+ {
+ Name: "Last Error",
+ JSONPath: "{.lastprocessederror}",
+ },
+ {
+ Name: "Request Version",
+ JSONPath: "{.requestversion}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/installation_media.go b/client/pkg/omni/resources/omni/installation_media.go
new file mode 100644
index 000000000..5d1c86637
--- /dev/null
+++ b/client/pkg/omni/resources/omni/installation_media.go
@@ -0,0 +1,51 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewInstallationMedia creates new InstallationMedia state.
+func NewInstallationMedia(ns, filename string) *InstallationMedia {
+ return typed.NewResource[InstallationMediaSpec, InstallationMediaExtension](
+ resource.NewMetadata(ns, InstallationMediaType, filename, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.InstallationMediaSpec{}),
+ )
+}
+
+const (
+ // InstallationMediaType is the type of InstallationMedia resource.
+ //
+ // tsgen:InstallationMediaType
+ InstallationMediaType = resource.Type("InstallationMedias.omni.sidero.dev")
+)
+
+// InstallationMedia resource describes a Talos installation media that can be generated by the image factory. It also describes the necessary parameters to be passed to the image factory.
+//
+// InstallationMedia resource ID is a human-readable string without white-space that uniquely identifies the installation media.
+type InstallationMedia = typed.Resource[InstallationMediaSpec, InstallationMediaExtension]
+
+// InstallationMediaSpec wraps specs.InstallationMediaSpec.
+type InstallationMediaSpec = protobuf.ResourceSpec[specs.InstallationMediaSpec, *specs.InstallationMediaSpec]
+
+// InstallationMediaExtension providers auxiliary methods for InstallationMedia resource.
+type InstallationMediaExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (InstallationMediaExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: InstallationMediaType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.EphemeralNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/kubeconfig.go b/client/pkg/omni/resources/omni/kubeconfig.go
new file mode 100644
index 000000000..fbc3b8d8f
--- /dev/null
+++ b/client/pkg/omni/resources/omni/kubeconfig.go
@@ -0,0 +1,47 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewKubeconfig creates new Kubeconfig resource.
+func NewKubeconfig(ns resource.Namespace, id resource.ID) *Kubeconfig {
+ return typed.NewResource[KubeconfigSpec, KubeconfigExtension](
+ resource.NewMetadata(ns, KubeconfigType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.KubeconfigSpec{}),
+ )
+}
+
+const (
+ // KubeconfigType is the type of the Kubeconfig resource.
+ KubeconfigType = resource.Type("Kubeconfigs.omni.sidero.dev")
+)
+
+// Kubeconfig describes client config for Kubernetes API.
+type Kubeconfig = typed.Resource[KubeconfigSpec, KubeconfigExtension]
+
+// KubeconfigSpec wraps specs.KubeconfigSpec.
+type KubeconfigSpec = protobuf.ResourceSpec[specs.KubeconfigSpec, *specs.KubeconfigSpec]
+
+// KubeconfigExtension provides auxiliary methods for Kubeconfig resource.
+type KubeconfigExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (KubeconfigExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: KubeconfigType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/kubernetes_status.go b/client/pkg/omni/resources/omni/kubernetes_status.go
new file mode 100644
index 000000000..5654b7164
--- /dev/null
+++ b/client/pkg/omni/resources/omni/kubernetes_status.go
@@ -0,0 +1,47 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewKubernetesStatus creates new Kubernetes component version/readiness state.
+func NewKubernetesStatus(ns, id string) *KubernetesStatus {
+ return typed.NewResource[KubernetesStatusSpec, KubernetesStatusExtension](
+ resource.NewMetadata(ns, KubernetesStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.KubernetesStatusSpec{}),
+ )
+}
+
+// KubernetesStatusType is a resource type that contains the state of Kubernetes components in the cluster.
+//
+// tsgen:KubernetesStatusType
+const KubernetesStatusType = resource.Type("KubernetesStatuses.omni.sidero.dev")
+
+// KubernetesStatus is a resource type that contains the state of Kubernetes components in the cluster.
+type KubernetesStatus = typed.Resource[KubernetesStatusSpec, KubernetesStatusExtension]
+
+// KubernetesStatusSpec wraps specs.KubernetesStatusSpec.
+type KubernetesStatusSpec = protobuf.ResourceSpec[specs.KubernetesStatusSpec, *specs.KubernetesStatusSpec]
+
+// KubernetesStatusExtension providers auxiliary methods for KubernetesStatus resource.
+type KubernetesStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (KubernetesStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: KubernetesStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/kubernetes_upgrade_manifest_status.go b/client/pkg/omni/resources/omni/kubernetes_upgrade_manifest_status.go
new file mode 100644
index 000000000..5ee02b1ee
--- /dev/null
+++ b/client/pkg/omni/resources/omni/kubernetes_upgrade_manifest_status.go
@@ -0,0 +1,47 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewKubernetesUpgradeManifestStatus creates new LoadBalancer state.
+func NewKubernetesUpgradeManifestStatus(ns, id string) *KubernetesUpgradeManifestStatus {
+ return typed.NewResource[KubernetesUpgradeManifestStatusSpec, KubernetesUpgradeManifestStatusExtension](
+ resource.NewMetadata(ns, KubernetesUpgradeManifestStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.KubernetesUpgradeManifestStatusSpec{}),
+ )
+}
+
+// KubernetesUpgradeManifestStatusType is a resource type that contains the configuration of a load balancer.
+//
+// tsgen:KubernetesUpgradeManifestStatusType
+const KubernetesUpgradeManifestStatusType = resource.Type("KubernetesUpgradeManifestStatuses.omni.sidero.dev")
+
+// KubernetesUpgradeManifestStatus is a resource type that contains the configuration of a load balancer.
+type KubernetesUpgradeManifestStatus = typed.Resource[KubernetesUpgradeManifestStatusSpec, KubernetesUpgradeManifestStatusExtension]
+
+// KubernetesUpgradeManifestStatusSpec wraps specs.KubernetesUpgradeManifestStatusSpec.
+type KubernetesUpgradeManifestStatusSpec = protobuf.ResourceSpec[specs.KubernetesUpgradeManifestStatusSpec, *specs.KubernetesUpgradeManifestStatusSpec]
+
+// KubernetesUpgradeManifestStatusExtension providers auxiliary methods for KubernetesUpgradeManifestStatus resource.
+type KubernetesUpgradeManifestStatusExtension struct{}
+
+// ResourceDefinition implements typed.ResourceDefinition interface.
+func (KubernetesUpgradeManifestStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: KubernetesUpgradeManifestStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/kubernetes_upgrade_status.go b/client/pkg/omni/resources/omni/kubernetes_upgrade_status.go
new file mode 100644
index 000000000..53a303fab
--- /dev/null
+++ b/client/pkg/omni/resources/omni/kubernetes_upgrade_status.go
@@ -0,0 +1,47 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewKubernetesUpgradeStatus creates new LoadBalancer state.
+func NewKubernetesUpgradeStatus(ns, id string) *KubernetesUpgradeStatus {
+ return typed.NewResource[KubernetesUpgradeStatusSpec, KubernetesUpgradeStatusExtension](
+ resource.NewMetadata(ns, KubernetesUpgradeStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.KubernetesUpgradeStatusSpec{}),
+ )
+}
+
+// KubernetesUpgradeStatusType is a resource type that contains the configuration of a load balancer.
+//
+// tsgen:KubernetesUpgradeStatusType
+const KubernetesUpgradeStatusType = resource.Type("KubernetesUpgradeStatuses.omni.sidero.dev")
+
+// KubernetesUpgradeStatus is a resource type that contains the configuration of a load balancer.
+type KubernetesUpgradeStatus = typed.Resource[KubernetesUpgradeStatusSpec, KubernetesUpgradeStatusExtension]
+
+// KubernetesUpgradeStatusSpec wraps specs.KubernetesUpgradeStatusSpec.
+type KubernetesUpgradeStatusSpec = protobuf.ResourceSpec[specs.KubernetesUpgradeStatusSpec, *specs.KubernetesUpgradeStatusSpec]
+
+// KubernetesUpgradeStatusExtension providers auxiliary methods for KubernetesUpgradeStatus resource.
+type KubernetesUpgradeStatusExtension struct{}
+
+// ResourceDefinition implements typed.ResourceDefinition interface.
+func (KubernetesUpgradeStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: KubernetesUpgradeStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/kubernetes_version.go b/client/pkg/omni/resources/omni/kubernetes_version.go
new file mode 100644
index 000000000..8ddc459f8
--- /dev/null
+++ b/client/pkg/omni/resources/omni/kubernetes_version.go
@@ -0,0 +1,49 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// KubernetesVersionType is the type of KubernetesVersions resource.
+//
+// tsgen:KubernetesVersionType
+const KubernetesVersionType = resource.Type("KubernetesVersions.omni.sidero.dev")
+
+// KubernetesVersion represents discovered Kubernetes versions to be installed.
+type KubernetesVersion = typed.Resource[KubernetesVersionSpec, KubernetesVersionExtension]
+
+// NewKubernetesVersion creates new KubernetesVersion resource.
+func NewKubernetesVersion(ns resource.Namespace, id resource.ID) *KubernetesVersion {
+ return typed.NewResource[KubernetesVersionSpec, KubernetesVersionExtension](
+ resource.NewMetadata(ns, KubernetesVersionType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(
+ &specs.KubernetesVersionSpec{},
+ ),
+ )
+}
+
+// KubernetesVersionExtension provides auxiliary methods for KubernetesVersion.
+type KubernetesVersionExtension struct{}
+
+// KubernetesVersionSpec wraps specs.KubernetesVersionSpec.
+type KubernetesVersionSpec = protobuf.ResourceSpec[specs.KubernetesVersionSpec, *specs.KubernetesVersionSpec]
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (KubernetesVersionExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: KubernetesVersionType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/labels.go b/client/pkg/omni/resources/omni/labels.go
new file mode 100644
index 000000000..3f13622fa
--- /dev/null
+++ b/client/pkg/omni/resources/omni/labels.go
@@ -0,0 +1,149 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package omni provides resources describing the Machines, Clusters, etc.
+package omni
+
+const (
+ // SystemLabelPrefix is the prefix of all labels which are managed by the COSI controllers.
+ // tsgen:SystemLabelPrefix.
+ SystemLabelPrefix = "omni.sidero.dev/"
+)
+
+const (
+ // Global Labels.
+
+ // LabelControlPlaneRole indicates that the machine is a control plane.
+ // tsgen:LabelControlPlaneRole
+ LabelControlPlaneRole = SystemLabelPrefix + "role-controlplane"
+
+ // LabelWorkerRole indicates that the machine is a worker.
+ // tsgen:LabelWorkerRole
+ LabelWorkerRole = SystemLabelPrefix + "role-worker"
+
+ // LabelCluster defines the cluster relation label.
+ // tsgen:LabelCluster
+ LabelCluster = SystemLabelPrefix + LabelSuffixCluster
+
+ // LabelClusterUUID defines the cluster UUID relation label.
+ // tsgen:LabelClusterUUID
+ LabelClusterUUID = SystemLabelPrefix + "cluster-uuid"
+
+ // LabelHostname defines machine hostname.
+ // tsgen:LabelHostname
+ LabelHostname = SystemLabelPrefix + LabelSuffixHostname
+
+ // LabelMachineSet defines the machine set relation label.
+ // tsgen:LabelMachineSet
+ LabelMachineSet = SystemLabelPrefix + "machine-set"
+
+ // LabelClusterMachine defines the cluster machine relation label.
+ // tsgen:LabelClusterMachine
+ LabelClusterMachine = SystemLabelPrefix + "cluster-machine"
+
+ // LabelMachine defines the machine relation label.
+ // tsgen:LabelMachine
+ LabelMachine = SystemLabelPrefix + "machine"
+
+ // LabelSkipTeardown is the test label that configures machine set controller to skip teardown sequence for the cluster machine.
+ LabelSkipTeardown = SystemLabelPrefix + "machine-set-skip-teardown"
+
+ // LabelSystemPatch marks the patch as the system patch, so it shouldn't be editable by the user.
+ // tsgen:LabelSystemPatch
+ LabelSystemPatch = SystemLabelPrefix + "system-patch"
+
+ // LabelExposedServiceAlias is the alias of the exposed service.
+ // tsgen:LabelExposedServiceAlias
+ LabelExposedServiceAlias = SystemLabelPrefix + "exposed-service-alias"
+)
+
+const (
+ // LabelSuffixPlatform is the suffix of the platform label.
+ LabelSuffixPlatform = "platform"
+ // LabelSuffixArch is the suffix of the arch label.
+ LabelSuffixArch = "arch"
+ // LabelSuffixHostname is the suffix of the hostname label.
+ LabelSuffixHostname = "hostname"
+ // LabelSuffixCluster is the suffix of the cluster label.
+ LabelSuffixCluster = "cluster"
+)
+
+const (
+ // MachineStatus labels.
+
+ // MachineStatusLabelConnected is set if the machine is connected.
+ // tsgen:MachineStatusLabelConnected
+ MachineStatusLabelConnected = SystemLabelPrefix + "connected"
+
+ // MachineStatusLabelDisconnected is set if the machine is disconnected.
+ // tsgen:MachineStatusLabelDisconnected
+ MachineStatusLabelDisconnected = SystemLabelPrefix + "disconnected"
+
+ // MachineStatusLabelInvalidState is set if Omni can access Talos apid, but has no access.
+ // tsgen:MachineStatusLabelInvalidState
+ MachineStatusLabelInvalidState = SystemLabelPrefix + "invalid-state"
+
+ // MachineStatusLabelReportingEvents is set if the machine is reporting events.
+ // tsgen:MachineStatusLabelReportingEvents
+ MachineStatusLabelReportingEvents = SystemLabelPrefix + "reporting-events"
+
+ // MachineStatusLabelAvailable is set if the machine is available to be added to a cluster.
+ // tsgen:MachineStatusLabelAvailable
+ MachineStatusLabelAvailable = SystemLabelPrefix + "available"
+
+ // MachineStatusLabelArch describes the machine architecture.
+ // tsgen:MachineStatusLabelArch
+ MachineStatusLabelArch = SystemLabelPrefix + LabelSuffixArch
+
+ // MachineStatusLabelCPU describes the machine CPU.
+ // tsgen:MachineStatusLabelCPU
+ MachineStatusLabelCPU = SystemLabelPrefix + "cpu"
+
+ // MachineStatusLabelCores describes the number of machine cores.
+ // tsgen:MachineStatusLabelCores
+ MachineStatusLabelCores = SystemLabelPrefix + "cores"
+
+ // MachineStatusLabelMem describes the total memory available on the machine.
+ // tsgen:MachineStatusLabelMem
+ MachineStatusLabelMem = SystemLabelPrefix + "mem"
+
+ // MachineStatusLabelStorage describes the total storage capacity of the machine.
+ // tsgen:MachineStatusLabelStorage
+ MachineStatusLabelStorage = SystemLabelPrefix + "storage"
+
+ // MachineStatusLabelNet describes the machine network adapters speed.
+ // tsgen:MachineStatusLabelNet
+ MachineStatusLabelNet = SystemLabelPrefix + "net"
+
+ // MachineStatusLabelPlatform describes the machine platform.
+ // tsgen:MachineStatusLabelPlatform
+ MachineStatusLabelPlatform = SystemLabelPrefix + LabelSuffixPlatform
+
+ // MachineStatusLabelRegion describes the machine region (for machines running in the clouds).
+ // tsgen:MachineStatusLabelRegion
+ MachineStatusLabelRegion = SystemLabelPrefix + "region"
+
+ // MachineStatusLabelZone describes the machine zone (for machines running in the clouds).
+ // tsgen:MachineStatusLabelZone
+ MachineStatusLabelZone = SystemLabelPrefix + "zone"
+
+ // MachineStatusLabelInstance describes the machine instance type (for machines running in the clouds).
+ // tsgen:MachineStatusLabelInstance
+ MachineStatusLabelInstance = SystemLabelPrefix + "instance"
+)
+
+const (
+ // ClusterMachineStatus labels.
+
+ // ClusterMachineStatusLabelNodeName is set to the node name.
+ // tsgen:ClusterMachineStatusLabelNodeName
+ ClusterMachineStatusLabelNodeName = SystemLabelPrefix + "node-name"
+)
+
+const (
+ // Machine labels.
+
+ // MachineAddressLabel is used for faster lookup of the machine by address.
+ MachineAddressLabel = SystemLabelPrefix + "address"
+)
diff --git a/client/pkg/omni/resources/omni/loadbalancer_config.go b/client/pkg/omni/resources/omni/loadbalancer_config.go
new file mode 100644
index 000000000..0f8623138
--- /dev/null
+++ b/client/pkg/omni/resources/omni/loadbalancer_config.go
@@ -0,0 +1,45 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewLoadBalancerConfig creates new LoadBalancer state.
+func NewLoadBalancerConfig(ns, id string) *LoadBalancerConfig {
+ return typed.NewResource[LoadBalancerConfigSpec, LoadBalancerConfigExtension](
+ resource.NewMetadata(ns, LoadBalancerConfigType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.LoadBalancerConfigSpec{}),
+ )
+}
+
+// LoadBalancerConfigType is a resource type that contains the configuration of a load balancer.
+const LoadBalancerConfigType = resource.Type("LoadBalancerConfigs.omni.sidero.dev")
+
+// LoadBalancerConfig is a resource type that contains the configuration of a load balancer.
+type LoadBalancerConfig = typed.Resource[LoadBalancerConfigSpec, LoadBalancerConfigExtension]
+
+// LoadBalancerConfigSpec wraps specs.LoadBalancerConfigSpec.
+type LoadBalancerConfigSpec = protobuf.ResourceSpec[specs.LoadBalancerConfigSpec, *specs.LoadBalancerConfigSpec]
+
+// LoadBalancerConfigExtension providers auxiliary methods for LoadBalancerConfig resource.
+type LoadBalancerConfigExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (LoadBalancerConfigExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: LoadBalancerConfigType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/loadbalancer_status.go b/client/pkg/omni/resources/omni/loadbalancer_status.go
new file mode 100644
index 000000000..55570b166
--- /dev/null
+++ b/client/pkg/omni/resources/omni/loadbalancer_status.go
@@ -0,0 +1,50 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewLoadBalancerStatus creates new LoadBalancerStatus state.
+func NewLoadBalancerStatus(ns, id string) *LoadBalancerStatus {
+ return typed.NewResource[LoadBalancerStatusSpec, LoadBalancerStatusExtension](
+ resource.NewMetadata(ns, LoadBalancerStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.LoadBalancerStatusSpec{}),
+ )
+}
+
+// LoadBalancerStatusType is a resource type that reports the status of a load balancer.
+const LoadBalancerStatusType = resource.Type("LoadBalancerStatuses.omni.sidero.dev")
+
+// LoadBalancerStatus is a resource that reports the status of a load balancer.
+type LoadBalancerStatus = typed.Resource[LoadBalancerStatusSpec, LoadBalancerStatusExtension]
+
+// LoadBalancerStatusSpec wraps specs.LoadBalancerStatusSpec.
+type LoadBalancerStatusSpec = protobuf.ResourceSpec[specs.LoadBalancerStatusSpec, *specs.LoadBalancerStatusSpec]
+
+// LoadBalancerStatusExtension providers auxiliary methods for LoadBalancerStatus resource.
+type LoadBalancerStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (LoadBalancerStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: LoadBalancerStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Healthy",
+ JSONPath: "{.healthy}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/machine.go b/client/pkg/omni/resources/omni/machine.go
new file mode 100644
index 000000000..99440fad1
--- /dev/null
+++ b/client/pkg/omni/resources/omni/machine.go
@@ -0,0 +1,91 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "strconv"
+ "strings"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewMachine creates new Machine state.
+func NewMachine(ns, id string) *Machine {
+ return typed.NewResource[MachineSpec, MachineExtension](
+ resource.NewMetadata(ns, MachineType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.MachineSpec{}),
+ )
+}
+
+// MachineType is the type of Machine resource.
+//
+// tsgen:MachineType
+const MachineType = resource.Type("Machines.omni.sidero.dev")
+
+// Machine resource describes connected Talos server (bare-metal, VM, RPi, etc).
+//
+// Machine resource ID is a machine UUID.
+type Machine = typed.Resource[MachineSpec, MachineExtension]
+
+// MachineSpec wraps specs.MachineSpec.
+type MachineSpec = protobuf.ResourceSpec[specs.MachineSpec, *specs.MachineSpec]
+
+// MachineExtension providers auxiliary methods for Machine resource.
+type MachineExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (MachineExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: MachineType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Address",
+ JSONPath: "{.managementaddress}",
+ },
+ {
+ Name: "Connected",
+ JSONPath: "{.connected}",
+ },
+ {
+ Name: "Reboots",
+ JSONPath: "{.rebootcount}",
+ },
+ },
+ }
+}
+
+// Make implements [typed.Maker] interface.
+func (MachineExtension) Make(_ *resource.Metadata, spec *MachineSpec) any {
+ return (*machineAux)(spec)
+}
+
+type machineAux MachineSpec
+
+func (m *machineAux) Match(searchFor string) bool {
+ val := m.Value
+
+ return strings.Contains(val.ManagementAddress, searchFor)
+}
+
+func (m *machineAux) Field(fieldName string) (string, bool) {
+ val := m.Value
+
+ switch fieldName {
+ case "management_address":
+ return val.ManagementAddress, true
+ case "connected":
+ return strconv.FormatBool(val.Connected), true
+ default:
+ return "", false
+ }
+}
diff --git a/client/pkg/omni/resources/omni/machine_class.go b/client/pkg/omni/resources/omni/machine_class.go
new file mode 100644
index 000000000..46fd8eb8f
--- /dev/null
+++ b/client/pkg/omni/resources/omni/machine_class.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewMachineClass creates new MachineClass resource.
+func NewMachineClass(ns string, id resource.ID) *MachineClass {
+ return typed.NewResource[MachineClassSpec, MachineClassExtension](
+ resource.NewMetadata(ns, MachineClassType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.MachineClassSpec{}),
+ )
+}
+
+const (
+ // MachineClassType is the type of the MachineClass resource.
+ // tsgen:MachineClassType
+ MachineClassType = resource.Type("MachineClasses.omni.sidero.dev")
+)
+
+// MachineClass describes machine set resource.
+type MachineClass = typed.Resource[MachineClassSpec, MachineClassExtension]
+
+// MachineClassSpec wraps specs.MachineClassSpec.
+type MachineClassSpec = protobuf.ResourceSpec[specs.MachineClassSpec, *specs.MachineClassSpec]
+
+// MachineClassExtension provides auxiliary methods for MachineClass resource.
+type MachineClassExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (MachineClassExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: MachineClassType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/machine_config_gen_options.go b/client/pkg/omni/resources/omni/machine_config_gen_options.go
new file mode 100644
index 000000000..41e689401
--- /dev/null
+++ b/client/pkg/omni/resources/omni/machine_config_gen_options.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewMachineConfigGenOptions creates new MachineConfigGenOptions resource.
+func NewMachineConfigGenOptions(ns string, id resource.ID) *MachineConfigGenOptions {
+ return typed.NewResource[MachineConfigGenOptionsSpec, MachineConfigGenOptionsExtension](
+ resource.NewMetadata(ns, MachineConfigGenOptionsType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.MachineConfigGenOptionsSpec{}),
+ )
+}
+
+const (
+ // MachineConfigGenOptionsType is the type of the MachineConfigGenOptions resource.
+ // tsgen:MachineConfigGenOptionsType
+ MachineConfigGenOptionsType = resource.Type("MachineConfigGenOptions.omni.sidero.dev")
+)
+
+// MachineConfigGenOptions describes machine config resource.
+type MachineConfigGenOptions = typed.Resource[MachineConfigGenOptionsSpec, MachineConfigGenOptionsExtension]
+
+// MachineConfigGenOptionsSpec wraps specs.MachineConfigGenOptionsSpec.
+type MachineConfigGenOptionsSpec = protobuf.ResourceSpec[specs.MachineConfigGenOptionsSpec, *specs.MachineConfigGenOptionsSpec]
+
+// MachineConfigGenOptionsExtension provides auxiliary methods for MachineConfigGenOptions resource.
+type MachineConfigGenOptionsExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (MachineConfigGenOptionsExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: MachineConfigGenOptionsType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/machine_labels.go b/client/pkg/omni/resources/omni/machine_labels.go
new file mode 100644
index 000000000..01ade0767
--- /dev/null
+++ b/client/pkg/omni/resources/omni/machine_labels.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewMachineLabels creates new cluster machine status resource.
+func NewMachineLabels(ns string, id resource.ID) *MachineLabels {
+ return typed.NewResource[MachineLabelsSpec, MachineLabelsExtension](
+ resource.NewMetadata(ns, MachineLabelsType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.MachineLabelsSpec{}),
+ )
+}
+
+const (
+ // MachineLabelsType is the type of the MachineLabels resource.
+ // tsgen:MachineLabelsType
+ MachineLabelsType = resource.Type("MachineLabels.omni.sidero.dev")
+)
+
+// MachineLabels contains the summary for the cluster health, availability, number of nodes.
+type MachineLabels = typed.Resource[MachineLabelsSpec, MachineLabelsExtension]
+
+// MachineLabelsSpec wraps specs.MachineLabelsSpec.
+type MachineLabelsSpec = protobuf.ResourceSpec[specs.MachineLabelsSpec, *specs.MachineLabelsSpec]
+
+// MachineLabelsExtension provides auxiliary methods for MachineLabels resource.
+type MachineLabelsExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (MachineLabelsExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: MachineLabelsType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/machine_set.go b/client/pkg/omni/resources/omni/machine_set.go
new file mode 100644
index 000000000..4de951357
--- /dev/null
+++ b/client/pkg/omni/resources/omni/machine_set.go
@@ -0,0 +1,75 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "fmt"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// ControlPlanesIDSuffix is the suffix for the MachineSet control planes of a cluster.
+//
+// tsgen:ControlPlanesIDSuffix
+const ControlPlanesIDSuffix = "control-planes"
+
+// DefaultWorkersIDSuffix is the suffix for the MachineSet workers of a cluster.
+//
+// tsgen:DefaultWorkersIDSuffix
+const DefaultWorkersIDSuffix = "workers"
+
+// ControlPlanesResourceID returns the name for the MachineSet control planes of a cluster.
+func ControlPlanesResourceID(clusterName string) string {
+ return fmt.Sprintf("%s-%s", clusterName, ControlPlanesIDSuffix)
+}
+
+// WorkersResourceID returns the name for the default MachineSet workers of a cluster.
+func WorkersResourceID(clusterName string) string {
+ return fmt.Sprintf("%s-%s", clusterName, DefaultWorkersIDSuffix)
+}
+
+// AdditionalWorkersResourceID returns the name for the additional MachineSet workers of a cluster.
+func AdditionalWorkersResourceID(clusterName, name string) string {
+ return fmt.Sprintf("%s-%s", clusterName, name)
+}
+
+// NewMachineSet creates new MachineSet resource.
+func NewMachineSet(ns string, id resource.ID) *MachineSet {
+ return typed.NewResource[MachineSetSpec, MachineSetExtension](
+ resource.NewMetadata(ns, MachineSetType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.MachineSetSpec{}),
+ )
+}
+
+const (
+ // MachineSetType is the type of the MachineSet resource.
+ // tsgen:MachineSetType
+ MachineSetType = resource.Type("MachineSets.omni.sidero.dev")
+)
+
+// MachineSet describes machine set resource.
+type MachineSet = typed.Resource[MachineSetSpec, MachineSetExtension]
+
+// MachineSetSpec wraps specs.MachineSetSpec.
+type MachineSetSpec = protobuf.ResourceSpec[specs.MachineSetSpec, *specs.MachineSetSpec]
+
+// MachineSetExtension provides auxiliary methods for MachineSet resource.
+type MachineSetExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (MachineSetExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: MachineSetType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/machine_set_destroy_status.go b/client/pkg/omni/resources/omni/machine_set_destroy_status.go
new file mode 100644
index 000000000..695c9e8a1
--- /dev/null
+++ b/client/pkg/omni/resources/omni/machine_set_destroy_status.go
@@ -0,0 +1,53 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewMachineSetDestroyStatus creates new cluster destroy status.
+func NewMachineSetDestroyStatus(ns string, id resource.ID) *MachineSetDestroyStatus {
+ return typed.NewResource[MachineSetDestroyStatusSpec, MachineSetDestroyStatusExtension](
+ resource.NewMetadata(ns, MachineSetDestroyStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.DestroyStatusSpec{}),
+ )
+}
+
+const (
+ // MachineSetDestroyStatusType is the type of the MachineSetDestroyStatus resource.
+ // tsgen:MachineSetDestroyStatusType
+ MachineSetDestroyStatusType = resource.Type("MachineSetDestroyStatuses.omni.sidero.dev")
+)
+
+// MachineSetDestroyStatus contains the state of machine set destroy for machine tsse in TearingDown phase.
+type MachineSetDestroyStatus = typed.Resource[MachineSetDestroyStatusSpec, MachineSetDestroyStatusExtension]
+
+// MachineSetDestroyStatusSpec wraps specs.MachineSetDestroyStatusSpec.
+type MachineSetDestroyStatusSpec = protobuf.ResourceSpec[specs.DestroyStatusSpec, *specs.DestroyStatusSpec]
+
+// MachineSetDestroyStatusExtension provides auxiliary methods for MachineSetDestroyStatus resource.
+type MachineSetDestroyStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (MachineSetDestroyStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: MachineSetDestroyStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.EphemeralNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Phase",
+ JSONPath: "{.phase}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/machine_set_node.go b/client/pkg/omni/resources/omni/machine_set_node.go
new file mode 100644
index 000000000..4df5391de
--- /dev/null
+++ b/client/pkg/omni/resources/omni/machine_set_node.go
@@ -0,0 +1,68 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewMachineSetNode creates new MachineSetNode resource.
+func NewMachineSetNode(ns string, id resource.ID, owner resource.Resource) *MachineSetNode {
+ // this should never happen, simple sanity check
+ if owner.Metadata().Type() != MachineSetType {
+ panic("the owner of a machine set node must always be a machine set")
+ }
+
+ res := typed.NewResource[MachineSetNodeSpec, MachineSetNodeExtension](
+ resource.NewMetadata(ns, MachineSetNodeType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.MachineSetNodeSpec{}),
+ )
+
+ for _, label := range []string{
+ LabelCluster,
+ LabelControlPlaneRole,
+ LabelWorkerRole,
+ } {
+ val, ok := owner.Metadata().Labels().Get(label)
+ if ok {
+ res.Metadata().Labels().Set(label, val)
+ }
+ }
+
+ res.Metadata().Labels().Set(LabelMachineSet, owner.Metadata().ID())
+
+ return res
+}
+
+const (
+ // MachineSetNodeType is the type of the MachineSetNode resource.
+ // tsgen:MachineSetNodeType
+ MachineSetNodeType = resource.Type("MachineSetNodes.omni.sidero.dev")
+)
+
+// MachineSetNode describes machine set node resource.
+type MachineSetNode = typed.Resource[MachineSetNodeSpec, MachineSetNodeExtension]
+
+// MachineSetNodeSpec wraps specs.MachineSetNodeSpec.
+type MachineSetNodeSpec = protobuf.ResourceSpec[specs.MachineSetNodeSpec, *specs.MachineSetNodeSpec]
+
+// MachineSetNodeExtension provides auxiliary methods for MachineSetNode resource.
+type MachineSetNodeExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (MachineSetNodeExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: MachineSetNodeType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/machine_set_status.go b/client/pkg/omni/resources/omni/machine_set_status.go
new file mode 100644
index 000000000..ebc773717
--- /dev/null
+++ b/client/pkg/omni/resources/omni/machine_set_status.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewMachineSetStatus creates new MachineSetStatus resource.
+func NewMachineSetStatus(ns string, id resource.ID) *MachineSetStatus {
+ return typed.NewResource[MachineSetStatusSpec, MachineSetStatusExtension](
+ resource.NewMetadata(ns, MachineSetStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.MachineSetStatusSpec{}),
+ )
+}
+
+const (
+ // MachineSetStatusType is the type of the MachineSetStatus resource.
+ // tsgen:MachineSetStatusType
+ MachineSetStatusType = resource.Type("MachineSetStatuses.omni.sidero.dev")
+)
+
+// MachineSetStatus describes current machine set status.
+type MachineSetStatus = typed.Resource[MachineSetStatusSpec, MachineSetStatusExtension]
+
+// MachineSetStatusSpec wraps specs.MachineSetStatusSpec.
+type MachineSetStatusSpec = protobuf.ResourceSpec[specs.MachineSetStatusSpec, *specs.MachineSetStatusSpec]
+
+// MachineSetStatusExtension provides auxiliary methods for MachineSetStatus resource.
+type MachineSetStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (MachineSetStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: MachineSetStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/machine_status.go b/client/pkg/omni/resources/omni/machine_status.go
new file mode 100644
index 000000000..ca3d1ec9e
--- /dev/null
+++ b/client/pkg/omni/resources/omni/machine_status.go
@@ -0,0 +1,222 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "fmt"
+ "strconv"
+ "strings"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewMachineStatus creates new MachineStatus state.
+func NewMachineStatus(ns, id string) *MachineStatus {
+ return typed.NewResource[MachineStatusSpec, MachineStatusExtension](
+ resource.NewMetadata(ns, MachineStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.MachineStatusSpec{}),
+ )
+}
+
+// MachineStatusType is the type of MachineStatus resource.
+//
+// tsgen:MachineStatusType
+const MachineStatusType = resource.Type("MachineStatuses.omni.sidero.dev")
+
+// MachineStatus resource contains current information about the Machine.
+//
+// MachineStatus contains node information like hostname,
+//
+// MachineStatus resource ID is a Machine UUID.
+type MachineStatus = typed.Resource[MachineStatusSpec, MachineStatusExtension]
+
+// MachineStatusSpec wraps specs.MachineStatusSpec.
+type MachineStatusSpec = protobuf.ResourceSpec[specs.MachineStatusSpec, *specs.MachineStatusSpec]
+
+// MachineStatusExtension providers auxiliary methods for MachineStatus resource.
+type MachineStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (MachineStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: MachineStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
+
+// Make implements [typed.Maker] interface.
+func (MachineStatusExtension) Make(_ *resource.Metadata, spec *MachineStatusSpec) any {
+ return (*machineStatusAux)(spec)
+}
+
+type machineStatusAux MachineStatusSpec
+
+func (m *machineStatusAux) Match(searchFor string) bool {
+ val := m.Value
+
+ if strings.Contains(val.GetNetwork().GetHostname(), searchFor) ||
+ strings.Contains(val.GetPlatformMetadata().GetHostname(), searchFor) {
+ return true
+ }
+
+ for _, link := range val.GetNetwork().GetNetworkLinks() {
+ if strings.Contains(link.GetHardwareAddress(), searchFor) {
+ return true
+ }
+ }
+
+ return strings.Contains(val.GetCluster(), searchFor)
+}
+
+func (m *machineStatusAux) Field(fieldName string) (string, bool) {
+ val := m.Value
+
+ switch fieldName {
+ case LabelSuffixCluster:
+ return val.GetCluster(), true
+ case LabelSuffixHostname:
+ return val.GetNetwork().GetHostname(), true
+ case LabelSuffixPlatform:
+ return val.GetPlatformMetadata().GetPlatform(), true
+ case LabelSuffixArch:
+ return val.GetHardware().GetArch(), true
+ default:
+ return "", false
+ }
+}
+
+func setLabel(labels *resource.Labels, key string, valueFunc func() string) {
+ if value := valueFunc(); value != "" {
+ labels.Set(key, value)
+ } else {
+ labels.Delete(key)
+ }
+}
+
+// MachineStatusReconcileLabels builds a set of labels based on hardware/meta information.
+func MachineStatusReconcileLabels(machineStatus *MachineStatus) {
+ labels := machineStatus.Metadata().Labels()
+
+ setLabel(labels, MachineStatusLabelCores, func() string {
+ numCores := 0
+
+ for _, cpu := range machineStatus.TypedSpec().Value.GetHardware().GetProcessors() {
+ numCores += int(cpu.GetCoreCount())
+ }
+
+ if numCores > 0 {
+ return strconv.Itoa(numCores)
+ }
+
+ return ""
+ })
+
+ setLabel(labels, MachineStatusLabelCPU, func() string {
+ cpuManufacturer := ""
+
+ for _, cpu := range machineStatus.TypedSpec().Value.GetHardware().GetProcessors() {
+ if cpu.GetManufacturer() != "" {
+ cpuManufacturer = cpu.GetManufacturer()
+ }
+ }
+
+ cpuManufacturer = strings.ToLower(strings.TrimSpace(cpuManufacturer))
+
+ switch {
+ case strings.HasPrefix(cpuManufacturer, "intel"):
+ return "intel"
+ case strings.HasPrefix(cpuManufacturer, "amd"):
+ return "amd"
+ default:
+ return cpuManufacturer
+ }
+ })
+
+ setLabel(labels, MachineStatusLabelArch, func() string {
+ return strings.ToLower(machineStatus.TypedSpec().Value.GetHardware().GetArch())
+ })
+
+ setLabel(labels, MachineStatusLabelMem, func() string {
+ memMB := 0
+
+ for _, mem := range machineStatus.TypedSpec().Value.GetHardware().GetMemoryModules() {
+ memMB += int(mem.GetSizeMb())
+ }
+
+ if memMB >= 1024 {
+ return fmt.Sprintf("%dGiB", memMB/1024)
+ }
+
+ return ""
+ })
+
+ setLabel(labels, MachineStatusLabelStorage, func() string {
+ storageSize := uint64(0)
+
+ for _, blockDevice := range machineStatus.TypedSpec().Value.GetHardware().GetBlockdevices() {
+ storageSize += blockDevice.GetSize()
+ }
+
+ if storageSize >= 1000*1000*1000 {
+ return fmt.Sprintf("%dGB", storageSize/(1000*1000*1000))
+ }
+
+ return ""
+ })
+
+ setLabel(labels, MachineStatusLabelNet, func() string {
+ netMbps := uint64(0)
+
+ for _, net := range machineStatus.TypedSpec().Value.GetNetwork().GetNetworkLinks() {
+ if net.GetSpeedMbps() >= 10 && net.GetSpeedMbps() <= 100000 {
+ netMbps += uint64(net.GetSpeedMbps())
+ }
+ }
+
+ switch {
+ case netMbps >= 1000:
+ return fmt.Sprintf("%dGbps", netMbps/1000)
+ case netMbps > 0:
+ return fmt.Sprintf("%dMbps", netMbps)
+ default:
+ return ""
+ }
+ })
+
+ setLabel(labels, MachineStatusLabelPlatform, func() string {
+ return machineStatus.TypedSpec().Value.PlatformMetadata.GetPlatform()
+ })
+
+ setLabel(labels, MachineStatusLabelRegion, func() string {
+ return machineStatus.TypedSpec().Value.PlatformMetadata.GetRegion()
+ })
+
+ setLabel(labels, MachineStatusLabelZone, func() string {
+ return machineStatus.TypedSpec().Value.PlatformMetadata.GetZone()
+ })
+
+ setLabel(labels, MachineStatusLabelInstance, func() string {
+ return machineStatus.TypedSpec().Value.PlatformMetadata.GetInstanceType()
+ })
+}
+
+// GetMachineStatusSystemDisk looks up a system disk for the Talos machine.
+func GetMachineStatusSystemDisk(res *MachineStatus) string {
+ for _, disk := range res.TypedSpec().Value.Hardware.Blockdevices {
+ if disk.SystemDisk {
+ return disk.LinuxName
+ }
+ }
+
+ return ""
+}
diff --git a/client/pkg/omni/resources/omni/machine_status_link.go b/client/pkg/omni/resources/omni/machine_status_link.go
new file mode 100644
index 000000000..5752498f4
--- /dev/null
+++ b/client/pkg/omni/resources/omni/machine_status_link.go
@@ -0,0 +1,108 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewMachineStatusLink creates new MachineStatusLink resource.
+func NewMachineStatusLink(ns string, id resource.ID) *MachineStatusLink {
+ return typed.NewResource[MachineStatusLinkSpec, MachineStatusLinkExtension](
+ resource.NewMetadata(ns, MachineStatusLinkType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.MachineStatusLinkSpec{}),
+ )
+}
+
+// MachineStatusLink resource contains current information about the [MachineStatus] and [siderolink.LinkCounter] resources.
+type MachineStatusLink = typed.Resource[MachineStatusLinkSpec, MachineStatusLinkExtension]
+
+// MachineStatusLinkSpec wraps specs.MachineStatusLinkSpec.
+type MachineStatusLinkSpec = protobuf.ResourceSpec[specs.MachineStatusLinkSpec, *specs.MachineStatusLinkSpec]
+
+// MachineStatusLinkType is the type of MachineStatusLink resource.
+//
+// tsgen:MachineStatusLinkType
+const MachineStatusLinkType = resource.Type("MachineStatusLinks.omni.sidero.dev")
+
+// MachineStatusLinkExtension providers auxiliary methods for MachineStatusLink resource.
+type MachineStatusLinkExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (MachineStatusLinkExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: MachineStatusLinkType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.MetricsNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Bytes Received",
+ JSONPath: "{.siderolinkcounter.bytesreceived}",
+ },
+ {
+ Name: "Bytes Sent",
+ JSONPath: "{.siderolinkcounter.bytessent}",
+ },
+ {
+ Name: "Last Alive",
+ JSONPath: "{.siderolinkcounter.lastalive}",
+ },
+ },
+ }
+}
+
+// Make implements [typed.Maker] interface.
+func (MachineStatusLinkExtension) Make(_ *resource.Metadata, spec *MachineStatusLinkSpec) any {
+ return (*machineStatusLinkAux)(spec)
+}
+
+type machineStatusLinkAux MachineStatusLinkSpec
+
+func (m *machineStatusLinkAux) Match(searchFor string) bool {
+ val := m.Value
+
+ if strings.Contains(val.GetMessageStatus().GetNetwork().GetHostname(), searchFor) ||
+ strings.Contains(val.GetMessageStatus().GetPlatformMetadata().GetHostname(), searchFor) {
+ return true
+ }
+
+ for _, link := range val.GetMessageStatus().GetNetwork().GetNetworkLinks() {
+ if strings.Contains(link.GetHardwareAddress(), searchFor) {
+ return true
+ }
+ }
+
+ return strings.Contains(val.GetMessageStatus().GetCluster(), searchFor)
+}
+
+func (m *machineStatusLinkAux) Field(fieldName string) (string, bool) {
+ val := m.Value
+
+ switch fieldName {
+ case "cluster":
+ return val.GetMessageStatus().GetCluster(), true
+ case "hostname":
+ return val.GetMessageStatus().GetNetwork().GetHostname(), true
+ case "platform":
+ return val.GetMessageStatus().GetPlatformMetadata().GetPlatform(), true
+ case "arch":
+ return val.GetMessageStatus().GetHardware().GetArch(), true
+ case "last_alive":
+ return fmt.Sprintf("%020d", val.GetSiderolinkCounter().GetLastAlive().GetSeconds()), true
+ case "machine_created_at":
+ return fmt.Sprintf("%020d", val.GetMachineCreatedAt()), true
+ default:
+ return "", false
+ }
+}
diff --git a/client/pkg/omni/resources/omni/machine_status_snapshot.go b/client/pkg/omni/resources/omni/machine_status_snapshot.go
new file mode 100644
index 000000000..004733004
--- /dev/null
+++ b/client/pkg/omni/resources/omni/machine_status_snapshot.go
@@ -0,0 +1,49 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewMachineStatusSnapshot creates new MachineStatusSnapshot state.
+func NewMachineStatusSnapshot(ns, id string) *MachineStatusSnapshot {
+ return typed.NewResource[MachineStatusSnapshotSpec, MachineStatusSnapshotExtension](
+ resource.NewMetadata(ns, MachineStatusSnapshotType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.MachineStatusSnapshotSpec{}),
+ )
+}
+
+// MachineStatusSnapshotType is the type of MachineStatusSnapshot resource.
+//
+// tsgen:MachineStatusSnapshotType
+const MachineStatusSnapshotType = resource.Type("MachineStatusSnapshots.omni.sidero.dev")
+
+// MachineStatusSnapshot resource contains snapshot of Talos MachineStatus resource.
+//
+// MachineStatusSnapshot resource ID is a Machine UUID.
+type MachineStatusSnapshot = typed.Resource[MachineStatusSnapshotSpec, MachineStatusSnapshotExtension]
+
+// MachineStatusSnapshotSpec wraps specs.MachineStatusSnapshotSpec.
+type MachineStatusSnapshotSpec = protobuf.ResourceSpec[specs.MachineStatusSnapshotSpec, *specs.MachineStatusSnapshotSpec]
+
+// MachineStatusSnapshotExtension providers auxiliary methods for MachineStatusSnapshot resource.
+type MachineStatusSnapshotExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (MachineStatusSnapshotExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: MachineStatusSnapshotType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/machine_status_test.go b/client/pkg/omni/resources/omni/machine_status_test.go
new file mode 100644
index 000000000..ea23a73c8
--- /dev/null
+++ b/client/pkg/omni/resources/omni/machine_status_test.go
@@ -0,0 +1,169 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni_test
+
+import (
+ "testing"
+
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+ "github.com/stretchr/testify/assert"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources/omni"
+ "github.com/siderolabs/omni/client/pkg/runtime"
+)
+
+func TestMachineStatusReconcileLabels(t *testing.T) {
+ t.Parallel()
+
+ for _, test := range []struct { //nolint:govet
+ name string
+ spec *specs.MachineStatusSpec
+ want map[string]string
+ }{
+ {
+ name: "empty",
+ spec: &specs.MachineStatusSpec{},
+ },
+ {
+ name: "full",
+ spec: &specs.MachineStatusSpec{
+ Hardware: &specs.MachineStatusSpec_HardwareStatus{
+ Arch: "amd64",
+ Processors: []*specs.MachineStatusSpec_HardwareStatus_Processor{
+ {
+ Manufacturer: "Intel",
+ CoreCount: 4,
+ },
+ {
+ CoreCount: 2,
+ },
+ },
+ MemoryModules: []*specs.MachineStatusSpec_HardwareStatus_MemoryModule{
+ {
+ SizeMb: 8192,
+ },
+ {
+ SizeMb: 8192,
+ },
+ },
+ Blockdevices: []*specs.MachineStatusSpec_HardwareStatus_BlockDevice{
+ {
+ Size: 1024 * 1024,
+ },
+ {
+ Size: 200 * 1000 * 1000 * 1000,
+ },
+ {
+ Size: 400 * 1000 * 1000 * 1000,
+ },
+ },
+ },
+ Network: &specs.MachineStatusSpec_NetworkStatus{
+ NetworkLinks: []*specs.MachineStatusSpec_NetworkStatus_NetworkLinkStatus{
+ {
+ SpeedMbps: 43333333,
+ },
+ {
+ SpeedMbps: 10 * 1024,
+ },
+ {
+ SpeedMbps: 20 * 1024,
+ },
+ },
+ },
+ PlatformMetadata: &specs.MachineStatusSpec_PlatformMetadata{
+ Platform: "aws",
+ Region: "us-east-1",
+ Zone: "us-east-1a",
+ InstanceType: "c1.small",
+ },
+ },
+ want: map[string]string{
+ omni.MachineStatusLabelArch: "amd64",
+ omni.MachineStatusLabelCPU: "intel",
+ omni.MachineStatusLabelCores: "6",
+ omni.MachineStatusLabelMem: "16GiB",
+ omni.MachineStatusLabelStorage: "600GB",
+ omni.MachineStatusLabelNet: "30Gbps",
+ omni.MachineStatusLabelPlatform: "aws",
+ omni.MachineStatusLabelRegion: "us-east-1",
+ omni.MachineStatusLabelZone: "us-east-1a",
+ omni.MachineStatusLabelInstance: "c1.small",
+ },
+ },
+ {
+ name: "full",
+ spec: &specs.MachineStatusSpec{
+ Hardware: &specs.MachineStatusSpec_HardwareStatus{
+ Arch: "amd64",
+ Processors: []*specs.MachineStatusSpec_HardwareStatus_Processor{
+ {
+ Manufacturer: "Intel(R) Corporation",
+ CoreCount: 4,
+ },
+ {
+ Manufacturer: "Intel(R) Corporation",
+ CoreCount: 2,
+ },
+ },
+ },
+ Network: &specs.MachineStatusSpec_NetworkStatus{
+ NetworkLinks: []*specs.MachineStatusSpec_NetworkStatus_NetworkLinkStatus{
+ {
+ SpeedMbps: 1000,
+ },
+ },
+ },
+ },
+ want: map[string]string{
+ omni.MachineStatusLabelArch: "amd64",
+ omni.MachineStatusLabelCores: "6",
+ omni.MachineStatusLabelCPU: "intel",
+ omni.MachineStatusLabelNet: "1Gbps",
+ },
+ },
+ } {
+ t.Run(test.name, func(t *testing.T) {
+ t.Parallel()
+
+ ms := omni.NewMachineStatus("", "")
+
+ ms.TypedSpec().Value = test.spec
+
+ omni.MachineStatusReconcileLabels(ms)
+
+ assert.Equal(t, test.want, ms.Metadata().Labels().Raw())
+ })
+ }
+}
+
+func TestLookup(t *testing.T) {
+ ms := omni.NewMachineStatus("", "")
+ ms.TypedSpec().Value = &specs.MachineStatusSpec{
+ Cluster: "random-cluster",
+ PlatformMetadata: &specs.MachineStatusSpec_PlatformMetadata{
+ Platform: "aws",
+ Hostname: "myhostname",
+ Region: "us-west",
+ },
+ Network: &specs.MachineStatusSpec_NetworkStatus{
+ Hostname: "my-network-hostname",
+ NetworkLinks: []*specs.MachineStatusSpec_NetworkStatus_NetworkLinkStatus{
+ {
+ HardwareAddress: "f2:64:e7:e0:0b:12",
+ },
+ },
+ },
+ }
+
+ ext, ok := typed.LookupExtension[runtime.Matcher](ms)
+ assert.True(t, ok)
+ assert.True(t, ext.Match("random-cluster"))
+ assert.True(t, ext.Match("myhostname"))
+ assert.True(t, ext.Match("my-network-hostname"))
+ assert.True(t, ext.Match("f2:64:e7:e0:0b:12"))
+ assert.False(t, ext.Match("random-cluster-2"))
+}
diff --git a/client/pkg/omni/resources/omni/omni.go b/client/pkg/omni/resources/omni/omni.go
new file mode 100644
index 000000000..d1c97da67
--- /dev/null
+++ b/client/pkg/omni/resources/omni/omni.go
@@ -0,0 +1,70 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package omni provides resources describing the Machines, Clusters, etc.
+package omni
+
+import "github.com/siderolabs/omni/client/pkg/omni/resources/registry"
+
+func init() {
+ registry.MustRegisterResource(ClusterBootstrapStatusType, &ClusterBootstrapStatus{})
+ registry.MustRegisterResource(ClusterConfigVersionType, &ClusterConfigVersion{})
+ registry.MustRegisterResource(ClusterEndpointType, &ClusterEndpoint{})
+ registry.MustRegisterResource(ClusterDestroyStatusType, &ClusterDestroyStatus{})
+ registry.MustRegisterResource(ClusterType, &Cluster{})
+ registry.MustRegisterResource(ClusterUUIDType, &ClusterUUID{})
+ registry.MustRegisterResource(ClusterSecretsType, &ClusterSecrets{})
+ registry.MustRegisterResource(ClusterStatusType, &ClusterStatus{})
+ registry.MustRegisterResource(ClusterMachineType, &ClusterMachine{})
+ registry.MustRegisterResource(ClusterMachineEncryptionKeyType, &ClusterMachineEncryptionKey{})
+ registry.MustRegisterResource(ClusterMachineIdentityType, &ClusterMachineIdentity{})
+ registry.MustRegisterResource(ClusterMachineStatusType, &ClusterMachineStatus{})
+ registry.MustRegisterResource(ClusterMachineConfigType, &ClusterMachineConfig{})
+ registry.MustRegisterResource(ClusterMachineConfigPatchesType, &ClusterMachineConfigPatches{})
+ registry.MustRegisterResource(ClusterMachineConfigStatusType, &ClusterMachineConfigStatus{})
+ registry.MustRegisterResource(ClusterMachineTalosVersionType, &ClusterMachineTalosVersion{})
+ registry.MustRegisterResource(ClusterMachineTemplateType, &ClusterMachineTemplate{})
+ registry.MustRegisterResource(ConfigPatchType, &ConfigPatch{})
+ registry.MustRegisterResource(EtcdAuditResultType, &EtcdAuditResult{})
+ registry.MustRegisterResource(EtcdBackupType, &EtcdBackup{})
+ registry.MustRegisterResource(EtcdBackupS3ConfType, &EtcdBackupS3Conf{})
+ registry.MustRegisterResource(EtcdBackupEncryptionType, &EtcdBackupEncryption{})
+ registry.MustRegisterResource(EtcdBackupStatusType, &EtcdBackupStatus{})
+ registry.MustRegisterResource(EtcdBackupOverallStatusType, &EtcdBackupOverallStatus{})
+ registry.MustRegisterResource(EtcdBackupStoreStatusType, &EtcdBackupStoreStatus{})
+ registry.MustRegisterResource(BackupDataType, &BackupData{})
+ registry.MustRegisterResource(EtcdManualBackupType, &EtcdManualBackup{})
+ registry.MustRegisterResource(ExposedServiceType, &ExposedService{})
+ registry.MustRegisterResource(FeaturesConfigType, &FeaturesConfig{})
+ registry.MustRegisterResource(ImagePullRequestType, &ImagePullRequest{})
+ registry.MustRegisterResource(ImagePullStatusType, &ImagePullStatus{})
+ registry.MustRegisterResource(InstallationMediaType, &InstallationMedia{})
+ registry.MustRegisterResource(ControlPlaneStatusType, &ControlPlaneStatus{})
+ registry.MustRegisterResource(KubeconfigType, &Kubeconfig{})
+ registry.MustRegisterResource(KubernetesStatusType, &KubernetesStatus{})
+ registry.MustRegisterResource(KubernetesUpgradeManifestStatusType, &KubernetesUpgradeManifestStatus{})
+ registry.MustRegisterResource(KubernetesUpgradeStatusType, &KubernetesUpgradeStatus{})
+ registry.MustRegisterResource(KubernetesVersionType, &KubernetesVersion{})
+ registry.MustRegisterResource(MachineLabelsType, &MachineLabels{})
+ registry.MustRegisterResource(MachineType, &Machine{})
+ registry.MustRegisterResource(MachineClassType, &MachineClass{})
+ registry.MustRegisterResource(MachineConfigGenOptionsType, &MachineConfigGenOptions{})
+ registry.MustRegisterResource(MachineSetType, &MachineSet{})
+ registry.MustRegisterResource(MachineSetDestroyStatusType, &MachineSetDestroyStatus{})
+ registry.MustRegisterResource(MachineSetNodeType, &MachineSetNode{})
+ registry.MustRegisterResource(MachineSetStatusType, &MachineSetStatus{})
+ registry.MustRegisterResource(MachineStatusType, &MachineStatus{})
+ registry.MustRegisterResource(MachineStatusSnapshotType, &MachineStatusSnapshot{})
+ registry.MustRegisterResource(MachineStatusLinkType, &MachineStatusLink{})
+ registry.MustRegisterResource(LoadBalancerConfigType, &LoadBalancerConfig{})
+ registry.MustRegisterResource(LoadBalancerStatusType, &LoadBalancerStatus{})
+ registry.MustRegisterResource(OngoingTaskType, &OngoingTask{})
+ registry.MustRegisterResource(RedactedClusterMachineConfigType, &RedactedClusterMachineConfig{})
+ registry.MustRegisterResource(SchematicType, &Schematic{})
+ registry.MustRegisterResource(SchematicConfigurationType, &SchematicConfiguration{})
+ registry.MustRegisterResource(TalosConfigType, &TalosConfig{})
+ registry.MustRegisterResource(TalosExtensionsType, &TalosExtensions{})
+ registry.MustRegisterResource(TalosVersionType, &TalosVersion{})
+ registry.MustRegisterResource(TalosUpgradeStatusType, &TalosUpgradeStatus{})
+}
diff --git a/client/pkg/omni/resources/omni/ongoing_task.go b/client/pkg/omni/resources/omni/ongoing_task.go
new file mode 100644
index 000000000..b1b92775f
--- /dev/null
+++ b/client/pkg/omni/resources/omni/ongoing_task.go
@@ -0,0 +1,52 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewOngoingTask creates new OngoingTask state.
+func NewOngoingTask(ns, id string) *OngoingTask {
+ return typed.NewResource[OngoingTaskSpec, OngoingTaskExtension](
+ resource.NewMetadata(ns, OngoingTaskType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.OngoingTaskSpec{}),
+ )
+}
+
+// OngoingTaskType is the type of OngoingTask resource.
+//
+// tsgen:OngoingTaskType
+const OngoingTaskType = resource.Type("OngoingTasks.omni.sidero.dev")
+
+// OngoingTask resource describes an ongoing background task.
+type OngoingTask = typed.Resource[OngoingTaskSpec, OngoingTaskExtension]
+
+// OngoingTaskSpec wraps specs.OngoingTaskSpec.
+type OngoingTaskSpec = protobuf.ResourceSpec[specs.OngoingTaskSpec, *specs.OngoingTaskSpec]
+
+// OngoingTaskExtension providers auxiliary methods for OngoingTask resource.
+type OngoingTaskExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (OngoingTaskExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: OngoingTaskType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Title",
+ JSONPath: "{.title}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/redacted_cluster_machine_config.go b/client/pkg/omni/resources/omni/redacted_cluster_machine_config.go
new file mode 100644
index 000000000..45560cc41
--- /dev/null
+++ b/client/pkg/omni/resources/omni/redacted_cluster_machine_config.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewRedactedClusterMachineConfig creates new redacted cluster machine config resource.
+func NewRedactedClusterMachineConfig(ns string, id resource.ID) *RedactedClusterMachineConfig {
+ return typed.NewResource[RedactedClusterMachineConfigSpec, RedactedClusterMachineConfigExtension](
+ resource.NewMetadata(ns, RedactedClusterMachineConfigType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.RedactedClusterMachineConfigSpec{}),
+ )
+}
+
+const (
+ // RedactedClusterMachineConfigType is the type of the RedactedClusterMachineConfig resource.
+ // tsgen:RedactedClusterMachineConfigType
+ RedactedClusterMachineConfigType = resource.Type("RedactedClusterMachineConfigs.omni.sidero.dev")
+)
+
+// RedactedClusterMachineConfig is the redacted version of the final machine config.
+type RedactedClusterMachineConfig = typed.Resource[RedactedClusterMachineConfigSpec, RedactedClusterMachineConfigExtension]
+
+// RedactedClusterMachineConfigSpec wraps specs.RedactedClusterMachineConfigSpec.
+type RedactedClusterMachineConfigSpec = protobuf.ResourceSpec[specs.RedactedClusterMachineConfigSpec, *specs.RedactedClusterMachineConfigSpec]
+
+// RedactedClusterMachineConfigExtension provides auxiliary methods for RedactedClusterMachineConfig resource.
+type RedactedClusterMachineConfigExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (RedactedClusterMachineConfigExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: RedactedClusterMachineConfigType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/schematic.go b/client/pkg/omni/resources/omni/schematic.go
new file mode 100644
index 000000000..ba329e5f1
--- /dev/null
+++ b/client/pkg/omni/resources/omni/schematic.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewSchematic creates new schematic resource.
+func NewSchematic(ns string, id resource.ID) *Schematic {
+ return typed.NewResource[SchematicSpec, SchematicExtension](
+ resource.NewMetadata(ns, SchematicType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.SchematicSpec{}),
+ )
+}
+
+const (
+ // SchematicType is the type of the Schematic resource.
+ // tsgen:SchematicType
+ SchematicType = resource.Type("Schematics.omni.sidero.dev")
+)
+
+// Schematic describes previosly generated image factory schematic.
+type Schematic = typed.Resource[SchematicSpec, SchematicExtension]
+
+// SchematicSpec wraps specs.SchematicSpec.
+type SchematicSpec = protobuf.ResourceSpec[specs.SchematicSpec, *specs.SchematicSpec]
+
+// SchematicExtension provides auxiliary methods for Schematic resource.
+type SchematicExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (SchematicExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: SchematicType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/schematic_configuration.go b/client/pkg/omni/resources/omni/schematic_configuration.go
new file mode 100644
index 000000000..4a0bc8a95
--- /dev/null
+++ b/client/pkg/omni/resources/omni/schematic_configuration.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewSchematicConfiguration creates new schematic configuration resource.
+func NewSchematicConfiguration(ns string, id resource.ID) *SchematicConfiguration {
+ return typed.NewResource[SchematicConfigurationSpec, SchematicConfigurationExtension](
+ resource.NewMetadata(ns, SchematicConfigurationType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.SchematicConfigurationSpec{}),
+ )
+}
+
+const (
+ // SchematicConfigurationType is the type of the SchematicConfiguration resource.
+ // tsgen:SchematicConfigurationType
+ SchematicConfigurationType = resource.Type("SchematicConfigurations.omni.sidero.dev")
+)
+
+// SchematicConfiguration describes desired machine schematic for the particular machine, machine set or cluster.
+type SchematicConfiguration = typed.Resource[SchematicConfigurationSpec, SchematicConfigurationExtension]
+
+// SchematicConfigurationSpec wraps specs.SchematicConfigurationSpec.
+type SchematicConfigurationSpec = protobuf.ResourceSpec[specs.SchematicConfigurationSpec, *specs.SchematicConfigurationSpec]
+
+// SchematicConfigurationExtension provides auxiliary methods for SchematicConfiguration resource.
+type SchematicConfigurationExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (SchematicConfigurationExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: SchematicConfigurationType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/secrets.go b/client/pkg/omni/resources/omni/secrets.go
new file mode 100644
index 000000000..ba972d6c6
--- /dev/null
+++ b/client/pkg/omni/resources/omni/secrets.go
@@ -0,0 +1,67 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "encoding/json"
+ "time"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+ "github.com/siderolabs/talos/pkg/machinery/config/generate/secrets"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterSecrets creates new ClusterSecrets state.
+func NewClusterSecrets(ns string, id resource.ID) *ClusterSecrets {
+ return typed.NewResource[ClusterSecretsSpec, ClusterSecretsExtension](
+ resource.NewMetadata(ns, ClusterSecretsType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterSecretsSpec{}),
+ )
+}
+
+// ClusterSecretsType is the type of ClusterSecrets resource.
+//
+// tsgen:ClusterSecretsType
+const ClusterSecretsType = resource.Type("ClusterSecrets.omni.sidero.dev")
+
+// ClusterSecrets resource describes cluster secrets.
+//
+// ClusterSecrets resource ID is a cluster ID.
+type ClusterSecrets = typed.Resource[ClusterSecretsSpec, ClusterSecretsExtension]
+
+// ClusterSecretsSpec wraps specs.ClusterSecretsSpec.
+type ClusterSecretsSpec = protobuf.ResourceSpec[specs.ClusterSecretsSpec, *specs.ClusterSecretsSpec]
+
+// ClusterSecretsExtension providers auxiliary methods for ClusterSecrets resource.
+type ClusterSecretsExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterSecretsExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterSecretsType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
+
+// ToSecretsBundle decodes the resource into generate.SecretsBundle resource.
+func ToSecretsBundle(clusterSecrets *ClusterSecrets) (*secrets.Bundle, error) {
+ secretBundle := &secrets.Bundle{}
+
+ err := json.Unmarshal(clusterSecrets.TypedSpec().Value.Data, secretBundle)
+ if err != nil {
+ return nil, err
+ }
+
+ secretBundle.Clock = secrets.NewFixedClock(time.Now())
+
+ return secretBundle, err
+}
diff --git a/client/pkg/omni/resources/omni/talos_extensions.go b/client/pkg/omni/resources/omni/talos_extensions.go
new file mode 100644
index 000000000..33c445923
--- /dev/null
+++ b/client/pkg/omni/resources/omni/talos_extensions.go
@@ -0,0 +1,47 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewTalosExtensions creates new Kubernetes component version/readiness state.
+func NewTalosExtensions(ns, id string) *TalosExtensions {
+ return typed.NewResource[TalosExtensionsSpec, TalosExtensionsExtension](
+ resource.NewMetadata(ns, TalosExtensionsType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.TalosExtensionsSpec{}),
+ )
+}
+
+// TalosExtensionsType is resource type that contains all available extensions for a Talos version.
+//
+// tsgen:TalosExtensionsType
+const TalosExtensionsType = resource.Type("TalosExtensions.omni.sidero.dev")
+
+// TalosExtensions is resource type that contains all available extensions for a Talos version.
+type TalosExtensions = typed.Resource[TalosExtensionsSpec, TalosExtensionsExtension]
+
+// TalosExtensionsSpec wraps specs.TalosExtensionsSpec.
+type TalosExtensionsSpec = protobuf.ResourceSpec[specs.TalosExtensionsSpec, *specs.TalosExtensionsSpec]
+
+// TalosExtensionsExtension providers auxiliary methods for TalosExtensions resource.
+type TalosExtensionsExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (TalosExtensionsExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: TalosExtensionsType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/talos_upgrade_status.go b/client/pkg/omni/resources/omni/talos_upgrade_status.go
new file mode 100644
index 000000000..cbdeb989f
--- /dev/null
+++ b/client/pkg/omni/resources/omni/talos_upgrade_status.go
@@ -0,0 +1,47 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewTalosUpgradeStatus creates new LoadBalancer state.
+func NewTalosUpgradeStatus(ns, id string) *TalosUpgradeStatus {
+ return typed.NewResource[TalosUpgradeStatusSpec, TalosUpgradeStatusExtension](
+ resource.NewMetadata(ns, TalosUpgradeStatusType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.TalosUpgradeStatusSpec{}),
+ )
+}
+
+// TalosUpgradeStatusType is a resource type that contains the current state of the machine set Talos upgrade.
+//
+// tsgen:TalosUpgradeStatusType
+const TalosUpgradeStatusType = resource.Type("TalosUpgradeStatuses.omni.sidero.dev")
+
+// TalosUpgradeStatus is a resource type that contains the configuration of a load balancer.
+type TalosUpgradeStatus = typed.Resource[TalosUpgradeStatusSpec, TalosUpgradeStatusExtension]
+
+// TalosUpgradeStatusSpec wraps specs.TalosUpgradeStatusSpec.
+type TalosUpgradeStatusSpec = protobuf.ResourceSpec[specs.TalosUpgradeStatusSpec, *specs.TalosUpgradeStatusSpec]
+
+// TalosUpgradeStatusExtension providers auxiliary methods for TalosUpgradeStatus resource.
+type TalosUpgradeStatusExtension struct{}
+
+// ResourceDefinition implements typed.ResourceDefinition interface.
+func (TalosUpgradeStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: TalosUpgradeStatusType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/omni/talos_version.go b/client/pkg/omni/resources/omni/talos_version.go
new file mode 100644
index 000000000..08246af3d
--- /dev/null
+++ b/client/pkg/omni/resources/omni/talos_version.go
@@ -0,0 +1,53 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewTalosVersion creates new cluster resource.
+func NewTalosVersion(ns string, id resource.ID) *TalosVersion {
+ return typed.NewResource[TalosVersionSpec, TalosVersionExtension](
+ resource.NewMetadata(ns, TalosVersionType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.TalosVersionSpec{}),
+ )
+}
+
+const (
+ // TalosVersionType is the type of the TalosVersion resource.
+ // tsgen:TalosVersionType
+ TalosVersionType = resource.Type("TalosVersions.omni.sidero.dev")
+)
+
+// TalosVersion describes available Talos version.
+type TalosVersion = typed.Resource[TalosVersionSpec, TalosVersionExtension]
+
+// TalosVersionSpec wraps specs.TalosVersionSpec.
+type TalosVersionSpec = protobuf.ResourceSpec[specs.TalosVersionSpec, *specs.TalosVersionSpec]
+
+// TalosVersionExtension provides auxiliary methods for TalosVersion resource.
+type TalosVersionExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (TalosVersionExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: TalosVersionType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Kubernetes Versions",
+ JSONPath: "{.compatiblekubernetesversions}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/omni/talosconfig.go b/client/pkg/omni/resources/omni/talosconfig.go
new file mode 100644
index 000000000..f2f791aa8
--- /dev/null
+++ b/client/pkg/omni/resources/omni/talosconfig.go
@@ -0,0 +1,67 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omni
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+ clientconfig "github.com/siderolabs/talos/pkg/machinery/client/config"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewTalosConfig creates new Talos config resource.
+func NewTalosConfig(ns resource.Namespace, id resource.ID) *TalosConfig {
+ return typed.NewResource[TalosConfigSpec, TalosConfigExtension](
+ resource.NewMetadata(ns, TalosConfigType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.TalosConfigSpec{}),
+ )
+}
+
+const (
+ // TalosConfigType is the type of the TalosConfig resource.
+ TalosConfigType = resource.Type("TalosConfigs.omni.sidero.dev")
+)
+
+// TalosConfig describes client config for Talos API.
+type TalosConfig = typed.Resource[TalosConfigSpec, TalosConfigExtension]
+
+// TalosConfigSpec wraps specs.TalosConfigSpec.
+type TalosConfigSpec = protobuf.ResourceSpec[specs.TalosConfigSpec, *specs.TalosConfigSpec]
+
+// TalosConfigExtension provides auxiliary methods for TalosConfig resource.
+type TalosConfigExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (TalosConfigExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: TalosConfigType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
+
+// NewTalosClientConfig creates talos config.Config from TalosConfig resource.
+func NewTalosClientConfig(in *TalosConfig, endpoints ...string) *clientconfig.Config {
+ spec := in.TypedSpec().Value
+
+ config := &clientconfig.Config{
+ Context: in.Metadata().ID(),
+ Contexts: map[string]*clientconfig.Context{
+ in.Metadata().ID(): {
+ Endpoints: endpoints,
+ CA: spec.Ca,
+ Crt: spec.Crt,
+ Key: spec.Key,
+ },
+ },
+ }
+
+ return config
+}
diff --git a/client/pkg/omni/resources/registry/registry.go b/client/pkg/omni/resources/registry/registry.go
new file mode 100644
index 000000000..8fad61795
--- /dev/null
+++ b/client/pkg/omni/resources/registry/registry.go
@@ -0,0 +1,34 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package registry specifies the list of resources to be registered in the state.
+package registry
+
+import (
+ "fmt"
+
+ "github.com/cosi-project/runtime/pkg/controller/generic"
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+)
+
+// Resources defines all resources added to the resource definitions.
+var Resources []generic.ResourceWithRD
+
+// MustRegisterResource adds resource to the registry, registers it's protobuf decoders/encoders.
+func MustRegisterResource[T any, R interface {
+ protobuf.Res[T]
+ meta.ResourceDefinitionProvider
+}](
+ resourceType resource.Type,
+ r R,
+) {
+ Resources = append(Resources, r)
+
+ err := protobuf.RegisterResource(resourceType, r)
+ if err != nil {
+ panic(fmt.Errorf("failed to register resource %T: %w", r, err))
+ }
+}
diff --git a/client/pkg/omni/resources/resources.go b/client/pkg/omni/resources/resources.go
new file mode 100644
index 000000000..1e9beb1ec
--- /dev/null
+++ b/client/pkg/omni/resources/resources.go
@@ -0,0 +1,44 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package resources defines various internal Omni resources.
+package resources
+
+import "github.com/cosi-project/runtime/pkg/resource"
+
+// DefaultNamespace is the default namespace for all resources.
+//
+// DefaultNamespace has persistence enabled.
+//
+// tsgen:DefaultNamespace
+const DefaultNamespace resource.Namespace = "default"
+
+// EphemeralNamespace is the namespace for resources which are not persisted.
+//
+// EphemeralNamespace has no persistence.
+//
+// tsgen:EphemeralNamespace
+const EphemeralNamespace resource.Namespace = "ephemeral"
+
+// MetricsNamespace is the namespace for resources that store metrics, such as counters.
+// It is backed by the secondary storage which is optimized for frequently updated data and has relaxed consistency guarantees.
+//
+// tsgen:MetricsNamespace
+const MetricsNamespace resource.Namespace = "metrics"
+
+// VirtualNamespace is the namespace where resources are virtual (synthetic),
+// i.e. they behave like resources but not actual resources. For example, a resource whose contents change
+// based on the requester user's identity.
+//
+// VirtualNamespace has no persistence.
+//
+// tsgen:VirtualNamespace
+const VirtualNamespace resource.Namespace = "virtual"
+
+// ExternalNamespace is the namespace where resources are external
+//
+// ExternalNamespace has no persistence.
+//
+// tsgen:ExternalNamespace
+const ExternalNamespace resource.Namespace = "external"
diff --git a/client/pkg/omni/resources/siderolink/config.go b/client/pkg/omni/resources/siderolink/config.go
new file mode 100644
index 000000000..e04d27432
--- /dev/null
+++ b/client/pkg/omni/resources/siderolink/config.go
@@ -0,0 +1,55 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package siderolink
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+)
+
+const (
+ // ConfigType is the type of Config resource.
+ //
+ // tsgen:ConfigType
+ ConfigType = resource.Type("Configs.omni.sidero.dev")
+ // ConfigID is the config resource name.
+ //
+ // tsgen:ConfigID
+ ConfigID = resource.ID("siderolink-config")
+)
+
+// NewConfig creates new Config resource.
+func NewConfig(ns string) *Config {
+ return typed.NewResource[ConfigSpec, ConfigExtension](
+ resource.NewMetadata(ns, ConfigType, ConfigID, resource.VersionUndefined),
+ protobuf.NewResourceSpec(
+ &specs.SiderolinkConfigSpec{},
+ ),
+ )
+}
+
+// Config resource keeps connected nodes state.
+type Config = typed.Resource[ConfigSpec, ConfigExtension]
+
+// ConfigSpec wraps specs.SiderolinkConfigSpec.
+type ConfigSpec = protobuf.ResourceSpec[specs.SiderolinkConfigSpec, *specs.SiderolinkConfigSpec]
+
+// ConfigExtension providers auxiliary methods for Config resource.
+type ConfigExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ConfigExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ConfigType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: Namespace,
+ PrintColumns: []meta.PrintColumn{},
+ Sensitivity: meta.Sensitive,
+ }
+}
diff --git a/client/pkg/omni/resources/siderolink/connection_params.go b/client/pkg/omni/resources/siderolink/connection_params.go
new file mode 100644
index 000000000..0b326a452
--- /dev/null
+++ b/client/pkg/omni/resources/siderolink/connection_params.go
@@ -0,0 +1,61 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package siderolink
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+)
+
+// NewConnectionParams creates new ConnectionParams state.
+func NewConnectionParams(ns, id string) *ConnectionParams {
+ return typed.NewResource[ConnectionParamsSpec, ConnectionParamsExtension](
+ resource.NewMetadata(ns, ConnectionParamsType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ConnectionParamsSpec{}),
+ )
+}
+
+// ConnectionParamsType is the type of ConnectionParams resource.
+//
+// tsgen:ConnectionParamsType
+const ConnectionParamsType = resource.Type("ConnectionParams.omni.sidero.dev")
+
+// ConnectionParams resource keeps generated kernel arguments as a resource.
+//
+// ConnectionParams resource ID is a machine UUID.
+type ConnectionParams = typed.Resource[ConnectionParamsSpec, ConnectionParamsExtension]
+
+// ConnectionParamsSpec wraps specs.ConnectionParamsSpec.
+type ConnectionParamsSpec = protobuf.ResourceSpec[specs.ConnectionParamsSpec, *specs.ConnectionParamsSpec]
+
+// ConnectionParamsExtension providers auxiliary methods for ConnectionParams resource.
+type ConnectionParamsExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ConnectionParamsExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ConnectionParamsType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: Namespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "JoinToken",
+ JSONPath: "{.jointoken}",
+ },
+ {
+ Name: "API",
+ JSONPath: "{.apiendpoint}",
+ },
+ {
+ Name: "Wireguard",
+ JSONPath: "{.wireguardendpoint}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/siderolink/link.go b/client/pkg/omni/resources/siderolink/link.go
new file mode 100644
index 000000000..e007812d6
--- /dev/null
+++ b/client/pkg/omni/resources/siderolink/link.go
@@ -0,0 +1,57 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package siderolink
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+)
+
+// NewLink creates new Link state.
+func NewLink(ns, id string, spec *specs.SiderolinkSpec) *Link {
+ return typed.NewResource[LinkSpec, LinkExtension](
+ resource.NewMetadata(ns, LinkType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(spec),
+ )
+}
+
+// LinkType is the type of Link resource.
+//
+// tsgen:SiderolinkResourceType
+const LinkType = resource.Type("Links.omni.sidero.dev")
+
+// Link resource keeps connected nodes state.
+//
+// Link resource ID is a machine UUID.
+type Link = typed.Resource[LinkSpec, LinkExtension]
+
+// LinkSpec wraps specs.SiderolinkSpec.
+type LinkSpec = protobuf.ResourceSpec[specs.SiderolinkSpec, *specs.SiderolinkSpec]
+
+// LinkExtension providers auxiliary methods for Link resource.
+type LinkExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (LinkExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: LinkType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: Namespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Connected",
+ JSONPath: "{.connected}",
+ },
+ {
+ Name: "LastEndpoint",
+ JSONPath: "{.lastendpoint}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/siderolink/linkcounter.go b/client/pkg/omni/resources/siderolink/linkcounter.go
new file mode 100644
index 000000000..615f4334f
--- /dev/null
+++ b/client/pkg/omni/resources/siderolink/linkcounter.go
@@ -0,0 +1,55 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package siderolink
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+)
+
+// NOTE: This resources is not used anymore, but still used in the migration code.
+
+// NewDeprecatedLinkCounter creates new LinkCounter state.
+func NewDeprecatedLinkCounter(ns, id string) *DeprecatedLinkCounter {
+ return typed.NewResource[DeprecatedLinkCounterSpec, DeprecatedLinkCounterExtension](
+ resource.NewMetadata(ns, DeprecatedLinkCounterType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.SiderolinkCounterSpec{}),
+ )
+}
+
+// DeprecatedLinkCounterType is the type of LinkCounter resource.
+const DeprecatedLinkCounterType = resource.Type("LinkCounters.omni.sidero.dev")
+
+// DeprecatedLinkCounter resource was removed, but still used only in the migration code.
+type DeprecatedLinkCounter = typed.Resource[DeprecatedLinkCounterSpec, DeprecatedLinkCounterExtension]
+
+// DeprecatedLinkCounterSpec wraps specs.SiderolinkSpec.
+type DeprecatedLinkCounterSpec = protobuf.ResourceSpec[specs.SiderolinkCounterSpec, *specs.SiderolinkCounterSpec]
+
+// DeprecatedLinkCounterExtension providers auxiliary methods for LinkCounter resource.
+type DeprecatedLinkCounterExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (DeprecatedLinkCounterExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: DeprecatedLinkCounterType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: CounterNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "RX",
+ JSONPath: "{.bytesreceived}",
+ },
+ {
+ Name: "TX",
+ JSONPath: "{.bytessent}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/siderolink/siderolink.go b/client/pkg/omni/resources/siderolink/siderolink.go
new file mode 100644
index 000000000..9e4552985
--- /dev/null
+++ b/client/pkg/omni/resources/siderolink/siderolink.go
@@ -0,0 +1,28 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package siderolink contains SideroLink controller resources.
+package siderolink
+
+import (
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+ "github.com/siderolabs/omni/client/pkg/omni/resources/registry"
+)
+
+// Namespace is the default namespace for the SideroLink resources.
+const Namespace = resources.DefaultNamespace
+
+// CounterNamespace is the default namespace for the SideroLink counter resources.
+//
+// tsgen:SiderolinkCounterNamespace
+const CounterNamespace = resources.MetricsNamespace
+
+func init() {
+ registry.MustRegisterResource(ConnectionParamsType, &ConnectionParams{})
+ registry.MustRegisterResource(ConfigType, &Config{})
+ registry.MustRegisterResource(LinkType, &Link{})
+
+ // NOTE: this resource is not used anymore, but still used in the migration code.
+ registry.MustRegisterResource(DeprecatedLinkCounterType, &DeprecatedLinkCounter{})
+}
diff --git a/client/pkg/omni/resources/system/cert_refresh_tick.go b/client/pkg/omni/resources/system/cert_refresh_tick.go
new file mode 100644
index 000000000..19399706f
--- /dev/null
+++ b/client/pkg/omni/resources/system/cert_refresh_tick.go
@@ -0,0 +1,44 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package system
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewCertRefreshTick creates new CertRefreshTick state.
+func NewCertRefreshTick(ns, id string) *CertRefreshTick {
+ return typed.NewResource[CertRefreshTickSpec, CertRefreshTickExtension](
+ resource.NewMetadata(ns, CertRefreshTickType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.CertRefreshTickSpec{}),
+ )
+}
+
+// CertRefreshTickType is the type of CertRefreshTick resource.
+const CertRefreshTickType = resource.Type("CertRefreshTicks.system.sidero.dev")
+
+// CertRefreshTick resource is created when it's time to refresh the certificates.
+type CertRefreshTick = typed.Resource[CertRefreshTickSpec, CertRefreshTickExtension]
+
+// CertRefreshTickSpec wraps specs.CertRefreshTickSpec.
+type CertRefreshTickSpec = protobuf.ResourceSpec[specs.CertRefreshTickSpec, *specs.CertRefreshTickSpec]
+
+// CertRefreshTickExtension providers auxiliary methods for CertRefreshTick resource.
+type CertRefreshTickExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (CertRefreshTickExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: CertRefreshTickType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.EphemeralNamespace,
+ }
+}
diff --git a/client/pkg/omni/resources/system/dbversion.go b/client/pkg/omni/resources/system/dbversion.go
new file mode 100644
index 000000000..009673985
--- /dev/null
+++ b/client/pkg/omni/resources/system/dbversion.go
@@ -0,0 +1,48 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package system
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewDBVersion creates new DBVersion state.
+func NewDBVersion(ns, id string) *DBVersion {
+ return typed.NewResource[DBVersionSpec, DBVersionExtension](
+ resource.NewMetadata(ns, DBVersionType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.DBVersionSpec{}),
+ )
+}
+
+const (
+ // DBVersionType is the type of DBVersion resource.
+ DBVersionType = resource.Type("DBVersions.system.sidero.dev")
+ // DBVersionID is the single resource id.
+ DBVersionID = resource.ID("current")
+)
+
+// DBVersion resource describes current DB version (migrations state).
+type DBVersion = typed.Resource[DBVersionSpec, DBVersionExtension]
+
+// DBVersionSpec wraps specs.DBVersionSpec.
+type DBVersionSpec = protobuf.ResourceSpec[specs.DBVersionSpec, *specs.DBVersionSpec]
+
+// DBVersionExtension providers auxiliary methods for DBVersion resource.
+type DBVersionExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (DBVersionExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: DBVersionType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.DefaultNamespace,
+ }
+}
diff --git a/client/pkg/omni/resources/system/system.go b/client/pkg/omni/resources/system/system.go
new file mode 100644
index 000000000..dd5934924
--- /dev/null
+++ b/client/pkg/omni/resources/system/system.go
@@ -0,0 +1,14 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package system provides resources related to the DB state itself.
+package system
+
+import "github.com/siderolabs/omni/client/pkg/omni/resources/registry"
+
+func init() {
+ registry.MustRegisterResource(CertRefreshTickType, &CertRefreshTick{})
+ registry.MustRegisterResource(DBVersionType, &DBVersion{})
+ registry.MustRegisterResource(SysVersionType, &SysVersion{})
+}
diff --git a/client/pkg/omni/resources/system/sysversion.go b/client/pkg/omni/resources/system/sysversion.go
new file mode 100644
index 000000000..f22101f8d
--- /dev/null
+++ b/client/pkg/omni/resources/system/sysversion.go
@@ -0,0 +1,52 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package system
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewSysVersion creates new SysVersion state.
+func NewSysVersion(ns, id string) *SysVersion {
+ return typed.NewResource[SysVersionSpec, SysVersionExtension](
+ resource.NewMetadata(ns, SysVersionType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.SysVersionSpec{}),
+ )
+}
+
+const (
+ // SysVersionType is the type of SysVersion resource.
+ //
+ // tsgen:SysVersionType
+ SysVersionType = resource.Type("SysVersions.system.sidero.dev")
+ // SysVersionID is the single resource id.
+ //
+ // tsgen:SysVersionID
+ SysVersionID = resource.ID("current")
+)
+
+// SysVersion resource describes current DB SysVersion (migrations state).
+type SysVersion = typed.Resource[SysVersionSpec, SysVersionExtension]
+
+// SysVersionSpec wraps specs.SysVersionSpec.
+type SysVersionSpec = protobuf.ResourceSpec[specs.SysVersionSpec, *specs.SysVersionSpec]
+
+// SysVersionExtension providers auxiliary methods for SysVersion resource.
+type SysVersionExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (SysVersionExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: SysVersionType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.EphemeralNamespace,
+ }
+}
diff --git a/client/pkg/omni/resources/virtual/cluster_permissions.go b/client/pkg/omni/resources/virtual/cluster_permissions.go
new file mode 100644
index 000000000..714198bd4
--- /dev/null
+++ b/client/pkg/omni/resources/virtual/cluster_permissions.go
@@ -0,0 +1,49 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package virtual
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewClusterPermissions creates a new ClusterPermissions resource.
+func NewClusterPermissions(id resource.ID) *ClusterPermissions {
+ return typed.NewResource[ClusterPermissionsSpec, ClusterPermissionsExtension](
+ resource.NewMetadata(resources.VirtualNamespace, ClusterPermissionsType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.ClusterPermissionsSpec{}),
+ )
+}
+
+const (
+ // ClusterPermissionsType is the type of ClusterPermissions resource.
+ //
+ // tsgen:ClusterPermissionsType
+ ClusterPermissionsType = resource.Type("ClusterPermissions.omni.sidero.dev")
+)
+
+// ClusterPermissions resource describes a user's set of permissions on a cluster.
+type ClusterPermissions = typed.Resource[ClusterPermissionsSpec, ClusterPermissionsExtension]
+
+// ClusterPermissionsSpec wraps specs.ClusterPermissionsSpec.
+type ClusterPermissionsSpec = protobuf.ResourceSpec[specs.ClusterPermissionsSpec, *specs.ClusterPermissionsSpec]
+
+// ClusterPermissionsExtension providers auxiliary methods for ClusterPermissions resource.
+type ClusterPermissionsExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (ClusterPermissionsExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: ClusterPermissionsType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.VirtualNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/virtual/current_user.go b/client/pkg/omni/resources/virtual/current_user.go
new file mode 100644
index 000000000..357bc1329
--- /dev/null
+++ b/client/pkg/omni/resources/virtual/current_user.go
@@ -0,0 +1,63 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package virtual
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// CurrentUserID is the default and the only allowed ID for CurrentUser resource.
+//
+// tsgen:CurrentUserID
+const CurrentUserID = "current"
+
+// NewCurrentUser creates a new CurrentUser resource.
+func NewCurrentUser() *CurrentUser {
+ return typed.NewResource[CurrentUserSpec, CurrentUserExtension](
+ resource.NewMetadata(resources.VirtualNamespace, CurrentUserType, CurrentUserID, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.CurrentUserSpec{}),
+ )
+}
+
+const (
+ // CurrentUserType is the type of CurrentUser resource.
+ //
+ // tsgen:CurrentUserType
+ CurrentUserType = resource.Type("CurrentUsers.omni.sidero.dev")
+)
+
+// CurrentUser resource describes a user current user.
+type CurrentUser = typed.Resource[CurrentUserSpec, CurrentUserExtension]
+
+// CurrentUserSpec wraps specs.CurrentUserSpec.
+type CurrentUserSpec = protobuf.ResourceSpec[specs.CurrentUserSpec, *specs.CurrentUserSpec]
+
+// CurrentUserExtension providers auxiliary methods for CurrentUser resource.
+type CurrentUserExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (CurrentUserExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: CurrentUserType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.VirtualNamespace,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Identity",
+ JSONPath: "{.identity}",
+ },
+ {
+ Name: "Role",
+ JSONPath: "{.role}",
+ },
+ },
+ }
+}
diff --git a/client/pkg/omni/resources/virtual/kubernetes_usage.go b/client/pkg/omni/resources/virtual/kubernetes_usage.go
new file mode 100644
index 000000000..a48b559d3
--- /dev/null
+++ b/client/pkg/omni/resources/virtual/kubernetes_usage.go
@@ -0,0 +1,47 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package virtual
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+// NewKubernetesUsage creates new Kubernetes usage resource.
+func NewKubernetesUsage(ns, id string) *KubernetesUsage {
+ return typed.NewResource[KubernetesUsageSpec, KubernetesUsageExtension](
+ resource.NewMetadata(ns, KubernetesUsageType, id, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.KubernetesUsageSpec{}),
+ )
+}
+
+// KubernetesUsageType is a resource type that contains kubernetes resource usage info.
+//
+// tsgen:KubernetesUsageType
+const KubernetesUsageType = resource.Type("KubernetesUsages.omni.sidero.dev")
+
+// KubernetesUsage is a resource type that contains the state of Kubernetes components in the cluster.
+type KubernetesUsage = typed.Resource[KubernetesUsageSpec, KubernetesUsageExtension]
+
+// KubernetesUsageSpec wraps specs.KubernetesUsageSpec.
+type KubernetesUsageSpec = protobuf.ResourceSpec[specs.KubernetesUsageSpec, *specs.KubernetesUsageSpec]
+
+// KubernetesUsageExtension providers auxiliary methods for KubernetesUsage resource.
+type KubernetesUsageExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (KubernetesUsageExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: KubernetesUsageType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.VirtualNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/virtual/permissions.go b/client/pkg/omni/resources/virtual/permissions.go
new file mode 100644
index 000000000..fb70eb3a8
--- /dev/null
+++ b/client/pkg/omni/resources/virtual/permissions.go
@@ -0,0 +1,56 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package virtual
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/omni/client/api/omni/specs"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+)
+
+const (
+ // PermissionsID is the ID of Permissions resource.
+ //
+ // tsgen:PermissionsID
+ PermissionsID resource.ID = "permissions"
+)
+
+// NewPermissions creates a new Permissions resource.
+func NewPermissions() *Permissions {
+ return typed.NewResource[PermissionsSpec, PermissionsExtension](
+ resource.NewMetadata(resources.VirtualNamespace, PermissionsType, PermissionsID, resource.VersionUndefined),
+ protobuf.NewResourceSpec(&specs.PermissionsSpec{}),
+ )
+}
+
+const (
+ // PermissionsType is the type of Permissions resource.
+ //
+ // tsgen:PermissionsType
+ PermissionsType = resource.Type("Permissions.omni.sidero.dev")
+)
+
+// Permissions resource describes a user's global set of permissions.
+type Permissions = typed.Resource[PermissionsSpec, PermissionsExtension]
+
+// PermissionsSpec wraps specs.PermissionsSpec.
+type PermissionsSpec = protobuf.ResourceSpec[specs.PermissionsSpec, *specs.PermissionsSpec]
+
+// PermissionsExtension providers auxiliary methods for Permissions resource.
+type PermissionsExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (PermissionsExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: PermissionsType,
+ Aliases: []resource.Type{},
+ DefaultNamespace: resources.VirtualNamespace,
+ PrintColumns: []meta.PrintColumn{},
+ }
+}
diff --git a/client/pkg/omni/resources/virtual/virtual.go b/client/pkg/omni/resources/virtual/virtual.go
new file mode 100644
index 000000000..532df54a6
--- /dev/null
+++ b/client/pkg/omni/resources/virtual/virtual.go
@@ -0,0 +1,15 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package virtual contains virtual resources.
+package virtual
+
+import "github.com/siderolabs/omni/client/pkg/omni/resources/registry"
+
+func init() {
+ registry.MustRegisterResource(CurrentUserType, &CurrentUser{})
+ registry.MustRegisterResource(ClusterPermissionsType, &ClusterPermissions{})
+ registry.MustRegisterResource(KubernetesUsageType, &KubernetesUsage{})
+ registry.MustRegisterResource(PermissionsType, &Permissions{})
+}
diff --git a/client/pkg/omnictl/apply.go b/client/pkg/omnictl/apply.go
new file mode 100644
index 000000000..3c57bb6ba
--- /dev/null
+++ b/client/pkg/omnictl/apply.go
@@ -0,0 +1,176 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omnictl
+
+import (
+ "bytes"
+ "context"
+ "errors"
+ "fmt"
+ "io"
+ "os"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/state"
+ "github.com/sergi/go-diff/diffmatchpatch"
+ "github.com/siderolabs/gen/ensure"
+ "github.com/spf13/cobra"
+ "gopkg.in/yaml.v3"
+
+ "github.com/siderolabs/omni/client/pkg/client"
+ "github.com/siderolabs/omni/client/pkg/omnictl/internal/access"
+)
+
+var applyCmdFlags struct {
+ resFile string
+ options options
+}
+
+// applyCmd represents apply config command.
+var applyCmd = &cobra.Command{
+ Use: "apply",
+ Short: "Create or update resource using YAML file as an input",
+ Args: cobra.NoArgs,
+ RunE: func(*cobra.Command, []string) error {
+ yamlRaw, err := os.ReadFile(applyCmdFlags.resFile)
+ if err != nil {
+ return fmt.Errorf("failed to read resource yaml file %q: %w", applyCmdFlags.resFile, err)
+ }
+
+ if applyCmdFlags.options.dryRun {
+ applyCmdFlags.options.verbose = true
+ }
+
+ return access.WithClient(applyConfig(yamlRaw))
+ },
+}
+
+func applyConfig(yamlRaw []byte) func(ctx context.Context, client *client.Client) error {
+ return func(ctx context.Context, client *client.Client) error {
+ st := client.Omni().State()
+ dec := yaml.NewDecoder(bytes.NewReader(yamlRaw))
+
+ var resources []resource.Resource
+
+ for {
+ var res protobuf.YAMLResource
+
+ err := dec.Decode(&res)
+ if errors.Is(err, io.EOF) {
+ break
+ }
+
+ if err != nil {
+ return err
+ }
+
+ resources = append(resources, res.Resource())
+ }
+
+ for _, res := range resources {
+ got, err := st.Get(ctx, res.Metadata())
+ if err != nil && !state.IsNotFoundError(err) {
+ return fmt.Errorf("failed to get resource '%s' '%s': %w", res.Metadata().ID(), res.Metadata().Type(), err)
+ }
+
+ if state.IsNotFoundError(err) {
+ err = createResource(ctx, st, res, applyCmdFlags.options)
+ if err != nil {
+ return err
+ }
+
+ continue
+ }
+
+ err = updateResource(ctx, st, got, res, applyCmdFlags.options)
+ if err != nil {
+ return fmt.Errorf("failed to update resource '%s' '%s': %w", res.Metadata().ID(), res.Metadata().Type(), err)
+ }
+ }
+
+ return nil
+ }
+}
+
+type options struct {
+ dryRun bool
+ verbose bool
+}
+
+func createResource(ctx context.Context, st state.State, res resource.Resource, opts options) error {
+ if opts.verbose {
+ out, err := marshalResource(res)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("Creating resource '%s'\n\n%s\n\n", res.Metadata().ID(), out)
+ }
+
+ if opts.dryRun {
+ return nil
+ }
+
+ if err := st.Create(ctx, res); err != nil {
+ return fmt.Errorf("failed to create resource '%s' '%s': %w", res.Metadata().ID(), res.Metadata().Type(), err)
+ }
+
+ return nil
+}
+
+func updateResource(ctx context.Context, st state.State, got resource.Resource, res resource.Resource, opts options) error {
+ if opts.verbose {
+ outGot, err := marshalResource(got)
+ if err != nil {
+ return err
+ }
+
+ outRes, err := marshalResource(res)
+ if err != nil {
+ return err
+ }
+
+ dmp := diffmatchpatch.New()
+ diffs := dmp.DiffMain(outGot, outRes, false)
+
+ fmt.Printf("Updating resource '%s'\n\n%s\n\n", res.Metadata().ID(), dmp.DiffPrettyText(diffs))
+ }
+
+ if opts.dryRun {
+ return nil
+ }
+
+ res.Metadata().SetVersion(got.Metadata().Version())
+
+ if err := st.Update(ctx, res); err != nil {
+ return fmt.Errorf("failed to update resource '%s' '%s': %w", res.Metadata().ID(), res.Metadata().Type(), err)
+ }
+
+ return nil
+}
+
+func marshalResource(res resource.Resource) (string, error) {
+ yamlRes, err := resource.MarshalYAML(res)
+ if err != nil {
+ return "", fmt.Errorf("failed to marshal resource '%s' '%s': %w", res.Metadata().ID(), res.Metadata().Type(), err)
+ }
+
+ out, err := yaml.Marshal(yamlRes)
+ if err != nil {
+ return "", fmt.Errorf("failed to marshal resource '%s' '%s': %w", res.Metadata().ID(), res.Metadata().Type(), err)
+ }
+
+ return string(out), nil
+}
+
+func init() {
+ applyCmd.PersistentFlags().StringVarP(&applyCmdFlags.resFile, "file", "f", "", "Resource file to load and apply")
+ applyCmd.PersistentFlags().BoolVarP(&applyCmdFlags.options.verbose, "verbose", "v", false, "Verbose output")
+ applyCmd.PersistentFlags().BoolVarP(&applyCmdFlags.options.dryRun, "dry-run", "d", false, "Dry run, implies verbose")
+ ensure.NoError(applyCmd.MarkPersistentFlagRequired("file"))
+
+ RootCmd.AddCommand(applyCmd)
+}
diff --git a/client/pkg/omnictl/cluster.go b/client/pkg/omnictl/cluster.go
new file mode 100644
index 000000000..6e2a575cd
--- /dev/null
+++ b/client/pkg/omnictl/cluster.go
@@ -0,0 +1,11 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omnictl
+
+import "github.com/siderolabs/omni/client/pkg/omnictl/cluster"
+
+func init() {
+ RootCmd.AddCommand(cluster.RootCmd())
+}
diff --git a/client/pkg/omnictl/cluster/cluster.go b/client/pkg/omnictl/cluster/cluster.go
new file mode 100644
index 000000000..81aca4a54
--- /dev/null
+++ b/client/pkg/omnictl/cluster/cluster.go
@@ -0,0 +1,32 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package cluster contains commands related to cluster operations.
+package cluster
+
+import (
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/pkg/omnictl/cluster/kubernetes"
+ "github.com/siderolabs/omni/client/pkg/omnictl/cluster/template"
+)
+
+// clusterCmd represents the cluster sub-command.
+var clusterCmd = &cobra.Command{
+ Use: "cluster",
+ Aliases: []string{"c"},
+ Short: "Cluster-related subcommands.",
+ Long: `Commands to destroy clusters and manage cluster templates.`,
+ Example: "",
+}
+
+// RootCmd exposes root cluster command.
+func RootCmd() *cobra.Command {
+ return clusterCmd
+}
+
+func init() {
+ clusterCmd.AddCommand(template.RootCmd())
+ clusterCmd.AddCommand(kubernetes.RootCmd())
+}
diff --git a/client/pkg/omnictl/cluster/delete.go b/client/pkg/omnictl/cluster/delete.go
new file mode 100644
index 000000000..53f358444
--- /dev/null
+++ b/client/pkg/omnictl/cluster/delete.go
@@ -0,0 +1,45 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package cluster
+
+import (
+ "context"
+ "os"
+
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/pkg/client"
+ "github.com/siderolabs/omni/client/pkg/omnictl/internal/access"
+ "github.com/siderolabs/omni/client/pkg/template/operations"
+)
+
+var deleteCmdFlags struct {
+ options operations.SyncOptions
+}
+
+// deleteCmd represents the cluster delete command.
+var deleteCmd = &cobra.Command{
+ Use: "delete cluster-name",
+ Short: "Delete all cluster resources.",
+ Long: `Delete all resources related to the cluster. The command waits for the cluster to be fully destroyed.`,
+ Example: "",
+ Args: cobra.ExactArgs(1),
+ RunE: func(_ *cobra.Command, args []string) error {
+ return access.WithClient(deleteImpl(args[0]))
+ },
+}
+
+func deleteImpl(clusterName string) func(ctx context.Context, client *client.Client) error {
+ return func(ctx context.Context, client *client.Client) error {
+ return operations.DeleteCluster(ctx, clusterName, os.Stdout, client.Omni().State(), deleteCmdFlags.options)
+ }
+}
+
+func init() {
+ deleteCmd.PersistentFlags().BoolVarP(&deleteCmdFlags.options.Verbose, "verbose", "v", false, "verbose output (show diff for each resource)")
+ deleteCmd.PersistentFlags().BoolVarP(&deleteCmdFlags.options.DryRun, "dry-run", "d", false, "dry run")
+ deleteCmd.PersistentFlags().BoolVar(&deleteCmdFlags.options.DestroyMachines, "destroy-disconnected-machines", false, "removes all disconnected machines which are part of the cluster from Omni")
+ clusterCmd.AddCommand(deleteCmd)
+}
diff --git a/client/pkg/omnictl/cluster/kubernetes/kubernetes.go b/client/pkg/omnictl/cluster/kubernetes/kubernetes.go
new file mode 100644
index 000000000..fd561b431
--- /dev/null
+++ b/client/pkg/omnictl/cluster/kubernetes/kubernetes.go
@@ -0,0 +1,24 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package kubernetes contains commands related to cluster Kubernetes operations.
+package kubernetes
+
+import (
+ "github.com/spf13/cobra"
+)
+
+// kubernetesCmd represents the kubernetes sub-command.
+var kubernetesCmd = &cobra.Command{
+ Use: "kubernetes",
+ Aliases: []string{"k"},
+ Short: "Cluster Kubernetes management subcommands.",
+ Long: `Commands to render, validate, manage cluster templates.`,
+ Example: "",
+}
+
+// RootCmd exports kubernetesCmd.
+func RootCmd() *cobra.Command {
+ return kubernetesCmd
+}
diff --git a/client/pkg/omnictl/cluster/kubernetes/manifest-sync.go b/client/pkg/omnictl/cluster/kubernetes/manifest-sync.go
new file mode 100644
index 000000000..d3155e7c1
--- /dev/null
+++ b/client/pkg/omnictl/cluster/kubernetes/manifest-sync.go
@@ -0,0 +1,68 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package kubernetes
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/api/omni/management"
+ "github.com/siderolabs/omni/client/pkg/client"
+ "github.com/siderolabs/omni/client/pkg/omnictl/internal/access"
+)
+
+var manifestSyncCmdFlags struct {
+ dryRun bool
+}
+
+// manifestSyncCmd represents the cluster kubernetes manifest-sync command.
+var manifestSyncCmd = &cobra.Command{
+ Use: "manifest-sync cluster-name",
+ Short: "Sync Kubernetes bootstrap manifests from Talos controlplane nodes to Kubernetes API.",
+ Long: `Sync Kubernetes bootstrap manifests from Talos controlplane nodes to Kubernetes API.
+Bootstrap manifests might be updated with Talos version update, Kubernetes upgrade, and config patching.
+Talos never updates or deletes Kubernetes manifests, so this command fills the gap to keep manifests up-to-date.`,
+ Example: "",
+ Args: cobra.ExactArgs(1),
+ RunE: func(_ *cobra.Command, args []string) error {
+ return access.WithClient(manifestSync(args[0]))
+ },
+}
+
+func manifestSync(clusterName string) func(ctx context.Context, client *client.Client) error {
+ return func(ctx context.Context, client *client.Client) error {
+ handler := func(resp *management.KubernetesSyncManifestResponse) error {
+ switch resp.ResponseType {
+ case management.KubernetesSyncManifestResponse_UNKNOWN:
+ case management.KubernetesSyncManifestResponse_MANIFEST:
+ fmt.Printf(" > processing manifest %s\n", resp.Path)
+
+ switch {
+ case resp.Skipped:
+ fmt.Println(" < no changes")
+ case manifestSyncCmdFlags.dryRun:
+ fmt.Println(resp.Diff)
+ fmt.Println(" < dry run, change skipped")
+ case !manifestSyncCmdFlags.dryRun:
+ fmt.Println(resp.Diff)
+ fmt.Println(" < applied successfully")
+ }
+ case management.KubernetesSyncManifestResponse_ROLLOUT:
+ fmt.Printf(" > waiting for %s\n", resp.Path)
+ }
+
+ return nil
+ }
+
+ return client.Management().WithCluster(clusterName).KubernetesSyncManifests(ctx, manifestSyncCmdFlags.dryRun, handler)
+ }
+}
+
+func init() {
+ manifestSyncCmd.Flags().BoolVar(&manifestSyncCmdFlags.dryRun, "dry-run", true, "don't actually sync manifests, just print what would be done")
+ kubernetesCmd.AddCommand(manifestSyncCmd)
+}
diff --git a/client/pkg/omnictl/cluster/kubernetes/upgrade-pre-checks.go b/client/pkg/omnictl/cluster/kubernetes/upgrade-pre-checks.go
new file mode 100644
index 000000000..868aae37f
--- /dev/null
+++ b/client/pkg/omnictl/cluster/kubernetes/upgrade-pre-checks.go
@@ -0,0 +1,43 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package kubernetes
+
+import (
+ "context"
+
+ "github.com/siderolabs/gen/ensure"
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/pkg/client"
+ "github.com/siderolabs/omni/client/pkg/omnictl/internal/access"
+)
+
+var upgradePreChecksCmdFlags struct {
+ toVersion string
+}
+
+// upgradePreChecksCmd represents the cluster kubernetes upgrade-pre-checks command.
+var upgradePreChecksCmd = &cobra.Command{
+ Use: "upgrade-pre-checks cluster-name",
+ Short: "Run Kubernetes upgrade pre-checks for the cluster.",
+ Long: `Verify that upgrading Kubernetes version is available for the cluster: version compatibility, deprecated APIs, etc.`,
+ Example: "",
+ Args: cobra.ExactArgs(1),
+ RunE: func(_ *cobra.Command, args []string) error {
+ return access.WithClient(upgradePreChecks(args[0]))
+ },
+}
+
+func upgradePreChecks(clusterName string) func(ctx context.Context, client *client.Client) error {
+ return func(ctx context.Context, client *client.Client) error {
+ return client.Management().WithCluster(clusterName).KubernetesUpgradePreChecks(ctx, upgradePreChecksCmdFlags.toVersion)
+ }
+}
+
+func init() {
+ upgradePreChecksCmd.Flags().StringVar(&upgradePreChecksCmdFlags.toVersion, "to", "", "target Kubernetes version for the planned upgrade")
+ ensure.NoError(upgradePreChecksCmd.MarkFlagRequired("to"))
+ kubernetesCmd.AddCommand(upgradePreChecksCmd)
+}
diff --git a/client/pkg/omnictl/cluster/machine.go b/client/pkg/omnictl/cluster/machine.go
new file mode 100644
index 000000000..afbc74069
--- /dev/null
+++ b/client/pkg/omnictl/cluster/machine.go
@@ -0,0 +1,79 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package cluster
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/safe"
+ "github.com/cosi-project/runtime/pkg/state"
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/pkg/client"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+ "github.com/siderolabs/omni/client/pkg/omni/resources/omni"
+ "github.com/siderolabs/omni/client/pkg/omnictl/internal/access"
+)
+
+var lockCmd = &cobra.Command{
+ Use: "lock machine-id",
+ Short: "Lock the machine",
+ Long: `When locked, no config updates, upgrades and downgrades will be performed on the machine.`,
+ Args: cobra.ExactArgs(1),
+ RunE: func(_ *cobra.Command, args []string) error {
+ return access.WithClient(setLocked(args[0], true))
+ },
+}
+
+var unlockCmd = &cobra.Command{
+ Use: "unlock machine-id",
+ Short: "Unlock the machine",
+ Long: `Removes locked annotation from the machine.`,
+ Args: cobra.ExactArgs(1),
+ RunE: func(_ *cobra.Command, args []string) error {
+ return access.WithClient(setLocked(args[0], false))
+ },
+}
+
+func setLocked(machineID resource.ID, lock bool) func(context.Context, *client.Client) error {
+ return func(ctx context.Context, client *client.Client) error {
+ st := client.Omni().State()
+
+ machineSetNode, err := safe.StateGet[*omni.MachineSetNode](ctx, st, resource.NewMetadata(resources.DefaultNamespace, omni.MachineSetNodeType, machineID, resource.VersionUndefined))
+ if err != nil {
+ if state.IsNotFoundError(err) {
+ fmt.Printf("no machine set nodes with id %q found", machineID)
+ }
+ }
+
+ _, err = safe.StateUpdateWithConflicts(ctx, st, machineSetNode.Metadata(), func(res *omni.MachineSetNode) error {
+ if lock {
+ res.Metadata().Annotations().Set(omni.MachineLocked, "")
+ } else {
+ res.Metadata().Annotations().Delete(omni.MachineLocked)
+ }
+
+ return nil
+ })
+
+ return err
+ }
+}
+
+// machineCmd represents the cluster machine commands.
+var machineCmd = &cobra.Command{
+ Use: "machine",
+ Short: "Machine related commands.",
+ Long: `Commands to manage cluster machines.`,
+ Example: "",
+}
+
+func init() {
+ machineCmd.AddCommand(lockCmd)
+ machineCmd.AddCommand(unlockCmd)
+ clusterCmd.AddCommand(machineCmd)
+}
diff --git a/client/pkg/omnictl/cluster/status.go b/client/pkg/omnictl/cluster/status.go
new file mode 100644
index 000000000..764d92da2
--- /dev/null
+++ b/client/pkg/omnictl/cluster/status.go
@@ -0,0 +1,57 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package cluster
+
+import (
+ "context"
+ "os"
+ "time"
+
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/pkg/client"
+ "github.com/siderolabs/omni/client/pkg/omnictl/internal/access"
+ "github.com/siderolabs/omni/client/pkg/template/operations"
+)
+
+var statusCmdFlags struct {
+ options operations.StatusOptions
+ wait time.Duration
+}
+
+// statusCmd represents the cluster status command.
+var statusCmd = &cobra.Command{
+ Use: "status cluster-name",
+ Short: "Show cluster status, wait for the cluster to be ready.",
+ Long: `Shows current cluster status, if the terminal supports it, watch the status as it updates. The command waits for the cluster to be ready by default.`,
+ Example: "",
+ Args: cobra.ExactArgs(1),
+ RunE: func(_ *cobra.Command, args []string) error {
+ return access.WithClient(status(args[0]))
+ },
+}
+
+func status(clusterName string) func(ctx context.Context, client *client.Client) error {
+ return func(ctx context.Context, client *client.Client) error {
+ if statusCmdFlags.wait > 0 {
+ var cancel context.CancelFunc
+
+ ctx, cancel = context.WithTimeout(ctx, statusCmdFlags.wait)
+ defer cancel()
+
+ statusCmdFlags.options.Wait = true
+ } else {
+ statusCmdFlags.options.Wait = false
+ }
+
+ return operations.StatusCluster(ctx, clusterName, os.Stdout, client.Omni().State(), statusCmdFlags.options)
+ }
+}
+
+func init() {
+ statusCmd.PersistentFlags().BoolVarP(&statusCmdFlags.options.Quiet, "quiet", "q", false, "suppress output")
+ statusCmd.PersistentFlags().DurationVarP(&statusCmdFlags.wait, "wait", "w", 5*time.Minute, "wait timeout, if zero, report current status and exit")
+ clusterCmd.AddCommand(statusCmd)
+}
diff --git a/client/pkg/omnictl/cluster/template/delete.go b/client/pkg/omnictl/cluster/template/delete.go
new file mode 100644
index 000000000..7725d2dbe
--- /dev/null
+++ b/client/pkg/omnictl/cluster/template/delete.go
@@ -0,0 +1,51 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package template
+
+import (
+ "context"
+ "os"
+
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/pkg/client"
+ "github.com/siderolabs/omni/client/pkg/omnictl/internal/access"
+ "github.com/siderolabs/omni/client/pkg/template/operations"
+)
+
+var deleteCmdFlags struct {
+ options operations.SyncOptions
+}
+
+// deleteCmd represents the template delete command.
+var deleteCmd = &cobra.Command{
+ Use: "delete",
+ Short: "Delete all cluster template resources from Omni.",
+ Long: `Delete all resources related to the cluster template. This command requires API access.`,
+ Example: "",
+ Args: cobra.NoArgs,
+ RunE: func(*cobra.Command, []string) error {
+ return access.WithClient(deleteImpl)
+ },
+}
+
+func deleteImpl(ctx context.Context, client *client.Client) error {
+ f, err := os.Open(cmdFlags.TemplatePath)
+ if err != nil {
+ return err
+ }
+
+ defer f.Close() //nolint:errcheck
+
+ return operations.DeleteTemplate(ctx, f, os.Stdout, client.Omni().State(), deleteCmdFlags.options)
+}
+
+func init() {
+ addRequiredFileFlag(deleteCmd)
+ deleteCmd.PersistentFlags().BoolVarP(&deleteCmdFlags.options.Verbose, "verbose", "v", false, "verbose output (show diff for each resource)")
+ deleteCmd.PersistentFlags().BoolVarP(&deleteCmdFlags.options.DryRun, "dry-run", "d", false, "dry run")
+ deleteCmd.PersistentFlags().BoolVar(&deleteCmdFlags.options.DestroyMachines, "destroy-disconnected-machines", false, "removes all disconnected machines which are part of the cluster from Omni")
+ templateCmd.AddCommand(deleteCmd)
+}
diff --git a/client/pkg/omnictl/cluster/template/diff.go b/client/pkg/omnictl/cluster/template/diff.go
new file mode 100644
index 000000000..58c6b5e4b
--- /dev/null
+++ b/client/pkg/omnictl/cluster/template/diff.go
@@ -0,0 +1,44 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package template
+
+import (
+ "context"
+ "os"
+
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/pkg/client"
+ "github.com/siderolabs/omni/client/pkg/omnictl/internal/access"
+ "github.com/siderolabs/omni/client/pkg/template/operations"
+)
+
+// diffCmd represents the template diff command.
+var diffCmd = &cobra.Command{
+ Use: "diff",
+ Short: "Show diff in resources if the template is synced.",
+ Long: `Query existing resources for the cluster and compare them with the resources generated from the template. This command requires API access.`,
+ Example: "",
+ Args: cobra.NoArgs,
+ RunE: func(*cobra.Command, []string) error {
+ return access.WithClient(diff)
+ },
+}
+
+func diff(ctx context.Context, client *client.Client) error {
+ f, err := os.Open(cmdFlags.TemplatePath)
+ if err != nil {
+ return err
+ }
+
+ defer f.Close() //nolint:errcheck
+
+ return operations.DiffTemplate(ctx, f, os.Stdout, client.Omni().State())
+}
+
+func init() {
+ addRequiredFileFlag(diffCmd)
+ templateCmd.AddCommand(diffCmd)
+}
diff --git a/client/pkg/omnictl/cluster/template/export.go b/client/pkg/omnictl/cluster/template/export.go
new file mode 100644
index 000000000..4b4f6072c
--- /dev/null
+++ b/client/pkg/omnictl/cluster/template/export.go
@@ -0,0 +1,70 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package template
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "os"
+
+ "github.com/siderolabs/gen/ensure"
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/pkg/client"
+ "github.com/siderolabs/omni/client/pkg/omnictl/internal/access"
+ "github.com/siderolabs/omni/client/pkg/template/operations"
+)
+
+var exportCmdFlags struct {
+ cluster string
+ output string
+ force bool
+}
+
+// exportCmd represents the template export command.
+var exportCmd = &cobra.Command{
+ Use: "export cluster-name",
+ Short: "Export a cluster template from an existing cluster on Omni.",
+ Long: `Export a cluster template from an existing cluster on Omni. This command requires API access.`,
+ Args: cobra.NoArgs,
+ RunE: func(*cobra.Command, []string) error {
+ return access.WithClient(export)
+ },
+}
+
+func export(ctx context.Context, client *client.Client) (err error) {
+ output := os.Stdout
+
+ if exportCmdFlags.output != "" {
+ var openErr error
+
+ flags := os.O_WRONLY | os.O_CREATE | os.O_EXCL
+ if exportCmdFlags.force {
+ flags = os.O_WRONLY | os.O_CREATE | os.O_TRUNC
+ }
+
+ output, openErr = os.OpenFile(exportCmdFlags.output, flags, 0o644)
+ if openErr != nil {
+ return fmt.Errorf("failed to open output file: %w", openErr)
+ }
+
+ defer func() { err = errors.Join(err, output.Close()) }()
+ }
+
+ _, err = operations.ExportTemplate(ctx, client.Omni().State(), exportCmdFlags.cluster, output)
+
+ return err
+}
+
+func init() {
+ exportCmd.Flags().StringVarP(&exportCmdFlags.cluster, "cluster", "c", "", "cluster name")
+ exportCmd.Flags().StringVarP(&exportCmdFlags.output, "output", "o", "", "output file (default: stdout)")
+ exportCmd.Flags().BoolVarP(&exportCmdFlags.force, "force", "f", false, "overwrite output file if it exists")
+
+ ensure.NoError(exportCmd.MarkFlagRequired("cluster"))
+
+ templateCmd.AddCommand(exportCmd)
+}
diff --git a/client/pkg/omnictl/cluster/template/render.go b/client/pkg/omnictl/cluster/template/render.go
new file mode 100644
index 000000000..5beef44a6
--- /dev/null
+++ b/client/pkg/omnictl/cluster/template/render.go
@@ -0,0 +1,41 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package template
+
+import (
+ "os"
+
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/pkg/template/operations"
+)
+
+// renderCmd represents the template render command.
+var renderCmd = &cobra.Command{
+ Use: "render",
+ Short: "Render a cluster template to a set of resources.",
+ Long: `Validate template contents, convert to resources and output resources to stdout as YAML. This command is offline (doesn't access API).`,
+ Example: "",
+ Args: cobra.NoArgs,
+ RunE: func(*cobra.Command, []string) error {
+ return render()
+ },
+}
+
+func render() error {
+ f, err := os.Open(cmdFlags.TemplatePath)
+ if err != nil {
+ return err
+ }
+
+ defer f.Close() //nolint:errcheck
+
+ return operations.RenderTemplate(f, os.Stdout)
+}
+
+func init() {
+ addRequiredFileFlag(renderCmd)
+ templateCmd.AddCommand(renderCmd)
+}
diff --git a/client/pkg/omnictl/cluster/template/status.go b/client/pkg/omnictl/cluster/template/status.go
new file mode 100644
index 000000000..f57daf345
--- /dev/null
+++ b/client/pkg/omnictl/cluster/template/status.go
@@ -0,0 +1,63 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package template
+
+import (
+ "context"
+ "os"
+ "time"
+
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/pkg/client"
+ "github.com/siderolabs/omni/client/pkg/omnictl/internal/access"
+ "github.com/siderolabs/omni/client/pkg/template/operations"
+)
+
+var statusCmdFlags struct {
+ options operations.StatusOptions
+ wait time.Duration
+}
+
+// statusCmd represents the cluster status command.
+var statusCmd = &cobra.Command{
+ Use: "status",
+ Short: "Show template cluster status, wait for the cluster to be ready.",
+ Long: `Shows current cluster status, if the terminal supports it, watch the status as it updates. The command waits for the cluster to be ready by default.`,
+ Example: "",
+ Args: cobra.NoArgs,
+ RunE: func(*cobra.Command, []string) error {
+ return access.WithClient(status)
+ },
+}
+
+func status(ctx context.Context, client *client.Client) error {
+ f, err := os.Open(cmdFlags.TemplatePath)
+ if err != nil {
+ return err
+ }
+
+ defer f.Close() //nolint:errcheck
+
+ if statusCmdFlags.wait > 0 {
+ var cancel context.CancelFunc
+
+ ctx, cancel = context.WithTimeout(ctx, statusCmdFlags.wait)
+ defer cancel()
+
+ statusCmdFlags.options.Wait = true
+ } else {
+ statusCmdFlags.options.Wait = false
+ }
+
+ return operations.StatusTemplate(ctx, f, os.Stdout, client.Omni().State(), statusCmdFlags.options)
+}
+
+func init() {
+ addRequiredFileFlag(statusCmd)
+ statusCmd.PersistentFlags().BoolVarP(&statusCmdFlags.options.Quiet, "quiet", "q", false, "suppress output")
+ statusCmd.PersistentFlags().DurationVarP(&statusCmdFlags.wait, "wait", "w", 5*time.Minute, "wait timeout, if zero, report current status and exit")
+ templateCmd.AddCommand(statusCmd)
+}
diff --git a/client/pkg/omnictl/cluster/template/sync.go b/client/pkg/omnictl/cluster/template/sync.go
new file mode 100644
index 000000000..fbefefb88
--- /dev/null
+++ b/client/pkg/omnictl/cluster/template/sync.go
@@ -0,0 +1,50 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package template
+
+import (
+ "context"
+ "os"
+
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/pkg/client"
+ "github.com/siderolabs/omni/client/pkg/omnictl/internal/access"
+ "github.com/siderolabs/omni/client/pkg/template/operations"
+)
+
+var syncCmdFlags struct {
+ options operations.SyncOptions
+}
+
+// syncCmd represents the template sync command.
+var syncCmd = &cobra.Command{
+ Use: "sync",
+ Short: "Apply template to the Omni.",
+ Long: `Query existing resources for the cluster and compare them with the resources generated from the template, create/update/delete resources as needed. This command requires API access.`,
+ Example: "",
+ Args: cobra.NoArgs,
+ RunE: func(*cobra.Command, []string) error {
+ return access.WithClient(sync)
+ },
+}
+
+func sync(ctx context.Context, client *client.Client) error {
+ f, err := os.Open(cmdFlags.TemplatePath)
+ if err != nil {
+ return err
+ }
+
+ defer f.Close() //nolint:errcheck
+
+ return operations.SyncTemplate(ctx, f, os.Stdout, client.Omni().State(), syncCmdFlags.options)
+}
+
+func init() {
+ addRequiredFileFlag(syncCmd)
+ syncCmd.PersistentFlags().BoolVarP(&syncCmdFlags.options.Verbose, "verbose", "v", false, "verbose output (show diff for each resource)")
+ syncCmd.PersistentFlags().BoolVarP(&syncCmdFlags.options.DryRun, "dry-run", "d", false, "dry run")
+ templateCmd.AddCommand(syncCmd)
+}
diff --git a/client/pkg/omnictl/cluster/template/template.go b/client/pkg/omnictl/cluster/template/template.go
new file mode 100644
index 000000000..5783badab
--- /dev/null
+++ b/client/pkg/omnictl/cluster/template/template.go
@@ -0,0 +1,36 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package template contains commands related to cluster template operations.
+package template
+
+import (
+ "github.com/siderolabs/gen/ensure"
+ "github.com/spf13/cobra"
+)
+
+// cmdFlags contains shared cluster template flags.
+var cmdFlags struct {
+ // Path to the cluster template file.
+ TemplatePath string
+}
+
+// templateCmd represents the template sub-command.
+var templateCmd = &cobra.Command{
+ Use: "template",
+ Aliases: []string{"t"},
+ Short: "Cluster template management subcommands.",
+ Long: `Commands to render, validate, manage cluster templates.`,
+ Example: "",
+}
+
+// RootCmd exports templateCmd.
+func RootCmd() *cobra.Command {
+ return templateCmd
+}
+
+func addRequiredFileFlag(cmd *cobra.Command) {
+ cmd.PersistentFlags().StringVarP(&cmdFlags.TemplatePath, "file", "f", "", "path to the cluster template file.")
+ ensure.NoError(cmd.MarkPersistentFlagRequired("file"))
+}
diff --git a/client/pkg/omnictl/cluster/template/validate.go b/client/pkg/omnictl/cluster/template/validate.go
new file mode 100644
index 000000000..5f22f6346
--- /dev/null
+++ b/client/pkg/omnictl/cluster/template/validate.go
@@ -0,0 +1,41 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package template
+
+import (
+ "os"
+
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/pkg/template/operations"
+)
+
+// validateCmd represents the template validate command.
+var validateCmd = &cobra.Command{
+ Use: "validate",
+ Short: "Validate a cluster template.",
+ Long: `Validate that template contains valid structures, and there are no other warnings. This command is offline (doesn't access API).`,
+ Example: "",
+ Args: cobra.NoArgs,
+ RunE: func(*cobra.Command, []string) error {
+ return validate()
+ },
+}
+
+func validate() error {
+ f, err := os.Open(cmdFlags.TemplatePath)
+ if err != nil {
+ return err
+ }
+
+ defer f.Close() //nolint:errcheck
+
+ return operations.ValidateTemplate(f)
+}
+
+func init() {
+ addRequiredFileFlag(validateCmd)
+ templateCmd.AddCommand(validateCmd)
+}
diff --git a/client/pkg/omnictl/common.go b/client/pkg/omnictl/common.go
new file mode 100644
index 000000000..78ec8b75b
--- /dev/null
+++ b/client/pkg/omnictl/common.go
@@ -0,0 +1,58 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package omnictl ...
+package omnictl
+
+import (
+ "context"
+ "fmt"
+ "strings"
+
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/safe"
+ "github.com/cosi-project/runtime/pkg/state"
+)
+
+func resolveResourceType(ctx context.Context, st state.State, resourceType string) (*meta.ResourceDefinition, error) {
+ rds, err := safe.StateListAll[*meta.ResourceDefinition](ctx, st)
+ if err != nil {
+ return nil, err
+ }
+
+ var matched []*meta.ResourceDefinition
+
+ for it := rds.Iterator(); it.Next(); {
+ if strings.EqualFold(it.Value().Metadata().ID(), resourceType) {
+ matched = append(matched, it.Value())
+
+ continue
+ }
+
+ spec := it.Value().TypedSpec()
+
+ for _, alias := range spec.AllAliases {
+ if strings.EqualFold(alias, resourceType) {
+ matched = append(matched, it.Value())
+
+ break
+ }
+ }
+ }
+
+ switch {
+ case len(matched) == 1:
+ return matched[0], nil
+ case len(matched) > 1:
+ matchedTypes := make([]string, 0, len(matched))
+
+ for _, rd := range matched {
+ matchedTypes = append(matchedTypes, rd.Metadata().ID())
+ }
+
+ return nil, fmt.Errorf("resource type %q is ambiguous: %v", resourceType, matchedTypes)
+ default:
+ return nil, fmt.Errorf("resource %q is not registered", resourceType)
+ }
+}
diff --git a/client/pkg/omnictl/config.go b/client/pkg/omnictl/config.go
new file mode 100644
index 000000000..08397f6f9
--- /dev/null
+++ b/client/pkg/omnictl/config.go
@@ -0,0 +1,318 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omnictl
+
+import (
+ "bytes"
+ "fmt"
+ "os"
+ "slices"
+ "strings"
+ "text/tabwriter"
+ "text/template"
+
+ "github.com/siderolabs/gen/maps"
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/pkg/omnictl/config"
+ "github.com/siderolabs/omni/client/pkg/omnictl/internal/access"
+)
+
+// configCmd represents the config command.
+var configCmd = &cobra.Command{
+ Use: "config",
+ Short: "Manage the client configuration file (omniconfig)",
+ Long: ``,
+}
+
+// configURLCmd represents the `config url` command.
+var configURLCmd = &cobra.Command{
+ Use: "url ",
+ Short: "Set the URL for the current context",
+ Long: ``,
+ Args: cobra.ExactArgs(1),
+ RunE: func(_ *cobra.Command, args []string) error {
+ conf, err := config.Init(access.CmdFlags.Omniconfig, false)
+ if err != nil {
+ return err
+ }
+
+ context, err := conf.GetContext(access.CmdFlags.Context)
+ if err != nil {
+ return err
+ }
+
+ context.URL = args[0]
+
+ return conf.Save()
+ },
+}
+
+// configIdentityCmd represents the `config identity` command.
+var configIdentityCmd = &cobra.Command{
+ Use: "identity ",
+ Short: "Set the auth identity for the current context",
+ Long: ``,
+ Args: cobra.ExactArgs(1),
+ RunE: func(_ *cobra.Command, args []string) error {
+ conf, err := config.Init(access.CmdFlags.Omniconfig, false)
+ if err != nil {
+ return err
+ }
+
+ context, err := conf.GetContext(access.CmdFlags.Context)
+ if err != nil {
+ return err
+ }
+
+ context.Auth.SideroV1.Identity = args[0]
+
+ return conf.Save()
+ },
+}
+
+// configContextCmd represents the `config context` command.
+var configContextCmd = &cobra.Command{
+ Use: "context ",
+ Short: "Set the current context",
+ Aliases: []string{"use-context"},
+ Long: ``,
+ Args: cobra.ExactArgs(1),
+ RunE: func(_ *cobra.Command, args []string) error {
+ conf, err := config.Init(access.CmdFlags.Omniconfig, false)
+ if err != nil {
+ return err
+ }
+
+ context := args[0]
+
+ conf.Context = context
+
+ return conf.Save()
+ },
+ ValidArgsFunction: CompleteConfigContext,
+}
+
+// configAddCmdFlags represents the `config add` command flags.
+var configAddCmdFlags struct {
+ url string
+ httpURL string
+ identity string
+}
+
+// configAddCmd represents the `config add` command.
+var configAddCmd = &cobra.Command{
+ Use: "add ",
+ Short: "Add a new context",
+ Long: ``,
+ Args: cobra.ExactArgs(1),
+ RunE: func(_ *cobra.Command, args []string) error {
+ conf, err := config.Init(access.CmdFlags.Omniconfig, true)
+ if err != nil {
+ return err
+ }
+
+ name := args[0]
+
+ _, alreadyExists := conf.Contexts[name]
+ if alreadyExists {
+ return fmt.Errorf("context %s already exists", name)
+ }
+
+ newContext := config.Context{
+ URL: configAddCmdFlags.url,
+ Auth: config.Auth{
+ SideroV1: config.SideroV1{
+ Identity: configAddCmdFlags.identity,
+ },
+ },
+ }
+
+ conf.Contexts[name] = &newContext
+
+ return conf.Save()
+ },
+}
+
+// configGetContextsCmd represents the `config contexts` command.
+var configGetContextsCmd = &cobra.Command{
+ Use: "contexts",
+ Short: "List defined contexts",
+ Aliases: []string{"get-contexts"},
+ Long: ``,
+ RunE: func(*cobra.Command, []string) error {
+ conf, err := config.Init(access.CmdFlags.Omniconfig, false)
+ if err != nil {
+ return err
+ }
+
+ keys := maps.Keys(conf.Contexts)
+ slices.Sort(keys)
+
+ w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0)
+ defer w.Flush() //nolint:errcheck
+
+ _, err = fmt.Fprintln(w, "CURRENT\tNAME\tURL")
+ if err != nil {
+ return err
+ }
+
+ for _, name := range keys {
+ context := conf.Contexts[name]
+
+ var current string
+
+ if name == conf.Context {
+ current = "*"
+ }
+
+ _, err = fmt.Fprintf(w, "%s\t%s\t%s\n", current, name, context.URL)
+ if err != nil {
+ return err
+ }
+ }
+
+ return nil
+ },
+}
+
+// configMergeCmd represents the `config merge` command.
+var configMergeCmd = &cobra.Command{
+ Use: "merge ",
+ Short: "Merge additional contexts from another client configuration file",
+ Long: "Contexts with the same name are renamed while merging configs.",
+ Args: cobra.ExactArgs(1),
+ RunE: func(_ *cobra.Command, args []string) error {
+ conf, err := config.Init(access.CmdFlags.Omniconfig, true)
+ if err != nil {
+ return err
+ }
+
+ renames, err := conf.Merge(args[0])
+ if err != nil {
+ return err
+ }
+
+ for _, rename := range renames {
+ fmt.Printf("renamed omniconfig context %s\n", rename.String())
+ }
+
+ return conf.Save()
+ },
+}
+
+// configNewCmdFlags represents the `config new` command flags.
+var configNewCmdFlags struct {
+ url string
+ httpURL string
+ identity string
+}
+
+// configNewCmd represents the `config new` command.
+var configNewCmd = &cobra.Command{
+ Use: "new []",
+ Short: "Generate a new client configuration file",
+ Args: cobra.RangeArgs(0, 1),
+ RunE: func(_ *cobra.Command, args []string) error {
+ path := ""
+ if len(args) > 0 {
+ path = args[0]
+ }
+
+ conf, err := config.Init(path, true)
+ if err != nil {
+ return err
+ }
+
+ context, err := conf.GetContext(access.CmdFlags.Context)
+ if err != nil {
+ return err
+ }
+
+ context.URL = configNewCmdFlags.url
+ context.Auth.SideroV1.Identity = configNewCmdFlags.identity
+
+ return conf.Save()
+ },
+}
+
+// configInfoCmdTemplate represents the `config info` command output template.
+var configInfoCmdTemplate = template.Must(template.New("configInfoCmdTemplate").
+ Option("missingkey=error").
+ Parse(strings.TrimSpace(`
+Current context: {{ .Context }}
+URL: {{ .APIURL }}
+Identity: {{ .Identity }}
+`)))
+
+// configInfoCmd represents the `config info` command.
+var configInfoCmd = &cobra.Command{
+ Use: "info",
+ Short: "Show information about the current context",
+ Args: cobra.NoArgs,
+ RunE: func(*cobra.Command, []string) error {
+ conf, err := config.Init(access.CmdFlags.Omniconfig, false)
+ if err != nil {
+ return err
+ }
+
+ var result string
+
+ context, err := conf.GetContext(access.CmdFlags.Context)
+ if err != nil {
+ return err
+ }
+
+ var buf bytes.Buffer
+ err = configInfoCmdTemplate.Execute(&buf, map[string]string{
+ "Context": conf.Context,
+ "APIURL": context.URL,
+ "Identity": context.Auth.SideroV1.Identity,
+ })
+ if err != nil {
+ return err
+ }
+
+ result = buf.String() + "\n"
+
+ fmt.Print(result)
+
+ return nil
+ },
+}
+
+// CompleteConfigContext represents tab completion for `--context` argument and `config context` command.
+func CompleteConfigContext(_ *cobra.Command, _ []string, _ string) ([]string, cobra.ShellCompDirective) {
+ conf, err := config.Init(access.CmdFlags.Omniconfig, false)
+ if err != nil {
+ return nil, 0
+ }
+
+ contextNames := maps.Keys(conf.Contexts)
+ slices.Sort(contextNames)
+
+ return contextNames, cobra.ShellCompDirectiveNoFileComp
+}
+
+func init() {
+ configCmd.AddCommand(
+ configURLCmd,
+ configIdentityCmd,
+ configContextCmd,
+ configAddCmd,
+ configGetContextsCmd,
+ configMergeCmd,
+ configNewCmd,
+ configInfoCmd,
+ )
+
+ configAddCmd.Flags().StringVar(&configAddCmdFlags.url, "url", config.DefaultContext.URL, "URL of the server")
+ configAddCmd.Flags().StringVar(&configAddCmdFlags.identity, "identity", "", "identity to use for authentication")
+
+ configNewCmd.Flags().StringVar(&configNewCmdFlags.url, "url", config.DefaultContext.URL, "URL of the server")
+ configNewCmd.Flags().StringVar(&configNewCmdFlags.identity, "identity", "", "identity to use for authentication")
+
+ RootCmd.AddCommand(configCmd)
+}
diff --git a/client/pkg/omnictl/config/config.go b/client/pkg/omnictl/config/config.go
new file mode 100644
index 000000000..0c49d1222
--- /dev/null
+++ b/client/pkg/omnictl/config/config.go
@@ -0,0 +1,196 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Package config implements the config file logic.
+package config
+
+import (
+ "fmt"
+ "os"
+
+ "github.com/adrg/xdg"
+ "gopkg.in/yaml.v3"
+)
+
+const (
+ // OmniConfigEnvVar is the environment variable to override the default config path.
+ OmniConfigEnvVar = "OMNICONFIG"
+
+ relativePath = "omni/config"
+ defaultContextName = "default"
+)
+
+var (
+ // DefaultContext is the context with the default values.
+ DefaultContext = Context{
+ URL: "grpc://127.0.0.1:8080",
+ }
+
+ defaultConfig = Config{
+ Context: defaultContextName,
+ Contexts: map[string]*Context{
+ defaultContextName: &DefaultContext,
+ },
+ }
+
+ current *Config
+)
+
+// Init initializes the Current config and returns it.
+func Init(path string, create bool) (*Config, error) {
+ conf, err := load(path)
+
+ if os.IsNotExist(err) {
+ if !create {
+ return nil, err
+ }
+
+ defaultConfig.Path = path
+
+ err := defaultConfig.Save()
+ if err != nil {
+ return nil, err
+ }
+
+ conf = &defaultConfig
+ }
+
+ current = conf
+
+ return current, nil
+}
+
+// load the config from the given explicit path or defaults to the known default config paths.
+func load(path string) (*Config, error) {
+ var err error
+
+ if path == "" {
+ path, err = defaultPath()
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ bytes, err := os.ReadFile(path)
+ if err != nil {
+ return nil, err
+ }
+
+ var config Config
+
+ err = yaml.Unmarshal(bytes, &config)
+ if err != nil {
+ return nil, err
+ }
+
+ config.Path = path
+
+ return &config, nil
+}
+
+// Save saves the config to the path it is configured to, or defaults to the known default config paths.
+// It modifies the Path to point to the saved file.
+func (c *Config) Save() error {
+ var err error
+
+ path := c.Path
+ if path == "" {
+ path, err = defaultPath()
+ if err != nil {
+ return err
+ }
+ }
+
+ bytes, err := yaml.Marshal(c)
+ if err != nil {
+ return err
+ }
+
+ err = os.WriteFile(path, bytes, 0o600)
+ if err != nil {
+ return err
+ }
+
+ c.Path = path
+
+ return err
+}
+
+// Current returns the currently targeted config.
+func Current() (*Config, error) {
+ if current == nil {
+ return nil, fmt.Errorf("config not initialized")
+ }
+
+ return current, nil
+}
+
+// GetContext returns the context with the given name. If empty, it will return the selected context in the config file.
+func (c *Config) GetContext(name string) (*Context, error) {
+ if name == "" {
+ name = c.Context
+ }
+
+ context, ok := c.Contexts[name]
+ if !ok {
+ return nil, fmt.Errorf("context not found: %s", name)
+ }
+
+ return context, nil
+}
+
+// Merge in additional contexts from another Config.
+//
+// Current context is overridden from passed in config.
+func (c *Config) Merge(additionalConfigPath string) ([]Rename, error) {
+ if additionalConfigPath == "" {
+ return nil, fmt.Errorf("additional config path is empty")
+ }
+
+ cfg, err := load(additionalConfigPath)
+ if err != nil {
+ return nil, err
+ }
+
+ mappedContexts := map[string]string{}
+
+ var renames []Rename
+
+ for name, ctx := range cfg.Contexts {
+ mergedName := name
+
+ if _, exists := c.Contexts[mergedName]; exists {
+ for i := 1; ; i++ {
+ mergedName = fmt.Sprintf("%s-%d", name, i)
+
+ if _, ctxExists := c.Contexts[mergedName]; !ctxExists {
+ break
+ }
+ }
+ }
+
+ mappedContexts[name] = mergedName
+
+ if name != mergedName {
+ renames = append(renames, Rename{name, mergedName})
+ }
+
+ c.Contexts[mergedName] = ctx
+ }
+
+ if cfg.Context != "" {
+ c.Context = mappedContexts[cfg.Context]
+ }
+
+ return renames, nil
+}
+
+func defaultPath() (string, error) {
+ path := os.Getenv(OmniConfigEnvVar)
+ if path != "" {
+ return path, nil
+ }
+
+ return xdg.ConfigFile(relativePath)
+}
diff --git a/client/pkg/omnictl/config/rename.go b/client/pkg/omnictl/config/rename.go
new file mode 100644
index 000000000..f8d6c77f8
--- /dev/null
+++ b/client/pkg/omnictl/config/rename.go
@@ -0,0 +1,18 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package config
+
+import "fmt"
+
+// Rename describes context rename during merge.
+type Rename struct {
+ From string
+ To string
+}
+
+// String converts to "from" -> "to".
+func (r *Rename) String() string {
+ return fmt.Sprintf("%s -> %s", r.From, r.To)
+}
diff --git a/client/pkg/omnictl/config/types.go b/client/pkg/omnictl/config/types.go
new file mode 100644
index 000000000..a899d1e63
--- /dev/null
+++ b/client/pkg/omnictl/config/types.go
@@ -0,0 +1,33 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package config
+
+// Config represents the omni configuration.
+type Config struct {
+ Contexts map[string]*Context `yaml:"contexts"`
+ Context string `yaml:"context"`
+ Path string `yaml:"-"`
+}
+
+// Context represents a context in the config.
+type Context struct {
+ URL string `yaml:"url"`
+ Auth Auth `yaml:"auth,omitempty"`
+}
+
+// Auth contains the authentication configuration for a context.
+type Auth struct {
+ // Deprecated: basic auth is not supported, and setting this field has no effect.
+ Basic string `yaml:"basic,omitempty"`
+ SideroV1 SideroV1 `yaml:"siderov1,omitempty"`
+}
+
+// SideroV1 is the auth configuration v1.
+type SideroV1 struct {
+ Identity string `yaml:"identity,omitempty"`
+}
+
+// PlaceholderURL is a placeholder url.
+const PlaceholderURL = ""
diff --git a/client/pkg/omnictl/delete.go b/client/pkg/omnictl/delete.go
new file mode 100644
index 000000000..954658035
--- /dev/null
+++ b/client/pkg/omnictl/delete.go
@@ -0,0 +1,162 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omnictl
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/state"
+ "github.com/spf13/cobra"
+
+ "github.com/siderolabs/omni/client/pkg/client"
+ "github.com/siderolabs/omni/client/pkg/cosi/labels"
+ "github.com/siderolabs/omni/client/pkg/omni/resources"
+ "github.com/siderolabs/omni/client/pkg/omnictl/internal/access"
+)
+
+var deleteCmdFlags struct {
+ namespace string
+ selector string
+ all bool
+}
+
+// deleteCmd represents the delete (resources) command.
+var deleteCmd = &cobra.Command{
+ Use: "delete []",
+ Aliases: []string{"d"},
+ Short: "Delete a specific resource by ID or all resources of the type.",
+ Long: `Similar to 'kubectl delete', 'omnictl delete' initiates resource deletion and waits for the operation to complete.`,
+ Example: "",
+ Args: cobra.RangeArgs(1, 2),
+ RunE: func(cmd *cobra.Command, args []string) error {
+ return access.WithClient(deleteResources(cmd, args))
+ },
+}
+
+//nolint:gocognit,gocyclo,cyclop
+func deleteResources(cmd *cobra.Command, args []string) func(ctx context.Context, client *client.Client) error {
+ return func(ctx context.Context, client *client.Client) error {
+ st := client.Omni().State()
+
+ resourceType := resource.Type(args[0]) //nolint:unconvert
+
+ rd, err := resolveResourceType(ctx, st, resourceType)
+ if err != nil {
+ return err
+ }
+
+ if !cmd.Flags().Lookup("namespace").Changed {
+ deleteCmdFlags.namespace = rd.TypedSpec().DefaultNamespace
+ }
+
+ var resourceIDs []resource.ID
+
+ if len(args) > 1 {
+ resourceIDs = []resource.ID{args[1]}
+ } else {
+ var listOpts []state.ListOption
+
+ if !deleteCmdFlags.all && deleteCmdFlags.selector == "" {
+ return fmt.Errorf("either resource ID or one of --all or --selector flags must be specified")
+ }
+
+ if deleteCmdFlags.selector != "" {
+ var query *resource.LabelQuery
+
+ query, err = labels.ParseQuery(deleteCmdFlags.selector)
+ if err != nil {
+ return err
+ }
+
+ listOpts = append(listOpts, state.WithLabelQuery(resource.RawLabelQuery(*query)))
+ }
+
+ var list resource.List
+
+ list, err = st.List(ctx, resource.NewMetadata(deleteCmdFlags.namespace, rd.TypedSpec().Type, "", resource.VersionUndefined), listOpts...)
+ if err != nil {
+ return err
+ }
+
+ resourceIDs = make([]resource.ID, 0, len(list.Items))
+
+ for _, item := range list.Items {
+ resourceIDs = append(resourceIDs, item.Metadata().ID())
+ }
+ }
+
+ // teardown all resources
+ for _, resourceID := range resourceIDs {
+ _, err = st.Teardown(ctx, resource.NewMetadata(deleteCmdFlags.namespace, rd.TypedSpec().Type, resourceID, resource.VersionUndefined))
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("torn down %s %s\n", rd.TypedSpec().Type, resourceID)
+ }
+
+ // set up a watch for all resources of kind
+ watchCh := make(chan state.Event)
+
+ for _, resourceID := range resourceIDs {
+ err = st.Watch(ctx, resource.NewMetadata(deleteCmdFlags.namespace, rd.TypedSpec().Type, resourceID, resource.VersionUndefined), watchCh)
+ if err != nil {
+ return err
+ }
+ }
+
+ resourceIDsLeft := map[resource.ID]struct{}{}
+
+ for _, resourceID := range resourceIDs {
+ resourceIDsLeft[resourceID] = struct{}{}
+ }
+
+ // until some resources are not deleted yet...
+ for len(resourceIDsLeft) > 0 {
+ var event state.Event
+
+ select {
+ case <-ctx.Done():
+ return ctx.Err()
+ case event = <-watchCh:
+ }
+
+ switch event.Type {
+ case state.Destroyed:
+ delete(resourceIDsLeft, event.Resource.Metadata().ID())
+ case state.Created, state.Updated:
+ if _, ours := resourceIDsLeft[event.Resource.Metadata().ID()]; !ours {
+ continue
+ }
+
+ if event.Resource.Metadata().Phase() == resource.PhaseTearingDown && event.Resource.Metadata().Finalizers().Empty() {
+ if err = st.Destroy(ctx, event.Resource.Metadata()); err != nil && !state.IsNotFoundError(err) {
+ return err
+ }
+
+ fmt.Printf("destroyed %s %s\n", rd.TypedSpec().Type, event.Resource.Metadata().ID())
+ }
+ case state.Bootstrapped:
+ // ignore
+ case state.Errored:
+ return fmt.Errorf("error watching for resource deletion: %w", event.Error)
+ }
+ }
+
+ return nil
+ }
+}
+
+func init() {
+ deleteCmd.PersistentFlags().StringVarP(&deleteCmdFlags.namespace, "namespace", "n", resources.DefaultNamespace, "The resource namespace.")
+ deleteCmd.PersistentFlags().BoolVar(&deleteCmdFlags.all, "all", false, "Delete all resources of the type.")
+ deleteCmd.PersistentFlags().StringVarP(&deleteCmdFlags.selector, "selector", "l", "", "Selector (label query) to filter on, supports '=' and '==' (e.g. -l key1=value1,key2=value2)")
+
+ deleteCmd.MarkFlagsMutuallyExclusive("all", "selector")
+
+ RootCmd.AddCommand(deleteCmd)
+}
diff --git a/client/pkg/omnictl/docs.go b/client/pkg/omnictl/docs.go
new file mode 100644
index 000000000..2ccaab0ae
--- /dev/null
+++ b/client/pkg/omnictl/docs.go
@@ -0,0 +1,86 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package omnictl
+
+import (
+ "fmt"
+ "io"
+ "os"
+ "path"
+ "path/filepath"
+ "strings"
+
+ "github.com/spf13/cobra"
+ "github.com/spf13/cobra/doc"
+)
+
+func frontmatter(title, description string) string {
+ frontmatter := "---\n"
+
+ frontmatter += "title: " + title + "\n"
+ frontmatter += "description: " + description + "\n"
+
+ frontmatter += "---\n\n"
+
+ return frontmatter + "\n\n"
+}
+
+func linkHandler(name string) string {
+ base := strings.TrimSuffix(name, path.Ext(name))
+
+ base = strings.ReplaceAll(base, "_", "-")
+
+ return "#" + strings.ToLower(base)
+}
+
+// docsCmd represents the docs command.
+var docsCmd = &cobra.Command{
+ Use: "docs