From 2af1b10fe7e04cc30f48ad5ef527d1bb68e9d5e8 Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 11:14:03 +0200 Subject: [PATCH 01/20] chore: move vmprovisioner protos to shared protochore --- go/deploy/metald/Makefile | 20 +- go/deploy/metald/buf.gen.yaml | 15 - go/deploy/metald/buf.yaml | 15 - go/deploy/metald/client/client.go | 4 +- .../metald/client/cmd/metald-cli/main.go | 2 +- go/deploy/metald/client/config.go | 2 +- go/deploy/metald/client/example_test.go | 2 +- go/deploy/metald/client/types.go | 2 +- go/deploy/metald/client/vmconfig.go | 2 +- go/deploy/metald/cmd/metald/main.go | 2 +- go/deploy/metald/go.mod | 13 +- go/deploy/metald/go.sum | 6 +- .../backend/cloudhypervisor/client.go | 2 +- .../internal/backend/cloudhypervisor/types.go | 2 +- .../firecracker/automatic_build_test.go | 2 +- .../backend/firecracker/sdk_client_v4.go | 2 +- .../backend/firecracker/sdk_client_v4_test.go | 2 +- .../metald/internal/backend/types/backend.go | 2 +- .../metald/internal/database/repository.go | 2 +- .../internal/reconciler/vm_reconciler.go | 2 +- go/deploy/metald/internal/service/vm.go | 4 +- .../internal/service/vm_cleanup_bench_test.go | 2 +- .../assetmanagerd/proto/asset/v1/asset.pb.go | 2148 +++++++++ .../asset/v1/assetv1connect/asset.connect.go | 405 ++ .../billaged/proto/billing/v1/billing.pb.go | 754 ++++ .../v1/billingv1connect/billing.connect.go | 233 + .../builderd/proto/builder/v1/builder.pb.go | 3829 +++++++++++++++++ .../v1/builderv1connect/builder.connect.go | 338 ++ .../metald/proto}/vmprovisioner/v1/vm.pb.go | 275 +- .../v1/vmprovisionerv1connect/vm.connect.go | 56 +- .../vmprovisioner/v1/vmprovisioner.pb.go | 2864 ++++++++++++ .../vmprovisioner.connect.go | 362 ++ go/go.mod | 45 +- go/go.sum | 86 +- .../vmprovisioner/v1/vmprovisioner.proto} | 6 +- 35 files changed, 11213 insertions(+), 295 deletions(-) delete mode 100644 go/deploy/metald/buf.gen.yaml delete mode 100644 go/deploy/metald/buf.yaml create mode 100644 go/gen/deploy/assetmanagerd/proto/asset/v1/asset.pb.go create mode 100644 go/gen/deploy/assetmanagerd/proto/asset/v1/assetv1connect/asset.connect.go create mode 100644 go/gen/deploy/billaged/proto/billing/v1/billing.pb.go create mode 100644 go/gen/deploy/billaged/proto/billing/v1/billingv1connect/billing.connect.go create mode 100644 go/gen/deploy/builderd/proto/builder/v1/builder.pb.go create mode 100644 go/gen/deploy/builderd/proto/builder/v1/builderv1connect/builder.connect.go rename go/{deploy/metald/gen => gen/deploy/metald/proto}/vmprovisioner/v1/vm.pb.go (88%) rename go/{deploy/metald/gen => gen/deploy/metald/proto}/vmprovisioner/v1/vmprovisionerv1connect/vm.connect.go (88%) create mode 100644 go/gen/proto/metal/vmprovisioner/v1/vmprovisioner.pb.go create mode 100644 go/gen/proto/metal/vmprovisioner/v1/vmprovisionerv1connect/vmprovisioner.connect.go rename go/{deploy/metald/proto/vmprovisioner/v1/vm.proto => proto/metal/vmprovisioner/v1/vmprovisioner.proto} (98%) diff --git a/go/deploy/metald/Makefile b/go/deploy/metald/Makefile index b99de5ffb3..353adb65ec 100644 --- a/go/deploy/metald/Makefile +++ b/go/deploy/metald/Makefile @@ -15,9 +15,9 @@ CYAN := \033[36m RESET := \033[0m # Targets (alphabetically ordered) -.PHONY: build build-linux check ci clean clean-gen debug deps dev fmt generate health help install install-tools lint lint-proto metrics proto-breaking release run service-logs service-logs-full service-restart service-start service-status service-stop setup test test-coverage test-short uninstall version vet +.PHONY: build build-linux check ci clean debug deps dev fmt health help install install-tools lint metrics release run service-logs service-logs-full service-restart service-start service-status service-stop setup test test-coverage test-short uninstall version vet -build: generate deps ## Build the binary +build: deps ## Build the binary @mkdir -p $(BUILD_DIR) @go build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME) ./cmd/metald @@ -27,14 +27,12 @@ build-linux: ## Build Linux binary for deployment check: fmt vet lint test ## Run all checks (fmt, vet, lint with proto, test) -ci: deps generate lint vet test build ## Run CI pipeline locally +ci: deps lint vet test build ## Run CI pipeline locally clean: ## Clean build artifacts @rm -rf $(BUILD_DIR) @rm -f coverage.out coverage.html -clean-gen: ## Clean generated protobuf code - @rm -rf gen/ debug: build ## Run with debug logging @UNKEY_METALD_OTEL_ENABLED=true ./$(BUILD_DIR)/$(BINARY_NAME) @@ -49,9 +47,6 @@ dev: ## Run the service in development mode fmt: ## Format Go code @goimports -w . -generate: ## Generate protobuf code - @buf generate - @buf lint health: ## Check service health @curl -s http://localhost:8080/_/health | jq . || echo "Health check failed" @@ -73,18 +68,13 @@ install: build ## Install metald binary and systemd service @echo "✓ metald installed and started" -lint: lint-proto ## Run linting tools (includes protobuf linting) +lint: ## Run linting tools @which golangci-lint >/dev/null || (echo "golangci-lint not found, install from https://golangci-lint.run/usage/install/" && exit 1) @golangci-lint run --disable=godox -lint-proto: ## Run protobuf linter - @buf lint - metrics: ## Check Prometheus metrics @curl -s http://localhost:9464/metrics | grep -E "^(vm_|process_|jailer_)" || echo "No VM metrics found" -proto-breaking: ## Check for breaking changes in protobuf files - @buf breaking --against '.git#branch=main' release: clean ci build-linux ## Prepare release build @echo "✓ Release build: $(BUILD_DIR)/$(BINARY_NAME)-linux" @@ -113,7 +103,7 @@ service-stop: ## Stop metald service @sudo systemctl stop metald @echo "✓ metald stopped" -setup: deps generate ## Complete development setup +setup: deps ## Complete development setup test: ## Run all tests @go test ./... -v diff --git a/go/deploy/metald/buf.gen.yaml b/go/deploy/metald/buf.gen.yaml deleted file mode 100644 index d6175c3177..0000000000 --- a/go/deploy/metald/buf.gen.yaml +++ /dev/null @@ -1,15 +0,0 @@ -version: v2 -managed: - enabled: true - override: - - file_option: go_package_prefix - value: github.com/unkeyed/unkey/go/deploy/metald/gen -plugins: - - remote: buf.build/protocolbuffers/go - out: gen - opt: paths=source_relative - - remote: buf.build/connectrpc/go - out: gen - opt: paths=source_relative -inputs: - - directory: proto diff --git a/go/deploy/metald/buf.yaml b/go/deploy/metald/buf.yaml deleted file mode 100644 index 0ca96e9c90..0000000000 --- a/go/deploy/metald/buf.yaml +++ /dev/null @@ -1,15 +0,0 @@ -version: v2 -modules: - - path: proto - name: buf.build/local/metald -lint: - use: - - STANDARD - except: - - FIELD_LOWER_SNAKE_CASE - rpc_allow_same_request_response: true - rpc_allow_google_protobuf_empty_requests: true - rpc_allow_google_protobuf_empty_responses: true -breaking: - use: - - FILE diff --git a/go/deploy/metald/client/client.go b/go/deploy/metald/client/client.go index 2c02f0d2dd..0d371a3a09 100644 --- a/go/deploy/metald/client/client.go +++ b/go/deploy/metald/client/client.go @@ -7,9 +7,9 @@ import ( "time" "connectrpc.com/connect" - vmprovisionerv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" - "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1/vmprovisionerv1connect" "github.com/unkeyed/unkey/go/deploy/pkg/tls" + vmprovisionerv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" + "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1/vmprovisionerv1connect" ) // AIDEV-NOTE: Metald client with SPIFFE/SPIRE socket integration and tenant isolation diff --git a/go/deploy/metald/client/cmd/metald-cli/main.go b/go/deploy/metald/client/cmd/metald-cli/main.go index f175760b23..ebb2e5c4ba 100644 --- a/go/deploy/metald/client/cmd/metald-cli/main.go +++ b/go/deploy/metald/client/cmd/metald-cli/main.go @@ -10,7 +10,7 @@ import ( "time" "github.com/unkeyed/unkey/go/deploy/metald/client" - vmprovisionerv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" + vmprovisionerv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" ) // AIDEV-NOTE: CLI tool demonstrating metald client usage with SPIFFE integration diff --git a/go/deploy/metald/client/config.go b/go/deploy/metald/client/config.go index 7b5cda4aa1..e244007f55 100644 --- a/go/deploy/metald/client/config.go +++ b/go/deploy/metald/client/config.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - vmprovisionerv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" + vmprovisionerv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" ) // AIDEV-NOTE: Configuration file support for VM templates and custom configurations diff --git a/go/deploy/metald/client/example_test.go b/go/deploy/metald/client/example_test.go index f13a7d4457..5320e1ec8e 100644 --- a/go/deploy/metald/client/example_test.go +++ b/go/deploy/metald/client/example_test.go @@ -7,7 +7,7 @@ import ( "time" "github.com/unkeyed/unkey/go/deploy/metald/client" - vmprovisionerv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" + vmprovisionerv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" ) // AIDEV-NOTE: Example demonstrating metald client usage with SPIFFE authentication diff --git a/go/deploy/metald/client/types.go b/go/deploy/metald/client/types.go index 0d7e689bd8..d1e5f4c1a7 100644 --- a/go/deploy/metald/client/types.go +++ b/go/deploy/metald/client/types.go @@ -1,7 +1,7 @@ package client import ( - vmprovisionerv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" + vmprovisionerv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" ) // AIDEV-NOTE: Type definitions for metald client requests and responses diff --git a/go/deploy/metald/client/vmconfig.go b/go/deploy/metald/client/vmconfig.go index 60674befef..a843e24f05 100644 --- a/go/deploy/metald/client/vmconfig.go +++ b/go/deploy/metald/client/vmconfig.go @@ -3,7 +3,7 @@ package client import ( "fmt" - vmprovisionerv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" + vmprovisionerv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" ) // AIDEV-NOTE: VM configuration builder for customizable VM creation diff --git a/go/deploy/metald/cmd/metald/main.go b/go/deploy/metald/cmd/metald/main.go index 57da03fdc7..fc4b66d102 100644 --- a/go/deploy/metald/cmd/metald/main.go +++ b/go/deploy/metald/cmd/metald/main.go @@ -14,7 +14,6 @@ import ( "syscall" "time" - "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1/vmprovisionerv1connect" "github.com/unkeyed/unkey/go/deploy/metald/internal/assetmanager" "github.com/unkeyed/unkey/go/deploy/metald/internal/backend/firecracker" "github.com/unkeyed/unkey/go/deploy/metald/internal/backend/types" @@ -28,6 +27,7 @@ import ( healthpkg "github.com/unkeyed/unkey/go/deploy/pkg/health" "github.com/unkeyed/unkey/go/deploy/pkg/observability/interceptors" tlspkg "github.com/unkeyed/unkey/go/deploy/pkg/tls" + "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1/vmprovisionerv1connect" "connectrpc.com/connect" "github.com/prometheus/client_golang/prometheus/promhttp" diff --git a/go/deploy/metald/go.mod b/go/deploy/metald/go.mod index 428b0124c2..0565a2bc4a 100644 --- a/go/deploy/metald/go.mod +++ b/go/deploy/metald/go.mod @@ -8,9 +8,10 @@ require ( github.com/mattn/go-sqlite3 v1.14.28 github.com/prometheus/client_golang v1.22.0 github.com/stretchr/testify v1.10.0 - github.com/unkeyed/unkey/go/deploy/assetmanagerd v0.0.0-00010101000000-000000000000 - github.com/unkeyed/unkey/go/deploy/billaged v0.0.0-00010101000000-000000000000 - github.com/unkeyed/unkey/go/deploy/builderd v0.0.0-00010101000000-000000000000 + github.com/unkeyed/unkey/go v0.0.0-00010101000000-000000000000 + github.com/unkeyed/unkey/go/deploy/assetmanagerd v0.0.0-20250709084132-0dd195e4c51b + github.com/unkeyed/unkey/go/deploy/billaged v0.0.0-20250709084132-0dd195e4c51b + github.com/unkeyed/unkey/go/deploy/builderd v0.0.0-20250709084132-0dd195e4c51b github.com/unkeyed/unkey/go/deploy/pkg/health v0.0.0-00010101000000-000000000000 github.com/unkeyed/unkey/go/deploy/pkg/observability/interceptors v0.0.0-00010101000000-000000000000 github.com/unkeyed/unkey/go/deploy/pkg/tls v0.0.0-00010101000000-000000000000 @@ -40,7 +41,7 @@ require ( github.com/containerd/fifo v1.1.0 // indirect github.com/containernetworking/cni v1.3.0 // indirect github.com/containernetworking/plugins v1.7.1 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/go-jose/go-jose/v4 v4.0.5 // indirect github.com/go-logr/logr v1.4.3 // indirect @@ -65,7 +66,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.16.1 // indirect @@ -104,3 +105,5 @@ replace github.com/unkeyed/unkey/go/deploy/pkg/observability/interceptors => ../ replace github.com/unkeyed/unkey/go/deploy/pkg/tracing => ../pkg/tracing replace github.com/mitchellh/osext => github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 + +replace github.com/unkeyed/unkey/go => ../../ diff --git a/go/deploy/metald/go.sum b/go/deploy/metald/go.sum index 9edb2ded92..2611c095bb 100644 --- a/go/deploy/metald/go.sum +++ b/go/deploy/metald/go.sum @@ -225,8 +225,9 @@ github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= 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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= @@ -617,8 +618,9 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -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/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= diff --git a/go/deploy/metald/internal/backend/cloudhypervisor/client.go b/go/deploy/metald/internal/backend/cloudhypervisor/client.go index bc2e32abc4..8896324ba0 100644 --- a/go/deploy/metald/internal/backend/cloudhypervisor/client.go +++ b/go/deploy/metald/internal/backend/cloudhypervisor/client.go @@ -12,8 +12,8 @@ import ( "strings" "time" - metaldv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" "github.com/unkeyed/unkey/go/deploy/metald/internal/backend/types" + metaldv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" ) diff --git a/go/deploy/metald/internal/backend/cloudhypervisor/types.go b/go/deploy/metald/internal/backend/cloudhypervisor/types.go index 5c5c7f9e79..c6ae4f3ae3 100644 --- a/go/deploy/metald/internal/backend/cloudhypervisor/types.go +++ b/go/deploy/metald/internal/backend/cloudhypervisor/types.go @@ -1,7 +1,7 @@ package cloudhypervisor import ( - metaldv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" + metaldv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" ) // Cloud Hypervisor API types diff --git a/go/deploy/metald/internal/backend/firecracker/automatic_build_test.go b/go/deploy/metald/internal/backend/firecracker/automatic_build_test.go index f1779cd069..1cb1ac8795 100644 --- a/go/deploy/metald/internal/backend/firecracker/automatic_build_test.go +++ b/go/deploy/metald/internal/backend/firecracker/automatic_build_test.go @@ -9,8 +9,8 @@ import ( "log/slog" assetv1 "github.com/unkeyed/unkey/go/deploy/assetmanagerd/gen/asset/v1" - metaldv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" "github.com/unkeyed/unkey/go/deploy/metald/internal/config" + metaldv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" ) // mockAssetClient implements assetmanager.Client for testing automatic builds diff --git a/go/deploy/metald/internal/backend/firecracker/sdk_client_v4.go b/go/deploy/metald/internal/backend/firecracker/sdk_client_v4.go index 6bb4f5ae27..5f5ca75b1d 100644 --- a/go/deploy/metald/internal/backend/firecracker/sdk_client_v4.go +++ b/go/deploy/metald/internal/backend/firecracker/sdk_client_v4.go @@ -19,12 +19,12 @@ import ( "github.com/firecracker-microvm/firecracker-go-sdk/client/models" assetv1 "github.com/unkeyed/unkey/go/deploy/assetmanagerd/gen/asset/v1" builderv1 "github.com/unkeyed/unkey/go/deploy/builderd/gen/builder/v1" - metaldv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" "github.com/unkeyed/unkey/go/deploy/metald/internal/assetmanager" "github.com/unkeyed/unkey/go/deploy/metald/internal/backend/types" "github.com/unkeyed/unkey/go/deploy/metald/internal/config" "github.com/unkeyed/unkey/go/deploy/metald/internal/jailer" "github.com/unkeyed/unkey/go/deploy/metald/internal/network" + metaldv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" diff --git a/go/deploy/metald/internal/backend/firecracker/sdk_client_v4_test.go b/go/deploy/metald/internal/backend/firecracker/sdk_client_v4_test.go index 76e90ca89c..5447bab0b7 100644 --- a/go/deploy/metald/internal/backend/firecracker/sdk_client_v4_test.go +++ b/go/deploy/metald/internal/backend/firecracker/sdk_client_v4_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" assetv1 "github.com/unkeyed/unkey/go/deploy/assetmanagerd/gen/asset/v1" - metaldv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" + metaldv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" ) // MockAssetClient is a mock implementation of the assetmanager.Client interface diff --git a/go/deploy/metald/internal/backend/types/backend.go b/go/deploy/metald/internal/backend/types/backend.go index d847a84bc3..bee7c95142 100644 --- a/go/deploy/metald/internal/backend/types/backend.go +++ b/go/deploy/metald/internal/backend/types/backend.go @@ -4,7 +4,7 @@ import ( "context" "time" - metaldv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" + metaldv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" ) // Backend defines the interface for hypervisor backends diff --git a/go/deploy/metald/internal/database/repository.go b/go/deploy/metald/internal/database/repository.go index e2063ab7ab..9fcde4f3bc 100644 --- a/go/deploy/metald/internal/database/repository.go +++ b/go/deploy/metald/internal/database/repository.go @@ -7,7 +7,7 @@ import ( "log/slog" "time" - metaldv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" + metaldv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" "google.golang.org/protobuf/proto" diff --git a/go/deploy/metald/internal/reconciler/vm_reconciler.go b/go/deploy/metald/internal/reconciler/vm_reconciler.go index c951861aee..0e91949c3a 100644 --- a/go/deploy/metald/internal/reconciler/vm_reconciler.go +++ b/go/deploy/metald/internal/reconciler/vm_reconciler.go @@ -9,9 +9,9 @@ import ( "strings" "time" - metaldv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" "github.com/unkeyed/unkey/go/deploy/metald/internal/backend/types" "github.com/unkeyed/unkey/go/deploy/metald/internal/database" + metaldv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" ) // VMReconciler handles VM state reconciliation between database and reality diff --git a/go/deploy/metald/internal/service/vm.go b/go/deploy/metald/internal/service/vm.go index 3afb4093a1..af29ae6035 100644 --- a/go/deploy/metald/internal/service/vm.go +++ b/go/deploy/metald/internal/service/vm.go @@ -7,12 +7,12 @@ import ( "math" "time" - metaldv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" - "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1/vmprovisionerv1connect" "github.com/unkeyed/unkey/go/deploy/metald/internal/backend/types" "github.com/unkeyed/unkey/go/deploy/metald/internal/billing" "github.com/unkeyed/unkey/go/deploy/metald/internal/database" "github.com/unkeyed/unkey/go/deploy/metald/internal/observability" + metaldv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" + "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1/vmprovisionerv1connect" "connectrpc.com/connect" "go.opentelemetry.io/otel" diff --git a/go/deploy/metald/internal/service/vm_cleanup_bench_test.go b/go/deploy/metald/internal/service/vm_cleanup_bench_test.go index f3a3eea469..b88040ed11 100644 --- a/go/deploy/metald/internal/service/vm_cleanup_bench_test.go +++ b/go/deploy/metald/internal/service/vm_cleanup_bench_test.go @@ -12,8 +12,8 @@ import ( "testing" "time" - metaldv1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" "github.com/unkeyed/unkey/go/deploy/metald/internal/backend/types" + metaldv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" ) // Mock backend for cleanup benchmarks diff --git a/go/gen/deploy/assetmanagerd/proto/asset/v1/asset.pb.go b/go/gen/deploy/assetmanagerd/proto/asset/v1/asset.pb.go new file mode 100644 index 0000000000..9b179d165f --- /dev/null +++ b/go/gen/deploy/assetmanagerd/proto/asset/v1/asset.pb.go @@ -0,0 +1,2148 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc (unknown) +// source: deploy/assetmanagerd/proto/asset/v1/asset.proto + +package assetv1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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 AssetType int32 + +const ( + AssetType_ASSET_TYPE_UNSPECIFIED AssetType = 0 + AssetType_ASSET_TYPE_KERNEL AssetType = 1 + AssetType_ASSET_TYPE_ROOTFS AssetType = 2 + AssetType_ASSET_TYPE_INITRD AssetType = 3 + AssetType_ASSET_TYPE_DISK_IMAGE AssetType = 4 +) + +// Enum value maps for AssetType. +var ( + AssetType_name = map[int32]string{ + 0: "ASSET_TYPE_UNSPECIFIED", + 1: "ASSET_TYPE_KERNEL", + 2: "ASSET_TYPE_ROOTFS", + 3: "ASSET_TYPE_INITRD", + 4: "ASSET_TYPE_DISK_IMAGE", + } + AssetType_value = map[string]int32{ + "ASSET_TYPE_UNSPECIFIED": 0, + "ASSET_TYPE_KERNEL": 1, + "ASSET_TYPE_ROOTFS": 2, + "ASSET_TYPE_INITRD": 3, + "ASSET_TYPE_DISK_IMAGE": 4, + } +) + +func (x AssetType) Enum() *AssetType { + p := new(AssetType) + *p = x + return p +} + +func (x AssetType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AssetType) Descriptor() protoreflect.EnumDescriptor { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes[0].Descriptor() +} + +func (AssetType) Type() protoreflect.EnumType { + return &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes[0] +} + +func (x AssetType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AssetType.Descriptor instead. +func (AssetType) EnumDescriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{0} +} + +type AssetStatus int32 + +const ( + AssetStatus_ASSET_STATUS_UNSPECIFIED AssetStatus = 0 + AssetStatus_ASSET_STATUS_UPLOADING AssetStatus = 1 + AssetStatus_ASSET_STATUS_AVAILABLE AssetStatus = 2 + AssetStatus_ASSET_STATUS_DELETING AssetStatus = 3 + AssetStatus_ASSET_STATUS_ERROR AssetStatus = 4 +) + +// Enum value maps for AssetStatus. +var ( + AssetStatus_name = map[int32]string{ + 0: "ASSET_STATUS_UNSPECIFIED", + 1: "ASSET_STATUS_UPLOADING", + 2: "ASSET_STATUS_AVAILABLE", + 3: "ASSET_STATUS_DELETING", + 4: "ASSET_STATUS_ERROR", + } + AssetStatus_value = map[string]int32{ + "ASSET_STATUS_UNSPECIFIED": 0, + "ASSET_STATUS_UPLOADING": 1, + "ASSET_STATUS_AVAILABLE": 2, + "ASSET_STATUS_DELETING": 3, + "ASSET_STATUS_ERROR": 4, + } +) + +func (x AssetStatus) Enum() *AssetStatus { + p := new(AssetStatus) + *p = x + return p +} + +func (x AssetStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AssetStatus) Descriptor() protoreflect.EnumDescriptor { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes[1].Descriptor() +} + +func (AssetStatus) Type() protoreflect.EnumType { + return &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes[1] +} + +func (x AssetStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AssetStatus.Descriptor instead. +func (AssetStatus) EnumDescriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{1} +} + +type StorageBackend int32 + +const ( + StorageBackend_STORAGE_BACKEND_UNSPECIFIED StorageBackend = 0 + StorageBackend_STORAGE_BACKEND_LOCAL StorageBackend = 1 + StorageBackend_STORAGE_BACKEND_S3 StorageBackend = 2 + StorageBackend_STORAGE_BACKEND_HTTP StorageBackend = 3 + StorageBackend_STORAGE_BACKEND_NFS StorageBackend = 4 +) + +// Enum value maps for StorageBackend. +var ( + StorageBackend_name = map[int32]string{ + 0: "STORAGE_BACKEND_UNSPECIFIED", + 1: "STORAGE_BACKEND_LOCAL", + 2: "STORAGE_BACKEND_S3", + 3: "STORAGE_BACKEND_HTTP", + 4: "STORAGE_BACKEND_NFS", + } + StorageBackend_value = map[string]int32{ + "STORAGE_BACKEND_UNSPECIFIED": 0, + "STORAGE_BACKEND_LOCAL": 1, + "STORAGE_BACKEND_S3": 2, + "STORAGE_BACKEND_HTTP": 3, + "STORAGE_BACKEND_NFS": 4, + } +) + +func (x StorageBackend) Enum() *StorageBackend { + p := new(StorageBackend) + *p = x + return p +} + +func (x StorageBackend) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StorageBackend) Descriptor() protoreflect.EnumDescriptor { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes[2].Descriptor() +} + +func (StorageBackend) Type() protoreflect.EnumType { + return &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes[2] +} + +func (x StorageBackend) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StorageBackend.Descriptor instead. +func (StorageBackend) EnumDescriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{2} +} + +type Asset struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Type AssetType `protobuf:"varint,3,opt,name=type,proto3,enum=asset.v1.AssetType" json:"type,omitempty"` + Status AssetStatus `protobuf:"varint,4,opt,name=status,proto3,enum=asset.v1.AssetStatus" json:"status,omitempty"` + // Storage information + Backend StorageBackend `protobuf:"varint,5,opt,name=backend,proto3,enum=asset.v1.StorageBackend" json:"backend,omitempty"` + Location string `protobuf:"bytes,6,opt,name=location,proto3" json:"location,omitempty"` // Path or URL depending on backend + SizeBytes int64 `protobuf:"varint,7,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` // SHA256 + // Metadata + Labels map[string]string `protobuf:"bytes,9,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + CreatedBy string `protobuf:"bytes,10,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"` // e.g., "builderd", "manual" + CreatedAt int64 `protobuf:"varint,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Unix timestamp + LastAccessedAt int64 `protobuf:"varint,12,opt,name=last_accessed_at,json=lastAccessedAt,proto3" json:"last_accessed_at,omitempty"` + // Reference counting for GC + ReferenceCount int32 `protobuf:"varint,13,opt,name=reference_count,json=referenceCount,proto3" json:"reference_count,omitempty"` + // Build information (if created by builderd) + BuildId string `protobuf:"bytes,14,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` + SourceImage string `protobuf:"bytes,15,opt,name=source_image,json=sourceImage,proto3" json:"source_image,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Asset) Reset() { + *x = Asset{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Asset) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Asset) ProtoMessage() {} + +func (x *Asset) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Asset.ProtoReflect.Descriptor instead. +func (*Asset) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{0} +} + +func (x *Asset) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Asset) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Asset) GetType() AssetType { + if x != nil { + return x.Type + } + return AssetType_ASSET_TYPE_UNSPECIFIED +} + +func (x *Asset) GetStatus() AssetStatus { + if x != nil { + return x.Status + } + return AssetStatus_ASSET_STATUS_UNSPECIFIED +} + +func (x *Asset) GetBackend() StorageBackend { + if x != nil { + return x.Backend + } + return StorageBackend_STORAGE_BACKEND_UNSPECIFIED +} + +func (x *Asset) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + +func (x *Asset) GetSizeBytes() int64 { + if x != nil { + return x.SizeBytes + } + return 0 +} + +func (x *Asset) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Asset) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *Asset) GetCreatedBy() string { + if x != nil { + return x.CreatedBy + } + return "" +} + +func (x *Asset) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *Asset) GetLastAccessedAt() int64 { + if x != nil { + return x.LastAccessedAt + } + return 0 +} + +func (x *Asset) GetReferenceCount() int32 { + if x != nil { + return x.ReferenceCount + } + return 0 +} + +func (x *Asset) GetBuildId() string { + if x != nil { + return x.BuildId + } + return "" +} + +func (x *Asset) GetSourceImage() string { + if x != nil { + return x.SourceImage + } + return "" +} + +type UploadAssetRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Data: + // + // *UploadAssetRequest_Metadata + // *UploadAssetRequest_Chunk + Data isUploadAssetRequest_Data `protobuf_oneof:"data"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UploadAssetRequest) Reset() { + *x = UploadAssetRequest{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UploadAssetRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadAssetRequest) ProtoMessage() {} + +func (x *UploadAssetRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UploadAssetRequest.ProtoReflect.Descriptor instead. +func (*UploadAssetRequest) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{1} +} + +func (x *UploadAssetRequest) GetData() isUploadAssetRequest_Data { + if x != nil { + return x.Data + } + return nil +} + +func (x *UploadAssetRequest) GetMetadata() *UploadAssetMetadata { + if x != nil { + if x, ok := x.Data.(*UploadAssetRequest_Metadata); ok { + return x.Metadata + } + } + return nil +} + +func (x *UploadAssetRequest) GetChunk() []byte { + if x != nil { + if x, ok := x.Data.(*UploadAssetRequest_Chunk); ok { + return x.Chunk + } + } + return nil +} + +type isUploadAssetRequest_Data interface { + isUploadAssetRequest_Data() +} + +type UploadAssetRequest_Metadata struct { + Metadata *UploadAssetMetadata `protobuf:"bytes,1,opt,name=metadata,proto3,oneof"` +} + +type UploadAssetRequest_Chunk struct { + Chunk []byte `protobuf:"bytes,2,opt,name=chunk,proto3,oneof"` +} + +func (*UploadAssetRequest_Metadata) isUploadAssetRequest_Data() {} + +func (*UploadAssetRequest_Chunk) isUploadAssetRequest_Data() {} + +type UploadAssetMetadata struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Type AssetType `protobuf:"varint,2,opt,name=type,proto3,enum=asset.v1.AssetType" json:"type,omitempty"` + SizeBytes int64 `protobuf:"varint,3,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` + Labels map[string]string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + CreatedBy string `protobuf:"bytes,5,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"` + BuildId string `protobuf:"bytes,6,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` + SourceImage string `protobuf:"bytes,7,opt,name=source_image,json=sourceImage,proto3" json:"source_image,omitempty"` + Id string `protobuf:"bytes,8,opt,name=id,proto3" json:"id,omitempty"` // Optional: specific asset ID to use + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UploadAssetMetadata) Reset() { + *x = UploadAssetMetadata{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UploadAssetMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadAssetMetadata) ProtoMessage() {} + +func (x *UploadAssetMetadata) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UploadAssetMetadata.ProtoReflect.Descriptor instead. +func (*UploadAssetMetadata) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{2} +} + +func (x *UploadAssetMetadata) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *UploadAssetMetadata) GetType() AssetType { + if x != nil { + return x.Type + } + return AssetType_ASSET_TYPE_UNSPECIFIED +} + +func (x *UploadAssetMetadata) GetSizeBytes() int64 { + if x != nil { + return x.SizeBytes + } + return 0 +} + +func (x *UploadAssetMetadata) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *UploadAssetMetadata) GetCreatedBy() string { + if x != nil { + return x.CreatedBy + } + return "" +} + +func (x *UploadAssetMetadata) GetBuildId() string { + if x != nil { + return x.BuildId + } + return "" +} + +func (x *UploadAssetMetadata) GetSourceImage() string { + if x != nil { + return x.SourceImage + } + return "" +} + +func (x *UploadAssetMetadata) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type UploadAssetResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Asset *Asset `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UploadAssetResponse) Reset() { + *x = UploadAssetResponse{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UploadAssetResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadAssetResponse) ProtoMessage() {} + +func (x *UploadAssetResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UploadAssetResponse.ProtoReflect.Descriptor instead. +func (*UploadAssetResponse) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{3} +} + +func (x *UploadAssetResponse) GetAsset() *Asset { + if x != nil { + return x.Asset + } + return nil +} + +type RegisterAssetRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Type AssetType `protobuf:"varint,2,opt,name=type,proto3,enum=asset.v1.AssetType" json:"type,omitempty"` + Backend StorageBackend `protobuf:"varint,3,opt,name=backend,proto3,enum=asset.v1.StorageBackend" json:"backend,omitempty"` + Location string `protobuf:"bytes,4,opt,name=location,proto3" json:"location,omitempty"` + SizeBytes int64 `protobuf:"varint,5,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + Labels map[string]string `protobuf:"bytes,7,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + CreatedBy string `protobuf:"bytes,8,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"` + // Optional build information + BuildId string `protobuf:"bytes,9,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` + SourceImage string `protobuf:"bytes,10,opt,name=source_image,json=sourceImage,proto3" json:"source_image,omitempty"` + // Optional: specific asset ID to use (if not provided, one will be generated) + Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RegisterAssetRequest) Reset() { + *x = RegisterAssetRequest{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RegisterAssetRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterAssetRequest) ProtoMessage() {} + +func (x *RegisterAssetRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RegisterAssetRequest.ProtoReflect.Descriptor instead. +func (*RegisterAssetRequest) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{4} +} + +func (x *RegisterAssetRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *RegisterAssetRequest) GetType() AssetType { + if x != nil { + return x.Type + } + return AssetType_ASSET_TYPE_UNSPECIFIED +} + +func (x *RegisterAssetRequest) GetBackend() StorageBackend { + if x != nil { + return x.Backend + } + return StorageBackend_STORAGE_BACKEND_UNSPECIFIED +} + +func (x *RegisterAssetRequest) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + +func (x *RegisterAssetRequest) GetSizeBytes() int64 { + if x != nil { + return x.SizeBytes + } + return 0 +} + +func (x *RegisterAssetRequest) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *RegisterAssetRequest) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *RegisterAssetRequest) GetCreatedBy() string { + if x != nil { + return x.CreatedBy + } + return "" +} + +func (x *RegisterAssetRequest) GetBuildId() string { + if x != nil { + return x.BuildId + } + return "" +} + +func (x *RegisterAssetRequest) GetSourceImage() string { + if x != nil { + return x.SourceImage + } + return "" +} + +func (x *RegisterAssetRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type RegisterAssetResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Asset *Asset `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RegisterAssetResponse) Reset() { + *x = RegisterAssetResponse{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RegisterAssetResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterAssetResponse) ProtoMessage() {} + +func (x *RegisterAssetResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RegisterAssetResponse.ProtoReflect.Descriptor instead. +func (*RegisterAssetResponse) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{5} +} + +func (x *RegisterAssetResponse) GetAsset() *Asset { + if x != nil { + return x.Asset + } + return nil +} + +type GetAssetRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // If true, ensures asset is available locally (downloads if needed) + EnsureLocal bool `protobuf:"varint,2,opt,name=ensure_local,json=ensureLocal,proto3" json:"ensure_local,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetAssetRequest) Reset() { + *x = GetAssetRequest{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetAssetRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAssetRequest) ProtoMessage() {} + +func (x *GetAssetRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAssetRequest.ProtoReflect.Descriptor instead. +func (*GetAssetRequest) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{6} +} + +func (x *GetAssetRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetAssetRequest) GetEnsureLocal() bool { + if x != nil { + return x.EnsureLocal + } + return false +} + +type GetAssetResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Asset *Asset `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"` + // Local path if ensure_local was true + LocalPath string `protobuf:"bytes,2,opt,name=local_path,json=localPath,proto3" json:"local_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetAssetResponse) Reset() { + *x = GetAssetResponse{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetAssetResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAssetResponse) ProtoMessage() {} + +func (x *GetAssetResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAssetResponse.ProtoReflect.Descriptor instead. +func (*GetAssetResponse) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{7} +} + +func (x *GetAssetResponse) GetAsset() *Asset { + if x != nil { + return x.Asset + } + return nil +} + +func (x *GetAssetResponse) GetLocalPath() string { + if x != nil { + return x.LocalPath + } + return "" +} + +type ListAssetsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Filter by type + Type AssetType `protobuf:"varint,1,opt,name=type,proto3,enum=asset.v1.AssetType" json:"type,omitempty"` + // Filter by status + Status AssetStatus `protobuf:"varint,2,opt,name=status,proto3,enum=asset.v1.AssetStatus" json:"status,omitempty"` + // Filter by labels (all must match) + LabelSelector map[string]string `protobuf:"bytes,3,rep,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Pagination + PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListAssetsRequest) Reset() { + *x = ListAssetsRequest{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListAssetsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAssetsRequest) ProtoMessage() {} + +func (x *ListAssetsRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListAssetsRequest.ProtoReflect.Descriptor instead. +func (*ListAssetsRequest) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{8} +} + +func (x *ListAssetsRequest) GetType() AssetType { + if x != nil { + return x.Type + } + return AssetType_ASSET_TYPE_UNSPECIFIED +} + +func (x *ListAssetsRequest) GetStatus() AssetStatus { + if x != nil { + return x.Status + } + return AssetStatus_ASSET_STATUS_UNSPECIFIED +} + +func (x *ListAssetsRequest) GetLabelSelector() map[string]string { + if x != nil { + return x.LabelSelector + } + return nil +} + +func (x *ListAssetsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListAssetsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +type ListAssetsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Assets []*Asset `protobuf:"bytes,1,rep,name=assets,proto3" json:"assets,omitempty"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListAssetsResponse) Reset() { + *x = ListAssetsResponse{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListAssetsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAssetsResponse) ProtoMessage() {} + +func (x *ListAssetsResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListAssetsResponse.ProtoReflect.Descriptor instead. +func (*ListAssetsResponse) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{9} +} + +func (x *ListAssetsResponse) GetAssets() []*Asset { + if x != nil { + return x.Assets + } + return nil +} + +func (x *ListAssetsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +type AcquireAssetRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AssetId string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` + AcquiredBy string `protobuf:"bytes,2,opt,name=acquired_by,json=acquiredBy,proto3" json:"acquired_by,omitempty"` // e.g., "vm-123" + TtlSeconds int64 `protobuf:"varint,3,opt,name=ttl_seconds,json=ttlSeconds,proto3" json:"ttl_seconds,omitempty"` // Optional auto-release after TTL + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AcquireAssetRequest) Reset() { + *x = AcquireAssetRequest{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AcquireAssetRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcquireAssetRequest) ProtoMessage() {} + +func (x *AcquireAssetRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AcquireAssetRequest.ProtoReflect.Descriptor instead. +func (*AcquireAssetRequest) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{10} +} + +func (x *AcquireAssetRequest) GetAssetId() string { + if x != nil { + return x.AssetId + } + return "" +} + +func (x *AcquireAssetRequest) GetAcquiredBy() string { + if x != nil { + return x.AcquiredBy + } + return "" +} + +func (x *AcquireAssetRequest) GetTtlSeconds() int64 { + if x != nil { + return x.TtlSeconds + } + return 0 +} + +type AcquireAssetResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Asset *Asset `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"` + LeaseId string `protobuf:"bytes,2,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` // Use this for release + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AcquireAssetResponse) Reset() { + *x = AcquireAssetResponse{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AcquireAssetResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcquireAssetResponse) ProtoMessage() {} + +func (x *AcquireAssetResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AcquireAssetResponse.ProtoReflect.Descriptor instead. +func (*AcquireAssetResponse) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{11} +} + +func (x *AcquireAssetResponse) GetAsset() *Asset { + if x != nil { + return x.Asset + } + return nil +} + +func (x *AcquireAssetResponse) GetLeaseId() string { + if x != nil { + return x.LeaseId + } + return "" +} + +type ReleaseAssetRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseAssetRequest) Reset() { + *x = ReleaseAssetRequest{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseAssetRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseAssetRequest) ProtoMessage() {} + +func (x *ReleaseAssetRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseAssetRequest.ProtoReflect.Descriptor instead. +func (*ReleaseAssetRequest) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{12} +} + +func (x *ReleaseAssetRequest) GetLeaseId() string { + if x != nil { + return x.LeaseId + } + return "" +} + +type ReleaseAssetResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Asset *Asset `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseAssetResponse) Reset() { + *x = ReleaseAssetResponse{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseAssetResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseAssetResponse) ProtoMessage() {} + +func (x *ReleaseAssetResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseAssetResponse.ProtoReflect.Descriptor instead. +func (*ReleaseAssetResponse) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{13} +} + +func (x *ReleaseAssetResponse) GetAsset() *Asset { + if x != nil { + return x.Asset + } + return nil +} + +type DeleteAssetRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` // Delete even if ref count > 0 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteAssetRequest) Reset() { + *x = DeleteAssetRequest{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteAssetRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteAssetRequest) ProtoMessage() {} + +func (x *DeleteAssetRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteAssetRequest.ProtoReflect.Descriptor instead. +func (*DeleteAssetRequest) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{14} +} + +func (x *DeleteAssetRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *DeleteAssetRequest) GetForce() bool { + if x != nil { + return x.Force + } + return false +} + +type DeleteAssetResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Deleted bool `protobuf:"varint,1,opt,name=deleted,proto3" json:"deleted,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteAssetResponse) Reset() { + *x = DeleteAssetResponse{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteAssetResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteAssetResponse) ProtoMessage() {} + +func (x *DeleteAssetResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteAssetResponse.ProtoReflect.Descriptor instead. +func (*DeleteAssetResponse) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{15} +} + +func (x *DeleteAssetResponse) GetDeleted() bool { + if x != nil { + return x.Deleted + } + return false +} + +func (x *DeleteAssetResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type GarbageCollectRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Delete assets not accessed in this many seconds + MaxAgeSeconds int64 `protobuf:"varint,1,opt,name=max_age_seconds,json=maxAgeSeconds,proto3" json:"max_age_seconds,omitempty"` + // Delete assets with 0 references + DeleteUnreferenced bool `protobuf:"varint,2,opt,name=delete_unreferenced,json=deleteUnreferenced,proto3" json:"delete_unreferenced,omitempty"` + // Dry run - just return what would be deleted + DryRun bool `protobuf:"varint,3,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GarbageCollectRequest) Reset() { + *x = GarbageCollectRequest{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GarbageCollectRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GarbageCollectRequest) ProtoMessage() {} + +func (x *GarbageCollectRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GarbageCollectRequest.ProtoReflect.Descriptor instead. +func (*GarbageCollectRequest) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{16} +} + +func (x *GarbageCollectRequest) GetMaxAgeSeconds() int64 { + if x != nil { + return x.MaxAgeSeconds + } + return 0 +} + +func (x *GarbageCollectRequest) GetDeleteUnreferenced() bool { + if x != nil { + return x.DeleteUnreferenced + } + return false +} + +func (x *GarbageCollectRequest) GetDryRun() bool { + if x != nil { + return x.DryRun + } + return false +} + +type GarbageCollectResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + DeletedAssets []*Asset `protobuf:"bytes,1,rep,name=deleted_assets,json=deletedAssets,proto3" json:"deleted_assets,omitempty"` + BytesFreed int64 `protobuf:"varint,2,opt,name=bytes_freed,json=bytesFreed,proto3" json:"bytes_freed,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GarbageCollectResponse) Reset() { + *x = GarbageCollectResponse{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GarbageCollectResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GarbageCollectResponse) ProtoMessage() {} + +func (x *GarbageCollectResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GarbageCollectResponse.ProtoReflect.Descriptor instead. +func (*GarbageCollectResponse) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{17} +} + +func (x *GarbageCollectResponse) GetDeletedAssets() []*Asset { + if x != nil { + return x.DeletedAssets + } + return nil +} + +func (x *GarbageCollectResponse) GetBytesFreed() int64 { + if x != nil { + return x.BytesFreed + } + return 0 +} + +type PrepareAssetsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AssetIds []string `protobuf:"bytes,1,rep,name=asset_ids,json=assetIds,proto3" json:"asset_ids,omitempty"` + TargetPath string `protobuf:"bytes,2,opt,name=target_path,json=targetPath,proto3" json:"target_path,omitempty"` // e.g., jailer chroot path + PreparedFor string `protobuf:"bytes,3,opt,name=prepared_for,json=preparedFor,proto3" json:"prepared_for,omitempty"` // e.g., "vm-123" + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PrepareAssetsRequest) Reset() { + *x = PrepareAssetsRequest{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PrepareAssetsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrepareAssetsRequest) ProtoMessage() {} + +func (x *PrepareAssetsRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrepareAssetsRequest.ProtoReflect.Descriptor instead. +func (*PrepareAssetsRequest) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{18} +} + +func (x *PrepareAssetsRequest) GetAssetIds() []string { + if x != nil { + return x.AssetIds + } + return nil +} + +func (x *PrepareAssetsRequest) GetTargetPath() string { + if x != nil { + return x.TargetPath + } + return "" +} + +func (x *PrepareAssetsRequest) GetPreparedFor() string { + if x != nil { + return x.PreparedFor + } + return "" +} + +type PrepareAssetsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + AssetPaths map[string]string `protobuf:"bytes,1,rep,name=asset_paths,json=assetPaths,proto3" json:"asset_paths,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // asset_id -> local path + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PrepareAssetsResponse) Reset() { + *x = PrepareAssetsResponse{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PrepareAssetsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrepareAssetsResponse) ProtoMessage() {} + +func (x *PrepareAssetsResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrepareAssetsResponse.ProtoReflect.Descriptor instead. +func (*PrepareAssetsResponse) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{19} +} + +func (x *PrepareAssetsResponse) GetAssetPaths() map[string]string { + if x != nil { + return x.AssetPaths + } + return nil +} + +// QueryAssetsRequest is similar to ListAssetsRequest but with build options +type QueryAssetsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Filter by type + Type AssetType `protobuf:"varint,1,opt,name=type,proto3,enum=asset.v1.AssetType" json:"type,omitempty"` + // Filter by status + Status AssetStatus `protobuf:"varint,2,opt,name=status,proto3,enum=asset.v1.AssetStatus" json:"status,omitempty"` + // Filter by labels (all must match) + LabelSelector map[string]string `protobuf:"bytes,3,rep,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Pagination + PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Build options - if asset not found and these are set, trigger build + BuildOptions *BuildOptions `protobuf:"bytes,6,opt,name=build_options,json=buildOptions,proto3" json:"build_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *QueryAssetsRequest) Reset() { + *x = QueryAssetsRequest{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *QueryAssetsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryAssetsRequest) ProtoMessage() {} + +func (x *QueryAssetsRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryAssetsRequest.ProtoReflect.Descriptor instead. +func (*QueryAssetsRequest) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{20} +} + +func (x *QueryAssetsRequest) GetType() AssetType { + if x != nil { + return x.Type + } + return AssetType_ASSET_TYPE_UNSPECIFIED +} + +func (x *QueryAssetsRequest) GetStatus() AssetStatus { + if x != nil { + return x.Status + } + return AssetStatus_ASSET_STATUS_UNSPECIFIED +} + +func (x *QueryAssetsRequest) GetLabelSelector() map[string]string { + if x != nil { + return x.LabelSelector + } + return nil +} + +func (x *QueryAssetsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *QueryAssetsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *QueryAssetsRequest) GetBuildOptions() *BuildOptions { + if x != nil { + return x.BuildOptions + } + return nil +} + +// BuildOptions controls automatic asset creation +type BuildOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Enable automatic building if assets don't exist + EnableAutoBuild bool `protobuf:"varint,1,opt,name=enable_auto_build,json=enableAutoBuild,proto3" json:"enable_auto_build,omitempty"` + // Wait for build completion before returning + WaitForCompletion bool `protobuf:"varint,2,opt,name=wait_for_completion,json=waitForCompletion,proto3" json:"wait_for_completion,omitempty"` + // Timeout for build operation (seconds) + BuildTimeoutSeconds int32 `protobuf:"varint,3,opt,name=build_timeout_seconds,json=buildTimeoutSeconds,proto3" json:"build_timeout_seconds,omitempty"` + // Additional labels to add to the built asset + BuildLabels map[string]string `protobuf:"bytes,4,rep,name=build_labels,json=buildLabels,proto3" json:"build_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Tenant context for build authorization + TenantId string `protobuf:"bytes,5,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + // Suggested asset ID to use when registering the built asset + // This allows the caller to know the asset ID before it's built + SuggestedAssetId string `protobuf:"bytes,6,opt,name=suggested_asset_id,json=suggestedAssetId,proto3" json:"suggested_asset_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BuildOptions) Reset() { + *x = BuildOptions{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BuildOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildOptions) ProtoMessage() {} + +func (x *BuildOptions) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BuildOptions.ProtoReflect.Descriptor instead. +func (*BuildOptions) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{21} +} + +func (x *BuildOptions) GetEnableAutoBuild() bool { + if x != nil { + return x.EnableAutoBuild + } + return false +} + +func (x *BuildOptions) GetWaitForCompletion() bool { + if x != nil { + return x.WaitForCompletion + } + return false +} + +func (x *BuildOptions) GetBuildTimeoutSeconds() int32 { + if x != nil { + return x.BuildTimeoutSeconds + } + return 0 +} + +func (x *BuildOptions) GetBuildLabels() map[string]string { + if x != nil { + return x.BuildLabels + } + return nil +} + +func (x *BuildOptions) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +func (x *BuildOptions) GetSuggestedAssetId() string { + if x != nil { + return x.SuggestedAssetId + } + return "" +} + +// QueryAssetsResponse includes build information if builds were triggered +type QueryAssetsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Assets []*Asset `protobuf:"bytes,1,rep,name=assets,proto3" json:"assets,omitempty"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + // Information about any builds that were triggered + TriggeredBuilds []*BuildInfo `protobuf:"bytes,3,rep,name=triggered_builds,json=triggeredBuilds,proto3" json:"triggered_builds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *QueryAssetsResponse) Reset() { + *x = QueryAssetsResponse{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *QueryAssetsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryAssetsResponse) ProtoMessage() {} + +func (x *QueryAssetsResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryAssetsResponse.ProtoReflect.Descriptor instead. +func (*QueryAssetsResponse) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{22} +} + +func (x *QueryAssetsResponse) GetAssets() []*Asset { + if x != nil { + return x.Assets + } + return nil +} + +func (x *QueryAssetsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +func (x *QueryAssetsResponse) GetTriggeredBuilds() []*BuildInfo { + if x != nil { + return x.TriggeredBuilds + } + return nil +} + +// BuildInfo provides information about triggered builds +type BuildInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` + DockerImage string `protobuf:"bytes,2,opt,name=docker_image,json=dockerImage,proto3" json:"docker_image,omitempty"` + Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` // "pending", "building", "completed", "failed" + ErrorMessage string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + AssetId string `protobuf:"bytes,5,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` // Asset ID if build completed and asset was registered + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BuildInfo) Reset() { + *x = BuildInfo{} + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BuildInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildInfo) ProtoMessage() {} + +func (x *BuildInfo) ProtoReflect() protoreflect.Message { + mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BuildInfo.ProtoReflect.Descriptor instead. +func (*BuildInfo) Descriptor() ([]byte, []int) { + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{23} +} + +func (x *BuildInfo) GetBuildId() string { + if x != nil { + return x.BuildId + } + return "" +} + +func (x *BuildInfo) GetDockerImage() string { + if x != nil { + return x.DockerImage + } + return "" +} + +func (x *BuildInfo) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *BuildInfo) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage + } + return "" +} + +func (x *BuildInfo) GetAssetId() string { + if x != nil { + return x.AssetId + } + return "" +} + +var File_deploy_assetmanagerd_proto_asset_v1_asset_proto protoreflect.FileDescriptor + +const file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDesc = "" + + "\n" + + "/deploy/assetmanagerd/proto/asset/v1/asset.proto\x12\basset.v1\"\xcd\x04\n" + + "\x05Asset\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12'\n" + + "\x04type\x18\x03 \x01(\x0e2\x13.asset.v1.AssetTypeR\x04type\x12-\n" + + "\x06status\x18\x04 \x01(\x0e2\x15.asset.v1.AssetStatusR\x06status\x122\n" + + "\abackend\x18\x05 \x01(\x0e2\x18.asset.v1.StorageBackendR\abackend\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x1d\n" + + "\n" + + "size_bytes\x18\a \x01(\x03R\tsizeBytes\x12\x1a\n" + + "\bchecksum\x18\b \x01(\tR\bchecksum\x123\n" + + "\x06labels\x18\t \x03(\v2\x1b.asset.v1.Asset.LabelsEntryR\x06labels\x12\x1d\n" + + "\n" + + "created_by\x18\n" + + " \x01(\tR\tcreatedBy\x12\x1d\n" + + "\n" + + "created_at\x18\v \x01(\x03R\tcreatedAt\x12(\n" + + "\x10last_accessed_at\x18\f \x01(\x03R\x0elastAccessedAt\x12'\n" + + "\x0freference_count\x18\r \x01(\x05R\x0ereferenceCount\x12\x19\n" + + "\bbuild_id\x18\x0e \x01(\tR\abuildId\x12!\n" + + "\fsource_image\x18\x0f \x01(\tR\vsourceImage\x1a9\n" + + "\vLabelsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"q\n" + + "\x12UploadAssetRequest\x12;\n" + + "\bmetadata\x18\x01 \x01(\v2\x1d.asset.v1.UploadAssetMetadataH\x00R\bmetadata\x12\x16\n" + + "\x05chunk\x18\x02 \x01(\fH\x00R\x05chunkB\x06\n" + + "\x04data\"\xdc\x02\n" + + "\x13UploadAssetMetadata\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12'\n" + + "\x04type\x18\x02 \x01(\x0e2\x13.asset.v1.AssetTypeR\x04type\x12\x1d\n" + + "\n" + + "size_bytes\x18\x03 \x01(\x03R\tsizeBytes\x12A\n" + + "\x06labels\x18\x04 \x03(\v2).asset.v1.UploadAssetMetadata.LabelsEntryR\x06labels\x12\x1d\n" + + "\n" + + "created_by\x18\x05 \x01(\tR\tcreatedBy\x12\x19\n" + + "\bbuild_id\x18\x06 \x01(\tR\abuildId\x12!\n" + + "\fsource_image\x18\a \x01(\tR\vsourceImage\x12\x0e\n" + + "\x02id\x18\b \x01(\tR\x02id\x1a9\n" + + "\vLabelsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"<\n" + + "\x13UploadAssetResponse\x12%\n" + + "\x05asset\x18\x01 \x01(\v2\x0f.asset.v1.AssetR\x05asset\"\xca\x03\n" + + "\x14RegisterAssetRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12'\n" + + "\x04type\x18\x02 \x01(\x0e2\x13.asset.v1.AssetTypeR\x04type\x122\n" + + "\abackend\x18\x03 \x01(\x0e2\x18.asset.v1.StorageBackendR\abackend\x12\x1a\n" + + "\blocation\x18\x04 \x01(\tR\blocation\x12\x1d\n" + + "\n" + + "size_bytes\x18\x05 \x01(\x03R\tsizeBytes\x12\x1a\n" + + "\bchecksum\x18\x06 \x01(\tR\bchecksum\x12B\n" + + "\x06labels\x18\a \x03(\v2*.asset.v1.RegisterAssetRequest.LabelsEntryR\x06labels\x12\x1d\n" + + "\n" + + "created_by\x18\b \x01(\tR\tcreatedBy\x12\x19\n" + + "\bbuild_id\x18\t \x01(\tR\abuildId\x12!\n" + + "\fsource_image\x18\n" + + " \x01(\tR\vsourceImage\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x1a9\n" + + "\vLabelsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\">\n" + + "\x15RegisterAssetResponse\x12%\n" + + "\x05asset\x18\x01 \x01(\v2\x0f.asset.v1.AssetR\x05asset\"D\n" + + "\x0fGetAssetRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12!\n" + + "\fensure_local\x18\x02 \x01(\bR\vensureLocal\"X\n" + + "\x10GetAssetResponse\x12%\n" + + "\x05asset\x18\x01 \x01(\v2\x0f.asset.v1.AssetR\x05asset\x12\x1d\n" + + "\n" + + "local_path\x18\x02 \x01(\tR\tlocalPath\"\xc0\x02\n" + + "\x11ListAssetsRequest\x12'\n" + + "\x04type\x18\x01 \x01(\x0e2\x13.asset.v1.AssetTypeR\x04type\x12-\n" + + "\x06status\x18\x02 \x01(\x0e2\x15.asset.v1.AssetStatusR\x06status\x12U\n" + + "\x0elabel_selector\x18\x03 \x03(\v2..asset.v1.ListAssetsRequest.LabelSelectorEntryR\rlabelSelector\x12\x1b\n" + + "\tpage_size\x18\x04 \x01(\x05R\bpageSize\x12\x1d\n" + + "\n" + + "page_token\x18\x05 \x01(\tR\tpageToken\x1a@\n" + + "\x12LabelSelectorEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"e\n" + + "\x12ListAssetsResponse\x12'\n" + + "\x06assets\x18\x01 \x03(\v2\x0f.asset.v1.AssetR\x06assets\x12&\n" + + "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"r\n" + + "\x13AcquireAssetRequest\x12\x19\n" + + "\basset_id\x18\x01 \x01(\tR\aassetId\x12\x1f\n" + + "\vacquired_by\x18\x02 \x01(\tR\n" + + "acquiredBy\x12\x1f\n" + + "\vttl_seconds\x18\x03 \x01(\x03R\n" + + "ttlSeconds\"X\n" + + "\x14AcquireAssetResponse\x12%\n" + + "\x05asset\x18\x01 \x01(\v2\x0f.asset.v1.AssetR\x05asset\x12\x19\n" + + "\blease_id\x18\x02 \x01(\tR\aleaseId\"0\n" + + "\x13ReleaseAssetRequest\x12\x19\n" + + "\blease_id\x18\x01 \x01(\tR\aleaseId\"=\n" + + "\x14ReleaseAssetResponse\x12%\n" + + "\x05asset\x18\x01 \x01(\v2\x0f.asset.v1.AssetR\x05asset\":\n" + + "\x12DeleteAssetRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + + "\x05force\x18\x02 \x01(\bR\x05force\"I\n" + + "\x13DeleteAssetResponse\x12\x18\n" + + "\adeleted\x18\x01 \x01(\bR\adeleted\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\"\x89\x01\n" + + "\x15GarbageCollectRequest\x12&\n" + + "\x0fmax_age_seconds\x18\x01 \x01(\x03R\rmaxAgeSeconds\x12/\n" + + "\x13delete_unreferenced\x18\x02 \x01(\bR\x12deleteUnreferenced\x12\x17\n" + + "\adry_run\x18\x03 \x01(\bR\x06dryRun\"q\n" + + "\x16GarbageCollectResponse\x126\n" + + "\x0edeleted_assets\x18\x01 \x03(\v2\x0f.asset.v1.AssetR\rdeletedAssets\x12\x1f\n" + + "\vbytes_freed\x18\x02 \x01(\x03R\n" + + "bytesFreed\"w\n" + + "\x14PrepareAssetsRequest\x12\x1b\n" + + "\tasset_ids\x18\x01 \x03(\tR\bassetIds\x12\x1f\n" + + "\vtarget_path\x18\x02 \x01(\tR\n" + + "targetPath\x12!\n" + + "\fprepared_for\x18\x03 \x01(\tR\vpreparedFor\"\xa8\x01\n" + + "\x15PrepareAssetsResponse\x12P\n" + + "\vasset_paths\x18\x01 \x03(\v2/.asset.v1.PrepareAssetsResponse.AssetPathsEntryR\n" + + "assetPaths\x1a=\n" + + "\x0fAssetPathsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xff\x02\n" + + "\x12QueryAssetsRequest\x12'\n" + + "\x04type\x18\x01 \x01(\x0e2\x13.asset.v1.AssetTypeR\x04type\x12-\n" + + "\x06status\x18\x02 \x01(\x0e2\x15.asset.v1.AssetStatusR\x06status\x12V\n" + + "\x0elabel_selector\x18\x03 \x03(\v2/.asset.v1.QueryAssetsRequest.LabelSelectorEntryR\rlabelSelector\x12\x1b\n" + + "\tpage_size\x18\x04 \x01(\x05R\bpageSize\x12\x1d\n" + + "\n" + + "page_token\x18\x05 \x01(\tR\tpageToken\x12;\n" + + "\rbuild_options\x18\x06 \x01(\v2\x16.asset.v1.BuildOptionsR\fbuildOptions\x1a@\n" + + "\x12LabelSelectorEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xf5\x02\n" + + "\fBuildOptions\x12*\n" + + "\x11enable_auto_build\x18\x01 \x01(\bR\x0fenableAutoBuild\x12.\n" + + "\x13wait_for_completion\x18\x02 \x01(\bR\x11waitForCompletion\x122\n" + + "\x15build_timeout_seconds\x18\x03 \x01(\x05R\x13buildTimeoutSeconds\x12J\n" + + "\fbuild_labels\x18\x04 \x03(\v2'.asset.v1.BuildOptions.BuildLabelsEntryR\vbuildLabels\x12\x1b\n" + + "\ttenant_id\x18\x05 \x01(\tR\btenantId\x12,\n" + + "\x12suggested_asset_id\x18\x06 \x01(\tR\x10suggestedAssetId\x1a>\n" + + "\x10BuildLabelsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xa6\x01\n" + + "\x13QueryAssetsResponse\x12'\n" + + "\x06assets\x18\x01 \x03(\v2\x0f.asset.v1.AssetR\x06assets\x12&\n" + + "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12>\n" + + "\x10triggered_builds\x18\x03 \x03(\v2\x13.asset.v1.BuildInfoR\x0ftriggeredBuilds\"\xa1\x01\n" + + "\tBuildInfo\x12\x19\n" + + "\bbuild_id\x18\x01 \x01(\tR\abuildId\x12!\n" + + "\fdocker_image\x18\x02 \x01(\tR\vdockerImage\x12\x16\n" + + "\x06status\x18\x03 \x01(\tR\x06status\x12#\n" + + "\rerror_message\x18\x04 \x01(\tR\ferrorMessage\x12\x19\n" + + "\basset_id\x18\x05 \x01(\tR\aassetId*\x87\x01\n" + + "\tAssetType\x12\x1a\n" + + "\x16ASSET_TYPE_UNSPECIFIED\x10\x00\x12\x15\n" + + "\x11ASSET_TYPE_KERNEL\x10\x01\x12\x15\n" + + "\x11ASSET_TYPE_ROOTFS\x10\x02\x12\x15\n" + + "\x11ASSET_TYPE_INITRD\x10\x03\x12\x19\n" + + "\x15ASSET_TYPE_DISK_IMAGE\x10\x04*\x96\x01\n" + + "\vAssetStatus\x12\x1c\n" + + "\x18ASSET_STATUS_UNSPECIFIED\x10\x00\x12\x1a\n" + + "\x16ASSET_STATUS_UPLOADING\x10\x01\x12\x1a\n" + + "\x16ASSET_STATUS_AVAILABLE\x10\x02\x12\x19\n" + + "\x15ASSET_STATUS_DELETING\x10\x03\x12\x16\n" + + "\x12ASSET_STATUS_ERROR\x10\x04*\x97\x01\n" + + "\x0eStorageBackend\x12\x1f\n" + + "\x1bSTORAGE_BACKEND_UNSPECIFIED\x10\x00\x12\x19\n" + + "\x15STORAGE_BACKEND_LOCAL\x10\x01\x12\x16\n" + + "\x12STORAGE_BACKEND_S3\x10\x02\x12\x18\n" + + "\x14STORAGE_BACKEND_HTTP\x10\x03\x12\x17\n" + + "\x13STORAGE_BACKEND_NFS\x10\x042\x9e\x06\n" + + "\x13AssetManagerService\x12L\n" + + "\vUploadAsset\x12\x1c.asset.v1.UploadAssetRequest\x1a\x1d.asset.v1.UploadAssetResponse(\x01\x12P\n" + + "\rRegisterAsset\x12\x1e.asset.v1.RegisterAssetRequest\x1a\x1f.asset.v1.RegisterAssetResponse\x12A\n" + + "\bGetAsset\x12\x19.asset.v1.GetAssetRequest\x1a\x1a.asset.v1.GetAssetResponse\x12G\n" + + "\n" + + "ListAssets\x12\x1b.asset.v1.ListAssetsRequest\x1a\x1c.asset.v1.ListAssetsResponse\x12M\n" + + "\fAcquireAsset\x12\x1d.asset.v1.AcquireAssetRequest\x1a\x1e.asset.v1.AcquireAssetResponse\x12M\n" + + "\fReleaseAsset\x12\x1d.asset.v1.ReleaseAssetRequest\x1a\x1e.asset.v1.ReleaseAssetResponse\x12J\n" + + "\vDeleteAsset\x12\x1c.asset.v1.DeleteAssetRequest\x1a\x1d.asset.v1.DeleteAssetResponse\x12S\n" + + "\x0eGarbageCollect\x12\x1f.asset.v1.GarbageCollectRequest\x1a .asset.v1.GarbageCollectResponse\x12P\n" + + "\rPrepareAssets\x12\x1e.asset.v1.PrepareAssetsRequest\x1a\x1f.asset.v1.PrepareAssetsResponse\x12J\n" + + "\vQueryAssets\x12\x1c.asset.v1.QueryAssetsRequest\x1a\x1d.asset.v1.QueryAssetsResponseBGZEgithub.com/unkeyed/unkey/go/deploy/assetmanagerd/gen/asset/v1;assetv1b\x06proto3" + +var ( + file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescOnce sync.Once + file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescData []byte +) + +func file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP() []byte { + file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescOnce.Do(func() { + file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDesc), len(file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDesc))) + }) + return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescData +} + +var file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes = make([]protoimpl.MessageInfo, 31) +var file_deploy_assetmanagerd_proto_asset_v1_asset_proto_goTypes = []any{ + (AssetType)(0), // 0: asset.v1.AssetType + (AssetStatus)(0), // 1: asset.v1.AssetStatus + (StorageBackend)(0), // 2: asset.v1.StorageBackend + (*Asset)(nil), // 3: asset.v1.Asset + (*UploadAssetRequest)(nil), // 4: asset.v1.UploadAssetRequest + (*UploadAssetMetadata)(nil), // 5: asset.v1.UploadAssetMetadata + (*UploadAssetResponse)(nil), // 6: asset.v1.UploadAssetResponse + (*RegisterAssetRequest)(nil), // 7: asset.v1.RegisterAssetRequest + (*RegisterAssetResponse)(nil), // 8: asset.v1.RegisterAssetResponse + (*GetAssetRequest)(nil), // 9: asset.v1.GetAssetRequest + (*GetAssetResponse)(nil), // 10: asset.v1.GetAssetResponse + (*ListAssetsRequest)(nil), // 11: asset.v1.ListAssetsRequest + (*ListAssetsResponse)(nil), // 12: asset.v1.ListAssetsResponse + (*AcquireAssetRequest)(nil), // 13: asset.v1.AcquireAssetRequest + (*AcquireAssetResponse)(nil), // 14: asset.v1.AcquireAssetResponse + (*ReleaseAssetRequest)(nil), // 15: asset.v1.ReleaseAssetRequest + (*ReleaseAssetResponse)(nil), // 16: asset.v1.ReleaseAssetResponse + (*DeleteAssetRequest)(nil), // 17: asset.v1.DeleteAssetRequest + (*DeleteAssetResponse)(nil), // 18: asset.v1.DeleteAssetResponse + (*GarbageCollectRequest)(nil), // 19: asset.v1.GarbageCollectRequest + (*GarbageCollectResponse)(nil), // 20: asset.v1.GarbageCollectResponse + (*PrepareAssetsRequest)(nil), // 21: asset.v1.PrepareAssetsRequest + (*PrepareAssetsResponse)(nil), // 22: asset.v1.PrepareAssetsResponse + (*QueryAssetsRequest)(nil), // 23: asset.v1.QueryAssetsRequest + (*BuildOptions)(nil), // 24: asset.v1.BuildOptions + (*QueryAssetsResponse)(nil), // 25: asset.v1.QueryAssetsResponse + (*BuildInfo)(nil), // 26: asset.v1.BuildInfo + nil, // 27: asset.v1.Asset.LabelsEntry + nil, // 28: asset.v1.UploadAssetMetadata.LabelsEntry + nil, // 29: asset.v1.RegisterAssetRequest.LabelsEntry + nil, // 30: asset.v1.ListAssetsRequest.LabelSelectorEntry + nil, // 31: asset.v1.PrepareAssetsResponse.AssetPathsEntry + nil, // 32: asset.v1.QueryAssetsRequest.LabelSelectorEntry + nil, // 33: asset.v1.BuildOptions.BuildLabelsEntry +} +var file_deploy_assetmanagerd_proto_asset_v1_asset_proto_depIdxs = []int32{ + 0, // 0: asset.v1.Asset.type:type_name -> asset.v1.AssetType + 1, // 1: asset.v1.Asset.status:type_name -> asset.v1.AssetStatus + 2, // 2: asset.v1.Asset.backend:type_name -> asset.v1.StorageBackend + 27, // 3: asset.v1.Asset.labels:type_name -> asset.v1.Asset.LabelsEntry + 5, // 4: asset.v1.UploadAssetRequest.metadata:type_name -> asset.v1.UploadAssetMetadata + 0, // 5: asset.v1.UploadAssetMetadata.type:type_name -> asset.v1.AssetType + 28, // 6: asset.v1.UploadAssetMetadata.labels:type_name -> asset.v1.UploadAssetMetadata.LabelsEntry + 3, // 7: asset.v1.UploadAssetResponse.asset:type_name -> asset.v1.Asset + 0, // 8: asset.v1.RegisterAssetRequest.type:type_name -> asset.v1.AssetType + 2, // 9: asset.v1.RegisterAssetRequest.backend:type_name -> asset.v1.StorageBackend + 29, // 10: asset.v1.RegisterAssetRequest.labels:type_name -> asset.v1.RegisterAssetRequest.LabelsEntry + 3, // 11: asset.v1.RegisterAssetResponse.asset:type_name -> asset.v1.Asset + 3, // 12: asset.v1.GetAssetResponse.asset:type_name -> asset.v1.Asset + 0, // 13: asset.v1.ListAssetsRequest.type:type_name -> asset.v1.AssetType + 1, // 14: asset.v1.ListAssetsRequest.status:type_name -> asset.v1.AssetStatus + 30, // 15: asset.v1.ListAssetsRequest.label_selector:type_name -> asset.v1.ListAssetsRequest.LabelSelectorEntry + 3, // 16: asset.v1.ListAssetsResponse.assets:type_name -> asset.v1.Asset + 3, // 17: asset.v1.AcquireAssetResponse.asset:type_name -> asset.v1.Asset + 3, // 18: asset.v1.ReleaseAssetResponse.asset:type_name -> asset.v1.Asset + 3, // 19: asset.v1.GarbageCollectResponse.deleted_assets:type_name -> asset.v1.Asset + 31, // 20: asset.v1.PrepareAssetsResponse.asset_paths:type_name -> asset.v1.PrepareAssetsResponse.AssetPathsEntry + 0, // 21: asset.v1.QueryAssetsRequest.type:type_name -> asset.v1.AssetType + 1, // 22: asset.v1.QueryAssetsRequest.status:type_name -> asset.v1.AssetStatus + 32, // 23: asset.v1.QueryAssetsRequest.label_selector:type_name -> asset.v1.QueryAssetsRequest.LabelSelectorEntry + 24, // 24: asset.v1.QueryAssetsRequest.build_options:type_name -> asset.v1.BuildOptions + 33, // 25: asset.v1.BuildOptions.build_labels:type_name -> asset.v1.BuildOptions.BuildLabelsEntry + 3, // 26: asset.v1.QueryAssetsResponse.assets:type_name -> asset.v1.Asset + 26, // 27: asset.v1.QueryAssetsResponse.triggered_builds:type_name -> asset.v1.BuildInfo + 4, // 28: asset.v1.AssetManagerService.UploadAsset:input_type -> asset.v1.UploadAssetRequest + 7, // 29: asset.v1.AssetManagerService.RegisterAsset:input_type -> asset.v1.RegisterAssetRequest + 9, // 30: asset.v1.AssetManagerService.GetAsset:input_type -> asset.v1.GetAssetRequest + 11, // 31: asset.v1.AssetManagerService.ListAssets:input_type -> asset.v1.ListAssetsRequest + 13, // 32: asset.v1.AssetManagerService.AcquireAsset:input_type -> asset.v1.AcquireAssetRequest + 15, // 33: asset.v1.AssetManagerService.ReleaseAsset:input_type -> asset.v1.ReleaseAssetRequest + 17, // 34: asset.v1.AssetManagerService.DeleteAsset:input_type -> asset.v1.DeleteAssetRequest + 19, // 35: asset.v1.AssetManagerService.GarbageCollect:input_type -> asset.v1.GarbageCollectRequest + 21, // 36: asset.v1.AssetManagerService.PrepareAssets:input_type -> asset.v1.PrepareAssetsRequest + 23, // 37: asset.v1.AssetManagerService.QueryAssets:input_type -> asset.v1.QueryAssetsRequest + 6, // 38: asset.v1.AssetManagerService.UploadAsset:output_type -> asset.v1.UploadAssetResponse + 8, // 39: asset.v1.AssetManagerService.RegisterAsset:output_type -> asset.v1.RegisterAssetResponse + 10, // 40: asset.v1.AssetManagerService.GetAsset:output_type -> asset.v1.GetAssetResponse + 12, // 41: asset.v1.AssetManagerService.ListAssets:output_type -> asset.v1.ListAssetsResponse + 14, // 42: asset.v1.AssetManagerService.AcquireAsset:output_type -> asset.v1.AcquireAssetResponse + 16, // 43: asset.v1.AssetManagerService.ReleaseAsset:output_type -> asset.v1.ReleaseAssetResponse + 18, // 44: asset.v1.AssetManagerService.DeleteAsset:output_type -> asset.v1.DeleteAssetResponse + 20, // 45: asset.v1.AssetManagerService.GarbageCollect:output_type -> asset.v1.GarbageCollectResponse + 22, // 46: asset.v1.AssetManagerService.PrepareAssets:output_type -> asset.v1.PrepareAssetsResponse + 25, // 47: asset.v1.AssetManagerService.QueryAssets:output_type -> asset.v1.QueryAssetsResponse + 38, // [38:48] is the sub-list for method output_type + 28, // [28:38] is the sub-list for method input_type + 28, // [28:28] is the sub-list for extension type_name + 28, // [28:28] is the sub-list for extension extendee + 0, // [0:28] is the sub-list for field type_name +} + +func init() { file_deploy_assetmanagerd_proto_asset_v1_asset_proto_init() } +func file_deploy_assetmanagerd_proto_asset_v1_asset_proto_init() { + if File_deploy_assetmanagerd_proto_asset_v1_asset_proto != nil { + return + } + file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[1].OneofWrappers = []any{ + (*UploadAssetRequest_Metadata)(nil), + (*UploadAssetRequest_Chunk)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDesc), len(file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDesc)), + NumEnums: 3, + NumMessages: 31, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_deploy_assetmanagerd_proto_asset_v1_asset_proto_goTypes, + DependencyIndexes: file_deploy_assetmanagerd_proto_asset_v1_asset_proto_depIdxs, + EnumInfos: file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes, + MessageInfos: file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes, + }.Build() + File_deploy_assetmanagerd_proto_asset_v1_asset_proto = out.File + file_deploy_assetmanagerd_proto_asset_v1_asset_proto_goTypes = nil + file_deploy_assetmanagerd_proto_asset_v1_asset_proto_depIdxs = nil +} diff --git a/go/gen/deploy/assetmanagerd/proto/asset/v1/assetv1connect/asset.connect.go b/go/gen/deploy/assetmanagerd/proto/asset/v1/assetv1connect/asset.connect.go new file mode 100644 index 0000000000..238815eff1 --- /dev/null +++ b/go/gen/deploy/assetmanagerd/proto/asset/v1/assetv1connect/asset.connect.go @@ -0,0 +1,405 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: deploy/assetmanagerd/proto/asset/v1/asset.proto + +package assetv1connect + +import ( + connect "connectrpc.com/connect" + context "context" + errors "errors" + v1 "github.com/unkeyed/unkey/go/deploy/assetmanagerd/gen/asset/v1" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // AssetManagerServiceName is the fully-qualified name of the AssetManagerService service. + AssetManagerServiceName = "asset.v1.AssetManagerService" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // AssetManagerServiceUploadAssetProcedure is the fully-qualified name of the AssetManagerService's + // UploadAsset RPC. + AssetManagerServiceUploadAssetProcedure = "/asset.v1.AssetManagerService/UploadAsset" + // AssetManagerServiceRegisterAssetProcedure is the fully-qualified name of the + // AssetManagerService's RegisterAsset RPC. + AssetManagerServiceRegisterAssetProcedure = "/asset.v1.AssetManagerService/RegisterAsset" + // AssetManagerServiceGetAssetProcedure is the fully-qualified name of the AssetManagerService's + // GetAsset RPC. + AssetManagerServiceGetAssetProcedure = "/asset.v1.AssetManagerService/GetAsset" + // AssetManagerServiceListAssetsProcedure is the fully-qualified name of the AssetManagerService's + // ListAssets RPC. + AssetManagerServiceListAssetsProcedure = "/asset.v1.AssetManagerService/ListAssets" + // AssetManagerServiceAcquireAssetProcedure is the fully-qualified name of the AssetManagerService's + // AcquireAsset RPC. + AssetManagerServiceAcquireAssetProcedure = "/asset.v1.AssetManagerService/AcquireAsset" + // AssetManagerServiceReleaseAssetProcedure is the fully-qualified name of the AssetManagerService's + // ReleaseAsset RPC. + AssetManagerServiceReleaseAssetProcedure = "/asset.v1.AssetManagerService/ReleaseAsset" + // AssetManagerServiceDeleteAssetProcedure is the fully-qualified name of the AssetManagerService's + // DeleteAsset RPC. + AssetManagerServiceDeleteAssetProcedure = "/asset.v1.AssetManagerService/DeleteAsset" + // AssetManagerServiceGarbageCollectProcedure is the fully-qualified name of the + // AssetManagerService's GarbageCollect RPC. + AssetManagerServiceGarbageCollectProcedure = "/asset.v1.AssetManagerService/GarbageCollect" + // AssetManagerServicePrepareAssetsProcedure is the fully-qualified name of the + // AssetManagerService's PrepareAssets RPC. + AssetManagerServicePrepareAssetsProcedure = "/asset.v1.AssetManagerService/PrepareAssets" + // AssetManagerServiceQueryAssetsProcedure is the fully-qualified name of the AssetManagerService's + // QueryAssets RPC. + AssetManagerServiceQueryAssetsProcedure = "/asset.v1.AssetManagerService/QueryAssets" +) + +// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. +var ( + assetManagerServiceServiceDescriptor = v1.File_deploy_assetmanagerd_proto_asset_v1_asset_proto.Services().ByName("AssetManagerService") + assetManagerServiceUploadAssetMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("UploadAsset") + assetManagerServiceRegisterAssetMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("RegisterAsset") + assetManagerServiceGetAssetMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("GetAsset") + assetManagerServiceListAssetsMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("ListAssets") + assetManagerServiceAcquireAssetMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("AcquireAsset") + assetManagerServiceReleaseAssetMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("ReleaseAsset") + assetManagerServiceDeleteAssetMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("DeleteAsset") + assetManagerServiceGarbageCollectMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("GarbageCollect") + assetManagerServicePrepareAssetsMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("PrepareAssets") + assetManagerServiceQueryAssetsMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("QueryAssets") +) + +// AssetManagerServiceClient is a client for the asset.v1.AssetManagerService service. +type AssetManagerServiceClient interface { + // Upload and register an asset in one operation + UploadAsset(context.Context) *connect.ClientStreamForClient[v1.UploadAssetRequest, v1.UploadAssetResponse] + // Register a new asset (called by builderd after creating images) + RegisterAsset(context.Context, *connect.Request[v1.RegisterAssetRequest]) (*connect.Response[v1.RegisterAssetResponse], error) + // Get asset location and metadata + GetAsset(context.Context, *connect.Request[v1.GetAssetRequest]) (*connect.Response[v1.GetAssetResponse], error) + // List available assets with filtering + ListAssets(context.Context, *connect.Request[v1.ListAssetsRequest]) (*connect.Response[v1.ListAssetsResponse], error) + // Mark asset as in-use (reference counting for GC) + AcquireAsset(context.Context, *connect.Request[v1.AcquireAssetRequest]) (*connect.Response[v1.AcquireAssetResponse], error) + // Release asset reference (decrements ref count) + ReleaseAsset(context.Context, *connect.Request[v1.ReleaseAssetRequest]) (*connect.Response[v1.ReleaseAssetResponse], error) + // Delete an asset (only if ref count is 0) + DeleteAsset(context.Context, *connect.Request[v1.DeleteAssetRequest]) (*connect.Response[v1.DeleteAssetResponse], error) + // Trigger garbage collection of unused assets + GarbageCollect(context.Context, *connect.Request[v1.GarbageCollectRequest]) (*connect.Response[v1.GarbageCollectResponse], error) + // Pre-stage assets for a specific host/jailer + PrepareAssets(context.Context, *connect.Request[v1.PrepareAssetsRequest]) (*connect.Response[v1.PrepareAssetsResponse], error) + // Query assets with automatic build triggering if not found + // This is the enhanced version of ListAssets that supports automatic asset creation + QueryAssets(context.Context, *connect.Request[v1.QueryAssetsRequest]) (*connect.Response[v1.QueryAssetsResponse], error) +} + +// NewAssetManagerServiceClient constructs a client for the asset.v1.AssetManagerService service. By +// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, +// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the +// connect.WithGRPC() or connect.WithGRPCWeb() options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewAssetManagerServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) AssetManagerServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + return &assetManagerServiceClient{ + uploadAsset: connect.NewClient[v1.UploadAssetRequest, v1.UploadAssetResponse]( + httpClient, + baseURL+AssetManagerServiceUploadAssetProcedure, + connect.WithSchema(assetManagerServiceUploadAssetMethodDescriptor), + connect.WithClientOptions(opts...), + ), + registerAsset: connect.NewClient[v1.RegisterAssetRequest, v1.RegisterAssetResponse]( + httpClient, + baseURL+AssetManagerServiceRegisterAssetProcedure, + connect.WithSchema(assetManagerServiceRegisterAssetMethodDescriptor), + connect.WithClientOptions(opts...), + ), + getAsset: connect.NewClient[v1.GetAssetRequest, v1.GetAssetResponse]( + httpClient, + baseURL+AssetManagerServiceGetAssetProcedure, + connect.WithSchema(assetManagerServiceGetAssetMethodDescriptor), + connect.WithClientOptions(opts...), + ), + listAssets: connect.NewClient[v1.ListAssetsRequest, v1.ListAssetsResponse]( + httpClient, + baseURL+AssetManagerServiceListAssetsProcedure, + connect.WithSchema(assetManagerServiceListAssetsMethodDescriptor), + connect.WithClientOptions(opts...), + ), + acquireAsset: connect.NewClient[v1.AcquireAssetRequest, v1.AcquireAssetResponse]( + httpClient, + baseURL+AssetManagerServiceAcquireAssetProcedure, + connect.WithSchema(assetManagerServiceAcquireAssetMethodDescriptor), + connect.WithClientOptions(opts...), + ), + releaseAsset: connect.NewClient[v1.ReleaseAssetRequest, v1.ReleaseAssetResponse]( + httpClient, + baseURL+AssetManagerServiceReleaseAssetProcedure, + connect.WithSchema(assetManagerServiceReleaseAssetMethodDescriptor), + connect.WithClientOptions(opts...), + ), + deleteAsset: connect.NewClient[v1.DeleteAssetRequest, v1.DeleteAssetResponse]( + httpClient, + baseURL+AssetManagerServiceDeleteAssetProcedure, + connect.WithSchema(assetManagerServiceDeleteAssetMethodDescriptor), + connect.WithClientOptions(opts...), + ), + garbageCollect: connect.NewClient[v1.GarbageCollectRequest, v1.GarbageCollectResponse]( + httpClient, + baseURL+AssetManagerServiceGarbageCollectProcedure, + connect.WithSchema(assetManagerServiceGarbageCollectMethodDescriptor), + connect.WithClientOptions(opts...), + ), + prepareAssets: connect.NewClient[v1.PrepareAssetsRequest, v1.PrepareAssetsResponse]( + httpClient, + baseURL+AssetManagerServicePrepareAssetsProcedure, + connect.WithSchema(assetManagerServicePrepareAssetsMethodDescriptor), + connect.WithClientOptions(opts...), + ), + queryAssets: connect.NewClient[v1.QueryAssetsRequest, v1.QueryAssetsResponse]( + httpClient, + baseURL+AssetManagerServiceQueryAssetsProcedure, + connect.WithSchema(assetManagerServiceQueryAssetsMethodDescriptor), + connect.WithClientOptions(opts...), + ), + } +} + +// assetManagerServiceClient implements AssetManagerServiceClient. +type assetManagerServiceClient struct { + uploadAsset *connect.Client[v1.UploadAssetRequest, v1.UploadAssetResponse] + registerAsset *connect.Client[v1.RegisterAssetRequest, v1.RegisterAssetResponse] + getAsset *connect.Client[v1.GetAssetRequest, v1.GetAssetResponse] + listAssets *connect.Client[v1.ListAssetsRequest, v1.ListAssetsResponse] + acquireAsset *connect.Client[v1.AcquireAssetRequest, v1.AcquireAssetResponse] + releaseAsset *connect.Client[v1.ReleaseAssetRequest, v1.ReleaseAssetResponse] + deleteAsset *connect.Client[v1.DeleteAssetRequest, v1.DeleteAssetResponse] + garbageCollect *connect.Client[v1.GarbageCollectRequest, v1.GarbageCollectResponse] + prepareAssets *connect.Client[v1.PrepareAssetsRequest, v1.PrepareAssetsResponse] + queryAssets *connect.Client[v1.QueryAssetsRequest, v1.QueryAssetsResponse] +} + +// UploadAsset calls asset.v1.AssetManagerService.UploadAsset. +func (c *assetManagerServiceClient) UploadAsset(ctx context.Context) *connect.ClientStreamForClient[v1.UploadAssetRequest, v1.UploadAssetResponse] { + return c.uploadAsset.CallClientStream(ctx) +} + +// RegisterAsset calls asset.v1.AssetManagerService.RegisterAsset. +func (c *assetManagerServiceClient) RegisterAsset(ctx context.Context, req *connect.Request[v1.RegisterAssetRequest]) (*connect.Response[v1.RegisterAssetResponse], error) { + return c.registerAsset.CallUnary(ctx, req) +} + +// GetAsset calls asset.v1.AssetManagerService.GetAsset. +func (c *assetManagerServiceClient) GetAsset(ctx context.Context, req *connect.Request[v1.GetAssetRequest]) (*connect.Response[v1.GetAssetResponse], error) { + return c.getAsset.CallUnary(ctx, req) +} + +// ListAssets calls asset.v1.AssetManagerService.ListAssets. +func (c *assetManagerServiceClient) ListAssets(ctx context.Context, req *connect.Request[v1.ListAssetsRequest]) (*connect.Response[v1.ListAssetsResponse], error) { + return c.listAssets.CallUnary(ctx, req) +} + +// AcquireAsset calls asset.v1.AssetManagerService.AcquireAsset. +func (c *assetManagerServiceClient) AcquireAsset(ctx context.Context, req *connect.Request[v1.AcquireAssetRequest]) (*connect.Response[v1.AcquireAssetResponse], error) { + return c.acquireAsset.CallUnary(ctx, req) +} + +// ReleaseAsset calls asset.v1.AssetManagerService.ReleaseAsset. +func (c *assetManagerServiceClient) ReleaseAsset(ctx context.Context, req *connect.Request[v1.ReleaseAssetRequest]) (*connect.Response[v1.ReleaseAssetResponse], error) { + return c.releaseAsset.CallUnary(ctx, req) +} + +// DeleteAsset calls asset.v1.AssetManagerService.DeleteAsset. +func (c *assetManagerServiceClient) DeleteAsset(ctx context.Context, req *connect.Request[v1.DeleteAssetRequest]) (*connect.Response[v1.DeleteAssetResponse], error) { + return c.deleteAsset.CallUnary(ctx, req) +} + +// GarbageCollect calls asset.v1.AssetManagerService.GarbageCollect. +func (c *assetManagerServiceClient) GarbageCollect(ctx context.Context, req *connect.Request[v1.GarbageCollectRequest]) (*connect.Response[v1.GarbageCollectResponse], error) { + return c.garbageCollect.CallUnary(ctx, req) +} + +// PrepareAssets calls asset.v1.AssetManagerService.PrepareAssets. +func (c *assetManagerServiceClient) PrepareAssets(ctx context.Context, req *connect.Request[v1.PrepareAssetsRequest]) (*connect.Response[v1.PrepareAssetsResponse], error) { + return c.prepareAssets.CallUnary(ctx, req) +} + +// QueryAssets calls asset.v1.AssetManagerService.QueryAssets. +func (c *assetManagerServiceClient) QueryAssets(ctx context.Context, req *connect.Request[v1.QueryAssetsRequest]) (*connect.Response[v1.QueryAssetsResponse], error) { + return c.queryAssets.CallUnary(ctx, req) +} + +// AssetManagerServiceHandler is an implementation of the asset.v1.AssetManagerService service. +type AssetManagerServiceHandler interface { + // Upload and register an asset in one operation + UploadAsset(context.Context, *connect.ClientStream[v1.UploadAssetRequest]) (*connect.Response[v1.UploadAssetResponse], error) + // Register a new asset (called by builderd after creating images) + RegisterAsset(context.Context, *connect.Request[v1.RegisterAssetRequest]) (*connect.Response[v1.RegisterAssetResponse], error) + // Get asset location and metadata + GetAsset(context.Context, *connect.Request[v1.GetAssetRequest]) (*connect.Response[v1.GetAssetResponse], error) + // List available assets with filtering + ListAssets(context.Context, *connect.Request[v1.ListAssetsRequest]) (*connect.Response[v1.ListAssetsResponse], error) + // Mark asset as in-use (reference counting for GC) + AcquireAsset(context.Context, *connect.Request[v1.AcquireAssetRequest]) (*connect.Response[v1.AcquireAssetResponse], error) + // Release asset reference (decrements ref count) + ReleaseAsset(context.Context, *connect.Request[v1.ReleaseAssetRequest]) (*connect.Response[v1.ReleaseAssetResponse], error) + // Delete an asset (only if ref count is 0) + DeleteAsset(context.Context, *connect.Request[v1.DeleteAssetRequest]) (*connect.Response[v1.DeleteAssetResponse], error) + // Trigger garbage collection of unused assets + GarbageCollect(context.Context, *connect.Request[v1.GarbageCollectRequest]) (*connect.Response[v1.GarbageCollectResponse], error) + // Pre-stage assets for a specific host/jailer + PrepareAssets(context.Context, *connect.Request[v1.PrepareAssetsRequest]) (*connect.Response[v1.PrepareAssetsResponse], error) + // Query assets with automatic build triggering if not found + // This is the enhanced version of ListAssets that supports automatic asset creation + QueryAssets(context.Context, *connect.Request[v1.QueryAssetsRequest]) (*connect.Response[v1.QueryAssetsResponse], error) +} + +// NewAssetManagerServiceHandler builds an HTTP handler from the service implementation. It returns +// the path on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewAssetManagerServiceHandler(svc AssetManagerServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + assetManagerServiceUploadAssetHandler := connect.NewClientStreamHandler( + AssetManagerServiceUploadAssetProcedure, + svc.UploadAsset, + connect.WithSchema(assetManagerServiceUploadAssetMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + assetManagerServiceRegisterAssetHandler := connect.NewUnaryHandler( + AssetManagerServiceRegisterAssetProcedure, + svc.RegisterAsset, + connect.WithSchema(assetManagerServiceRegisterAssetMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + assetManagerServiceGetAssetHandler := connect.NewUnaryHandler( + AssetManagerServiceGetAssetProcedure, + svc.GetAsset, + connect.WithSchema(assetManagerServiceGetAssetMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + assetManagerServiceListAssetsHandler := connect.NewUnaryHandler( + AssetManagerServiceListAssetsProcedure, + svc.ListAssets, + connect.WithSchema(assetManagerServiceListAssetsMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + assetManagerServiceAcquireAssetHandler := connect.NewUnaryHandler( + AssetManagerServiceAcquireAssetProcedure, + svc.AcquireAsset, + connect.WithSchema(assetManagerServiceAcquireAssetMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + assetManagerServiceReleaseAssetHandler := connect.NewUnaryHandler( + AssetManagerServiceReleaseAssetProcedure, + svc.ReleaseAsset, + connect.WithSchema(assetManagerServiceReleaseAssetMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + assetManagerServiceDeleteAssetHandler := connect.NewUnaryHandler( + AssetManagerServiceDeleteAssetProcedure, + svc.DeleteAsset, + connect.WithSchema(assetManagerServiceDeleteAssetMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + assetManagerServiceGarbageCollectHandler := connect.NewUnaryHandler( + AssetManagerServiceGarbageCollectProcedure, + svc.GarbageCollect, + connect.WithSchema(assetManagerServiceGarbageCollectMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + assetManagerServicePrepareAssetsHandler := connect.NewUnaryHandler( + AssetManagerServicePrepareAssetsProcedure, + svc.PrepareAssets, + connect.WithSchema(assetManagerServicePrepareAssetsMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + assetManagerServiceQueryAssetsHandler := connect.NewUnaryHandler( + AssetManagerServiceQueryAssetsProcedure, + svc.QueryAssets, + connect.WithSchema(assetManagerServiceQueryAssetsMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + return "/asset.v1.AssetManagerService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case AssetManagerServiceUploadAssetProcedure: + assetManagerServiceUploadAssetHandler.ServeHTTP(w, r) + case AssetManagerServiceRegisterAssetProcedure: + assetManagerServiceRegisterAssetHandler.ServeHTTP(w, r) + case AssetManagerServiceGetAssetProcedure: + assetManagerServiceGetAssetHandler.ServeHTTP(w, r) + case AssetManagerServiceListAssetsProcedure: + assetManagerServiceListAssetsHandler.ServeHTTP(w, r) + case AssetManagerServiceAcquireAssetProcedure: + assetManagerServiceAcquireAssetHandler.ServeHTTP(w, r) + case AssetManagerServiceReleaseAssetProcedure: + assetManagerServiceReleaseAssetHandler.ServeHTTP(w, r) + case AssetManagerServiceDeleteAssetProcedure: + assetManagerServiceDeleteAssetHandler.ServeHTTP(w, r) + case AssetManagerServiceGarbageCollectProcedure: + assetManagerServiceGarbageCollectHandler.ServeHTTP(w, r) + case AssetManagerServicePrepareAssetsProcedure: + assetManagerServicePrepareAssetsHandler.ServeHTTP(w, r) + case AssetManagerServiceQueryAssetsProcedure: + assetManagerServiceQueryAssetsHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedAssetManagerServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedAssetManagerServiceHandler struct{} + +func (UnimplementedAssetManagerServiceHandler) UploadAsset(context.Context, *connect.ClientStream[v1.UploadAssetRequest]) (*connect.Response[v1.UploadAssetResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.UploadAsset is not implemented")) +} + +func (UnimplementedAssetManagerServiceHandler) RegisterAsset(context.Context, *connect.Request[v1.RegisterAssetRequest]) (*connect.Response[v1.RegisterAssetResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.RegisterAsset is not implemented")) +} + +func (UnimplementedAssetManagerServiceHandler) GetAsset(context.Context, *connect.Request[v1.GetAssetRequest]) (*connect.Response[v1.GetAssetResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.GetAsset is not implemented")) +} + +func (UnimplementedAssetManagerServiceHandler) ListAssets(context.Context, *connect.Request[v1.ListAssetsRequest]) (*connect.Response[v1.ListAssetsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.ListAssets is not implemented")) +} + +func (UnimplementedAssetManagerServiceHandler) AcquireAsset(context.Context, *connect.Request[v1.AcquireAssetRequest]) (*connect.Response[v1.AcquireAssetResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.AcquireAsset is not implemented")) +} + +func (UnimplementedAssetManagerServiceHandler) ReleaseAsset(context.Context, *connect.Request[v1.ReleaseAssetRequest]) (*connect.Response[v1.ReleaseAssetResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.ReleaseAsset is not implemented")) +} + +func (UnimplementedAssetManagerServiceHandler) DeleteAsset(context.Context, *connect.Request[v1.DeleteAssetRequest]) (*connect.Response[v1.DeleteAssetResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.DeleteAsset is not implemented")) +} + +func (UnimplementedAssetManagerServiceHandler) GarbageCollect(context.Context, *connect.Request[v1.GarbageCollectRequest]) (*connect.Response[v1.GarbageCollectResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.GarbageCollect is not implemented")) +} + +func (UnimplementedAssetManagerServiceHandler) PrepareAssets(context.Context, *connect.Request[v1.PrepareAssetsRequest]) (*connect.Response[v1.PrepareAssetsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.PrepareAssets is not implemented")) +} + +func (UnimplementedAssetManagerServiceHandler) QueryAssets(context.Context, *connect.Request[v1.QueryAssetsRequest]) (*connect.Response[v1.QueryAssetsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.QueryAssets is not implemented")) +} diff --git a/go/gen/deploy/billaged/proto/billing/v1/billing.pb.go b/go/gen/deploy/billaged/proto/billing/v1/billing.pb.go new file mode 100644 index 0000000000..1f4e0baca5 --- /dev/null +++ b/go/gen/deploy/billaged/proto/billing/v1/billing.pb.go @@ -0,0 +1,754 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc (unknown) +// source: deploy/billaged/proto/billing/v1/billing.proto + +package billingv1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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 VMMetrics struct { + state protoimpl.MessageState `protogen:"open.v1"` + Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + CpuTimeNanos int64 `protobuf:"varint,2,opt,name=cpu_time_nanos,json=cpuTimeNanos,proto3" json:"cpu_time_nanos,omitempty"` + MemoryUsageBytes int64 `protobuf:"varint,3,opt,name=memory_usage_bytes,json=memoryUsageBytes,proto3" json:"memory_usage_bytes,omitempty"` + DiskReadBytes int64 `protobuf:"varint,4,opt,name=disk_read_bytes,json=diskReadBytes,proto3" json:"disk_read_bytes,omitempty"` + DiskWriteBytes int64 `protobuf:"varint,5,opt,name=disk_write_bytes,json=diskWriteBytes,proto3" json:"disk_write_bytes,omitempty"` + NetworkRxBytes int64 `protobuf:"varint,6,opt,name=network_rx_bytes,json=networkRxBytes,proto3" json:"network_rx_bytes,omitempty"` + NetworkTxBytes int64 `protobuf:"varint,7,opt,name=network_tx_bytes,json=networkTxBytes,proto3" json:"network_tx_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VMMetrics) Reset() { + *x = VMMetrics{} + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VMMetrics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VMMetrics) ProtoMessage() {} + +func (x *VMMetrics) ProtoReflect() protoreflect.Message { + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VMMetrics.ProtoReflect.Descriptor instead. +func (*VMMetrics) Descriptor() ([]byte, []int) { + return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{0} +} + +func (x *VMMetrics) GetTimestamp() *timestamppb.Timestamp { + if x != nil { + return x.Timestamp + } + return nil +} + +func (x *VMMetrics) GetCpuTimeNanos() int64 { + if x != nil { + return x.CpuTimeNanos + } + return 0 +} + +func (x *VMMetrics) GetMemoryUsageBytes() int64 { + if x != nil { + return x.MemoryUsageBytes + } + return 0 +} + +func (x *VMMetrics) GetDiskReadBytes() int64 { + if x != nil { + return x.DiskReadBytes + } + return 0 +} + +func (x *VMMetrics) GetDiskWriteBytes() int64 { + if x != nil { + return x.DiskWriteBytes + } + return 0 +} + +func (x *VMMetrics) GetNetworkRxBytes() int64 { + if x != nil { + return x.NetworkRxBytes + } + return 0 +} + +func (x *VMMetrics) GetNetworkTxBytes() int64 { + if x != nil { + return x.NetworkTxBytes + } + return 0 +} + +type SendMetricsBatchRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` + Metrics []*VMMetrics `protobuf:"bytes,3,rep,name=metrics,proto3" json:"metrics,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SendMetricsBatchRequest) Reset() { + *x = SendMetricsBatchRequest{} + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SendMetricsBatchRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendMetricsBatchRequest) ProtoMessage() {} + +func (x *SendMetricsBatchRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SendMetricsBatchRequest.ProtoReflect.Descriptor instead. +func (*SendMetricsBatchRequest) Descriptor() ([]byte, []int) { + return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{1} +} + +func (x *SendMetricsBatchRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *SendMetricsBatchRequest) GetCustomerId() string { + if x != nil { + return x.CustomerId + } + return "" +} + +func (x *SendMetricsBatchRequest) GetMetrics() []*VMMetrics { + if x != nil { + return x.Metrics + } + return nil +} + +type SendMetricsBatchResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SendMetricsBatchResponse) Reset() { + *x = SendMetricsBatchResponse{} + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SendMetricsBatchResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendMetricsBatchResponse) ProtoMessage() {} + +func (x *SendMetricsBatchResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SendMetricsBatchResponse.ProtoReflect.Descriptor instead. +func (*SendMetricsBatchResponse) Descriptor() ([]byte, []int) { + return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{2} +} + +func (x *SendMetricsBatchResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *SendMetricsBatchResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type SendHeartbeatRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + ActiveVms []string `protobuf:"bytes,2,rep,name=active_vms,json=activeVms,proto3" json:"active_vms,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SendHeartbeatRequest) Reset() { + *x = SendHeartbeatRequest{} + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SendHeartbeatRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendHeartbeatRequest) ProtoMessage() {} + +func (x *SendHeartbeatRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SendHeartbeatRequest.ProtoReflect.Descriptor instead. +func (*SendHeartbeatRequest) Descriptor() ([]byte, []int) { + return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{3} +} + +func (x *SendHeartbeatRequest) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +func (x *SendHeartbeatRequest) GetActiveVms() []string { + if x != nil { + return x.ActiveVms + } + return nil +} + +type SendHeartbeatResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SendHeartbeatResponse) Reset() { + *x = SendHeartbeatResponse{} + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SendHeartbeatResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendHeartbeatResponse) ProtoMessage() {} + +func (x *SendHeartbeatResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SendHeartbeatResponse.ProtoReflect.Descriptor instead. +func (*SendHeartbeatResponse) Descriptor() ([]byte, []int) { + return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{4} +} + +func (x *SendHeartbeatResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +type NotifyVmStartedRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` + StartTime int64 `protobuf:"varint,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NotifyVmStartedRequest) Reset() { + *x = NotifyVmStartedRequest{} + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NotifyVmStartedRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyVmStartedRequest) ProtoMessage() {} + +func (x *NotifyVmStartedRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyVmStartedRequest.ProtoReflect.Descriptor instead. +func (*NotifyVmStartedRequest) Descriptor() ([]byte, []int) { + return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{5} +} + +func (x *NotifyVmStartedRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *NotifyVmStartedRequest) GetCustomerId() string { + if x != nil { + return x.CustomerId + } + return "" +} + +func (x *NotifyVmStartedRequest) GetStartTime() int64 { + if x != nil { + return x.StartTime + } + return 0 +} + +type NotifyVmStartedResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NotifyVmStartedResponse) Reset() { + *x = NotifyVmStartedResponse{} + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NotifyVmStartedResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyVmStartedResponse) ProtoMessage() {} + +func (x *NotifyVmStartedResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyVmStartedResponse.ProtoReflect.Descriptor instead. +func (*NotifyVmStartedResponse) Descriptor() ([]byte, []int) { + return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{6} +} + +func (x *NotifyVmStartedResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +type NotifyVmStoppedRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + StopTime int64 `protobuf:"varint,2,opt,name=stop_time,json=stopTime,proto3" json:"stop_time,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NotifyVmStoppedRequest) Reset() { + *x = NotifyVmStoppedRequest{} + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NotifyVmStoppedRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyVmStoppedRequest) ProtoMessage() {} + +func (x *NotifyVmStoppedRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyVmStoppedRequest.ProtoReflect.Descriptor instead. +func (*NotifyVmStoppedRequest) Descriptor() ([]byte, []int) { + return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{7} +} + +func (x *NotifyVmStoppedRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *NotifyVmStoppedRequest) GetStopTime() int64 { + if x != nil { + return x.StopTime + } + return 0 +} + +type NotifyVmStoppedResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NotifyVmStoppedResponse) Reset() { + *x = NotifyVmStoppedResponse{} + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NotifyVmStoppedResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyVmStoppedResponse) ProtoMessage() {} + +func (x *NotifyVmStoppedResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyVmStoppedResponse.ProtoReflect.Descriptor instead. +func (*NotifyVmStoppedResponse) Descriptor() ([]byte, []int) { + return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{8} +} + +func (x *NotifyVmStoppedResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +type NotifyPossibleGapRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + LastSent int64 `protobuf:"varint,2,opt,name=last_sent,json=lastSent,proto3" json:"last_sent,omitempty"` + ResumeTime int64 `protobuf:"varint,3,opt,name=resume_time,json=resumeTime,proto3" json:"resume_time,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NotifyPossibleGapRequest) Reset() { + *x = NotifyPossibleGapRequest{} + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NotifyPossibleGapRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyPossibleGapRequest) ProtoMessage() {} + +func (x *NotifyPossibleGapRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyPossibleGapRequest.ProtoReflect.Descriptor instead. +func (*NotifyPossibleGapRequest) Descriptor() ([]byte, []int) { + return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{9} +} + +func (x *NotifyPossibleGapRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *NotifyPossibleGapRequest) GetLastSent() int64 { + if x != nil { + return x.LastSent + } + return 0 +} + +func (x *NotifyPossibleGapRequest) GetResumeTime() int64 { + if x != nil { + return x.ResumeTime + } + return 0 +} + +type NotifyPossibleGapResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NotifyPossibleGapResponse) Reset() { + *x = NotifyPossibleGapResponse{} + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NotifyPossibleGapResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyPossibleGapResponse) ProtoMessage() {} + +func (x *NotifyPossibleGapResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyPossibleGapResponse.ProtoReflect.Descriptor instead. +func (*NotifyPossibleGapResponse) Descriptor() ([]byte, []int) { + return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{10} +} + +func (x *NotifyPossibleGapResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +var File_deploy_billaged_proto_billing_v1_billing_proto protoreflect.FileDescriptor + +const file_deploy_billaged_proto_billing_v1_billing_proto_rawDesc = "" + + "\n" + + ".deploy/billaged/proto/billing/v1/billing.proto\x12\n" + + "billing.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\xbf\x02\n" + + "\tVMMetrics\x128\n" + + "\ttimestamp\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12$\n" + + "\x0ecpu_time_nanos\x18\x02 \x01(\x03R\fcpuTimeNanos\x12,\n" + + "\x12memory_usage_bytes\x18\x03 \x01(\x03R\x10memoryUsageBytes\x12&\n" + + "\x0fdisk_read_bytes\x18\x04 \x01(\x03R\rdiskReadBytes\x12(\n" + + "\x10disk_write_bytes\x18\x05 \x01(\x03R\x0ediskWriteBytes\x12(\n" + + "\x10network_rx_bytes\x18\x06 \x01(\x03R\x0enetworkRxBytes\x12(\n" + + "\x10network_tx_bytes\x18\a \x01(\x03R\x0enetworkTxBytes\"\x80\x01\n" + + "\x17SendMetricsBatchRequest\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12\x1f\n" + + "\vcustomer_id\x18\x02 \x01(\tR\n" + + "customerId\x12/\n" + + "\ametrics\x18\x03 \x03(\v2\x15.billing.v1.VMMetricsR\ametrics\"N\n" + + "\x18SendMetricsBatchResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\"V\n" + + "\x14SendHeartbeatRequest\x12\x1f\n" + + "\vinstance_id\x18\x01 \x01(\tR\n" + + "instanceId\x12\x1d\n" + + "\n" + + "active_vms\x18\x02 \x03(\tR\tactiveVms\"1\n" + + "\x15SendHeartbeatResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\"m\n" + + "\x16NotifyVmStartedRequest\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12\x1f\n" + + "\vcustomer_id\x18\x02 \x01(\tR\n" + + "customerId\x12\x1d\n" + + "\n" + + "start_time\x18\x03 \x01(\x03R\tstartTime\"3\n" + + "\x17NotifyVmStartedResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\"J\n" + + "\x16NotifyVmStoppedRequest\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12\x1b\n" + + "\tstop_time\x18\x02 \x01(\x03R\bstopTime\"3\n" + + "\x17NotifyVmStoppedResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\"m\n" + + "\x18NotifyPossibleGapRequest\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12\x1b\n" + + "\tlast_sent\x18\x02 \x01(\x03R\blastSent\x12\x1f\n" + + "\vresume_time\x18\x03 \x01(\x03R\n" + + "resumeTime\"5\n" + + "\x19NotifyPossibleGapResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess2\xdf\x03\n" + + "\x0eBillingService\x12]\n" + + "\x10SendMetricsBatch\x12#.billing.v1.SendMetricsBatchRequest\x1a$.billing.v1.SendMetricsBatchResponse\x12T\n" + + "\rSendHeartbeat\x12 .billing.v1.SendHeartbeatRequest\x1a!.billing.v1.SendHeartbeatResponse\x12Z\n" + + "\x0fNotifyVmStarted\x12\".billing.v1.NotifyVmStartedRequest\x1a#.billing.v1.NotifyVmStartedResponse\x12Z\n" + + "\x0fNotifyVmStopped\x12\".billing.v1.NotifyVmStoppedRequest\x1a#.billing.v1.NotifyVmStoppedResponse\x12`\n" + + "\x11NotifyPossibleGap\x12$.billing.v1.NotifyPossibleGapRequest\x1a%.billing.v1.NotifyPossibleGapResponseBFZDgithub.com/unkeyed/unkey/go/deploy/billaged/gen/billing/v1;billingv1b\x06proto3" + +var ( + file_deploy_billaged_proto_billing_v1_billing_proto_rawDescOnce sync.Once + file_deploy_billaged_proto_billing_v1_billing_proto_rawDescData []byte +) + +func file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP() []byte { + file_deploy_billaged_proto_billing_v1_billing_proto_rawDescOnce.Do(func() { + file_deploy_billaged_proto_billing_v1_billing_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_deploy_billaged_proto_billing_v1_billing_proto_rawDesc), len(file_deploy_billaged_proto_billing_v1_billing_proto_rawDesc))) + }) + return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescData +} + +var file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_deploy_billaged_proto_billing_v1_billing_proto_goTypes = []any{ + (*VMMetrics)(nil), // 0: billing.v1.VMMetrics + (*SendMetricsBatchRequest)(nil), // 1: billing.v1.SendMetricsBatchRequest + (*SendMetricsBatchResponse)(nil), // 2: billing.v1.SendMetricsBatchResponse + (*SendHeartbeatRequest)(nil), // 3: billing.v1.SendHeartbeatRequest + (*SendHeartbeatResponse)(nil), // 4: billing.v1.SendHeartbeatResponse + (*NotifyVmStartedRequest)(nil), // 5: billing.v1.NotifyVmStartedRequest + (*NotifyVmStartedResponse)(nil), // 6: billing.v1.NotifyVmStartedResponse + (*NotifyVmStoppedRequest)(nil), // 7: billing.v1.NotifyVmStoppedRequest + (*NotifyVmStoppedResponse)(nil), // 8: billing.v1.NotifyVmStoppedResponse + (*NotifyPossibleGapRequest)(nil), // 9: billing.v1.NotifyPossibleGapRequest + (*NotifyPossibleGapResponse)(nil), // 10: billing.v1.NotifyPossibleGapResponse + (*timestamppb.Timestamp)(nil), // 11: google.protobuf.Timestamp +} +var file_deploy_billaged_proto_billing_v1_billing_proto_depIdxs = []int32{ + 11, // 0: billing.v1.VMMetrics.timestamp:type_name -> google.protobuf.Timestamp + 0, // 1: billing.v1.SendMetricsBatchRequest.metrics:type_name -> billing.v1.VMMetrics + 1, // 2: billing.v1.BillingService.SendMetricsBatch:input_type -> billing.v1.SendMetricsBatchRequest + 3, // 3: billing.v1.BillingService.SendHeartbeat:input_type -> billing.v1.SendHeartbeatRequest + 5, // 4: billing.v1.BillingService.NotifyVmStarted:input_type -> billing.v1.NotifyVmStartedRequest + 7, // 5: billing.v1.BillingService.NotifyVmStopped:input_type -> billing.v1.NotifyVmStoppedRequest + 9, // 6: billing.v1.BillingService.NotifyPossibleGap:input_type -> billing.v1.NotifyPossibleGapRequest + 2, // 7: billing.v1.BillingService.SendMetricsBatch:output_type -> billing.v1.SendMetricsBatchResponse + 4, // 8: billing.v1.BillingService.SendHeartbeat:output_type -> billing.v1.SendHeartbeatResponse + 6, // 9: billing.v1.BillingService.NotifyVmStarted:output_type -> billing.v1.NotifyVmStartedResponse + 8, // 10: billing.v1.BillingService.NotifyVmStopped:output_type -> billing.v1.NotifyVmStoppedResponse + 10, // 11: billing.v1.BillingService.NotifyPossibleGap:output_type -> billing.v1.NotifyPossibleGapResponse + 7, // [7:12] is the sub-list for method output_type + 2, // [2:7] 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_deploy_billaged_proto_billing_v1_billing_proto_init() } +func file_deploy_billaged_proto_billing_v1_billing_proto_init() { + if File_deploy_billaged_proto_billing_v1_billing_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_deploy_billaged_proto_billing_v1_billing_proto_rawDesc), len(file_deploy_billaged_proto_billing_v1_billing_proto_rawDesc)), + NumEnums: 0, + NumMessages: 11, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_deploy_billaged_proto_billing_v1_billing_proto_goTypes, + DependencyIndexes: file_deploy_billaged_proto_billing_v1_billing_proto_depIdxs, + MessageInfos: file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes, + }.Build() + File_deploy_billaged_proto_billing_v1_billing_proto = out.File + file_deploy_billaged_proto_billing_v1_billing_proto_goTypes = nil + file_deploy_billaged_proto_billing_v1_billing_proto_depIdxs = nil +} diff --git a/go/gen/deploy/billaged/proto/billing/v1/billingv1connect/billing.connect.go b/go/gen/deploy/billaged/proto/billing/v1/billingv1connect/billing.connect.go new file mode 100644 index 0000000000..7c44ea0558 --- /dev/null +++ b/go/gen/deploy/billaged/proto/billing/v1/billingv1connect/billing.connect.go @@ -0,0 +1,233 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: deploy/billaged/proto/billing/v1/billing.proto + +package billingv1connect + +import ( + connect "connectrpc.com/connect" + context "context" + errors "errors" + v1 "github.com/unkeyed/unkey/go/deploy/billaged/gen/billing/v1" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // BillingServiceName is the fully-qualified name of the BillingService service. + BillingServiceName = "billing.v1.BillingService" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // BillingServiceSendMetricsBatchProcedure is the fully-qualified name of the BillingService's + // SendMetricsBatch RPC. + BillingServiceSendMetricsBatchProcedure = "/billing.v1.BillingService/SendMetricsBatch" + // BillingServiceSendHeartbeatProcedure is the fully-qualified name of the BillingService's + // SendHeartbeat RPC. + BillingServiceSendHeartbeatProcedure = "/billing.v1.BillingService/SendHeartbeat" + // BillingServiceNotifyVmStartedProcedure is the fully-qualified name of the BillingService's + // NotifyVmStarted RPC. + BillingServiceNotifyVmStartedProcedure = "/billing.v1.BillingService/NotifyVmStarted" + // BillingServiceNotifyVmStoppedProcedure is the fully-qualified name of the BillingService's + // NotifyVmStopped RPC. + BillingServiceNotifyVmStoppedProcedure = "/billing.v1.BillingService/NotifyVmStopped" + // BillingServiceNotifyPossibleGapProcedure is the fully-qualified name of the BillingService's + // NotifyPossibleGap RPC. + BillingServiceNotifyPossibleGapProcedure = "/billing.v1.BillingService/NotifyPossibleGap" +) + +// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. +var ( + billingServiceServiceDescriptor = v1.File_deploy_billaged_proto_billing_v1_billing_proto.Services().ByName("BillingService") + billingServiceSendMetricsBatchMethodDescriptor = billingServiceServiceDescriptor.Methods().ByName("SendMetricsBatch") + billingServiceSendHeartbeatMethodDescriptor = billingServiceServiceDescriptor.Methods().ByName("SendHeartbeat") + billingServiceNotifyVmStartedMethodDescriptor = billingServiceServiceDescriptor.Methods().ByName("NotifyVmStarted") + billingServiceNotifyVmStoppedMethodDescriptor = billingServiceServiceDescriptor.Methods().ByName("NotifyVmStopped") + billingServiceNotifyPossibleGapMethodDescriptor = billingServiceServiceDescriptor.Methods().ByName("NotifyPossibleGap") +) + +// BillingServiceClient is a client for the billing.v1.BillingService service. +type BillingServiceClient interface { + SendMetricsBatch(context.Context, *connect.Request[v1.SendMetricsBatchRequest]) (*connect.Response[v1.SendMetricsBatchResponse], error) + SendHeartbeat(context.Context, *connect.Request[v1.SendHeartbeatRequest]) (*connect.Response[v1.SendHeartbeatResponse], error) + NotifyVmStarted(context.Context, *connect.Request[v1.NotifyVmStartedRequest]) (*connect.Response[v1.NotifyVmStartedResponse], error) + NotifyVmStopped(context.Context, *connect.Request[v1.NotifyVmStoppedRequest]) (*connect.Response[v1.NotifyVmStoppedResponse], error) + NotifyPossibleGap(context.Context, *connect.Request[v1.NotifyPossibleGapRequest]) (*connect.Response[v1.NotifyPossibleGapResponse], error) +} + +// NewBillingServiceClient constructs a client for the billing.v1.BillingService service. By +// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, +// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the +// connect.WithGRPC() or connect.WithGRPCWeb() options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewBillingServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) BillingServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + return &billingServiceClient{ + sendMetricsBatch: connect.NewClient[v1.SendMetricsBatchRequest, v1.SendMetricsBatchResponse]( + httpClient, + baseURL+BillingServiceSendMetricsBatchProcedure, + connect.WithSchema(billingServiceSendMetricsBatchMethodDescriptor), + connect.WithClientOptions(opts...), + ), + sendHeartbeat: connect.NewClient[v1.SendHeartbeatRequest, v1.SendHeartbeatResponse]( + httpClient, + baseURL+BillingServiceSendHeartbeatProcedure, + connect.WithSchema(billingServiceSendHeartbeatMethodDescriptor), + connect.WithClientOptions(opts...), + ), + notifyVmStarted: connect.NewClient[v1.NotifyVmStartedRequest, v1.NotifyVmStartedResponse]( + httpClient, + baseURL+BillingServiceNotifyVmStartedProcedure, + connect.WithSchema(billingServiceNotifyVmStartedMethodDescriptor), + connect.WithClientOptions(opts...), + ), + notifyVmStopped: connect.NewClient[v1.NotifyVmStoppedRequest, v1.NotifyVmStoppedResponse]( + httpClient, + baseURL+BillingServiceNotifyVmStoppedProcedure, + connect.WithSchema(billingServiceNotifyVmStoppedMethodDescriptor), + connect.WithClientOptions(opts...), + ), + notifyPossibleGap: connect.NewClient[v1.NotifyPossibleGapRequest, v1.NotifyPossibleGapResponse]( + httpClient, + baseURL+BillingServiceNotifyPossibleGapProcedure, + connect.WithSchema(billingServiceNotifyPossibleGapMethodDescriptor), + connect.WithClientOptions(opts...), + ), + } +} + +// billingServiceClient implements BillingServiceClient. +type billingServiceClient struct { + sendMetricsBatch *connect.Client[v1.SendMetricsBatchRequest, v1.SendMetricsBatchResponse] + sendHeartbeat *connect.Client[v1.SendHeartbeatRequest, v1.SendHeartbeatResponse] + notifyVmStarted *connect.Client[v1.NotifyVmStartedRequest, v1.NotifyVmStartedResponse] + notifyVmStopped *connect.Client[v1.NotifyVmStoppedRequest, v1.NotifyVmStoppedResponse] + notifyPossibleGap *connect.Client[v1.NotifyPossibleGapRequest, v1.NotifyPossibleGapResponse] +} + +// SendMetricsBatch calls billing.v1.BillingService.SendMetricsBatch. +func (c *billingServiceClient) SendMetricsBatch(ctx context.Context, req *connect.Request[v1.SendMetricsBatchRequest]) (*connect.Response[v1.SendMetricsBatchResponse], error) { + return c.sendMetricsBatch.CallUnary(ctx, req) +} + +// SendHeartbeat calls billing.v1.BillingService.SendHeartbeat. +func (c *billingServiceClient) SendHeartbeat(ctx context.Context, req *connect.Request[v1.SendHeartbeatRequest]) (*connect.Response[v1.SendHeartbeatResponse], error) { + return c.sendHeartbeat.CallUnary(ctx, req) +} + +// NotifyVmStarted calls billing.v1.BillingService.NotifyVmStarted. +func (c *billingServiceClient) NotifyVmStarted(ctx context.Context, req *connect.Request[v1.NotifyVmStartedRequest]) (*connect.Response[v1.NotifyVmStartedResponse], error) { + return c.notifyVmStarted.CallUnary(ctx, req) +} + +// NotifyVmStopped calls billing.v1.BillingService.NotifyVmStopped. +func (c *billingServiceClient) NotifyVmStopped(ctx context.Context, req *connect.Request[v1.NotifyVmStoppedRequest]) (*connect.Response[v1.NotifyVmStoppedResponse], error) { + return c.notifyVmStopped.CallUnary(ctx, req) +} + +// NotifyPossibleGap calls billing.v1.BillingService.NotifyPossibleGap. +func (c *billingServiceClient) NotifyPossibleGap(ctx context.Context, req *connect.Request[v1.NotifyPossibleGapRequest]) (*connect.Response[v1.NotifyPossibleGapResponse], error) { + return c.notifyPossibleGap.CallUnary(ctx, req) +} + +// BillingServiceHandler is an implementation of the billing.v1.BillingService service. +type BillingServiceHandler interface { + SendMetricsBatch(context.Context, *connect.Request[v1.SendMetricsBatchRequest]) (*connect.Response[v1.SendMetricsBatchResponse], error) + SendHeartbeat(context.Context, *connect.Request[v1.SendHeartbeatRequest]) (*connect.Response[v1.SendHeartbeatResponse], error) + NotifyVmStarted(context.Context, *connect.Request[v1.NotifyVmStartedRequest]) (*connect.Response[v1.NotifyVmStartedResponse], error) + NotifyVmStopped(context.Context, *connect.Request[v1.NotifyVmStoppedRequest]) (*connect.Response[v1.NotifyVmStoppedResponse], error) + NotifyPossibleGap(context.Context, *connect.Request[v1.NotifyPossibleGapRequest]) (*connect.Response[v1.NotifyPossibleGapResponse], error) +} + +// NewBillingServiceHandler builds an HTTP handler from the service implementation. It returns the +// path on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewBillingServiceHandler(svc BillingServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + billingServiceSendMetricsBatchHandler := connect.NewUnaryHandler( + BillingServiceSendMetricsBatchProcedure, + svc.SendMetricsBatch, + connect.WithSchema(billingServiceSendMetricsBatchMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + billingServiceSendHeartbeatHandler := connect.NewUnaryHandler( + BillingServiceSendHeartbeatProcedure, + svc.SendHeartbeat, + connect.WithSchema(billingServiceSendHeartbeatMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + billingServiceNotifyVmStartedHandler := connect.NewUnaryHandler( + BillingServiceNotifyVmStartedProcedure, + svc.NotifyVmStarted, + connect.WithSchema(billingServiceNotifyVmStartedMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + billingServiceNotifyVmStoppedHandler := connect.NewUnaryHandler( + BillingServiceNotifyVmStoppedProcedure, + svc.NotifyVmStopped, + connect.WithSchema(billingServiceNotifyVmStoppedMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + billingServiceNotifyPossibleGapHandler := connect.NewUnaryHandler( + BillingServiceNotifyPossibleGapProcedure, + svc.NotifyPossibleGap, + connect.WithSchema(billingServiceNotifyPossibleGapMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + return "/billing.v1.BillingService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case BillingServiceSendMetricsBatchProcedure: + billingServiceSendMetricsBatchHandler.ServeHTTP(w, r) + case BillingServiceSendHeartbeatProcedure: + billingServiceSendHeartbeatHandler.ServeHTTP(w, r) + case BillingServiceNotifyVmStartedProcedure: + billingServiceNotifyVmStartedHandler.ServeHTTP(w, r) + case BillingServiceNotifyVmStoppedProcedure: + billingServiceNotifyVmStoppedHandler.ServeHTTP(w, r) + case BillingServiceNotifyPossibleGapProcedure: + billingServiceNotifyPossibleGapHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedBillingServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedBillingServiceHandler struct{} + +func (UnimplementedBillingServiceHandler) SendMetricsBatch(context.Context, *connect.Request[v1.SendMetricsBatchRequest]) (*connect.Response[v1.SendMetricsBatchResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("billing.v1.BillingService.SendMetricsBatch is not implemented")) +} + +func (UnimplementedBillingServiceHandler) SendHeartbeat(context.Context, *connect.Request[v1.SendHeartbeatRequest]) (*connect.Response[v1.SendHeartbeatResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("billing.v1.BillingService.SendHeartbeat is not implemented")) +} + +func (UnimplementedBillingServiceHandler) NotifyVmStarted(context.Context, *connect.Request[v1.NotifyVmStartedRequest]) (*connect.Response[v1.NotifyVmStartedResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("billing.v1.BillingService.NotifyVmStarted is not implemented")) +} + +func (UnimplementedBillingServiceHandler) NotifyVmStopped(context.Context, *connect.Request[v1.NotifyVmStoppedRequest]) (*connect.Response[v1.NotifyVmStoppedResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("billing.v1.BillingService.NotifyVmStopped is not implemented")) +} + +func (UnimplementedBillingServiceHandler) NotifyPossibleGap(context.Context, *connect.Request[v1.NotifyPossibleGapRequest]) (*connect.Response[v1.NotifyPossibleGapResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("billing.v1.BillingService.NotifyPossibleGap is not implemented")) +} diff --git a/go/gen/deploy/builderd/proto/builder/v1/builder.pb.go b/go/gen/deploy/builderd/proto/builder/v1/builder.pb.go new file mode 100644 index 0000000000..5ae066dedc --- /dev/null +++ b/go/gen/deploy/builderd/proto/builder/v1/builder.pb.go @@ -0,0 +1,3829 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc (unknown) +// source: deploy/builderd/proto/builder/v1/builder.proto + +package builderv1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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) +) + +// Build job lifecycle states +type BuildState int32 + +const ( + BuildState_BUILD_STATE_UNSPECIFIED BuildState = 0 + BuildState_BUILD_STATE_PENDING BuildState = 1 // Job queued + BuildState_BUILD_STATE_PULLING BuildState = 2 // Pulling Docker image or source + BuildState_BUILD_STATE_EXTRACTING BuildState = 3 // Extracting/preparing source + BuildState_BUILD_STATE_BUILDING BuildState = 4 // Building rootfs + BuildState_BUILD_STATE_OPTIMIZING BuildState = 5 // Applying optimizations + BuildState_BUILD_STATE_COMPLETED BuildState = 6 // Build successful + BuildState_BUILD_STATE_FAILED BuildState = 7 // Build failed + BuildState_BUILD_STATE_CANCELLED BuildState = 8 // Build cancelled + BuildState_BUILD_STATE_CLEANING BuildState = 9 // Cleaning up resources +) + +// Enum value maps for BuildState. +var ( + BuildState_name = map[int32]string{ + 0: "BUILD_STATE_UNSPECIFIED", + 1: "BUILD_STATE_PENDING", + 2: "BUILD_STATE_PULLING", + 3: "BUILD_STATE_EXTRACTING", + 4: "BUILD_STATE_BUILDING", + 5: "BUILD_STATE_OPTIMIZING", + 6: "BUILD_STATE_COMPLETED", + 7: "BUILD_STATE_FAILED", + 8: "BUILD_STATE_CANCELLED", + 9: "BUILD_STATE_CLEANING", + } + BuildState_value = map[string]int32{ + "BUILD_STATE_UNSPECIFIED": 0, + "BUILD_STATE_PENDING": 1, + "BUILD_STATE_PULLING": 2, + "BUILD_STATE_EXTRACTING": 3, + "BUILD_STATE_BUILDING": 4, + "BUILD_STATE_OPTIMIZING": 5, + "BUILD_STATE_COMPLETED": 6, + "BUILD_STATE_FAILED": 7, + "BUILD_STATE_CANCELLED": 8, + "BUILD_STATE_CLEANING": 9, + } +) + +func (x BuildState) Enum() *BuildState { + p := new(BuildState) + *p = x + return p +} + +func (x BuildState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BuildState) Descriptor() protoreflect.EnumDescriptor { + return file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes[0].Descriptor() +} + +func (BuildState) Type() protoreflect.EnumType { + return &file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes[0] +} + +func (x BuildState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BuildState.Descriptor instead. +func (BuildState) EnumDescriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{0} +} + +// Tenant service tiers +type TenantTier int32 + +const ( + TenantTier_TENANT_TIER_UNSPECIFIED TenantTier = 0 + TenantTier_TENANT_TIER_FREE TenantTier = 1 // Limited resources + TenantTier_TENANT_TIER_PRO TenantTier = 2 // Standard resources + TenantTier_TENANT_TIER_ENTERPRISE TenantTier = 3 // Higher limits + isolation + TenantTier_TENANT_TIER_DEDICATED TenantTier = 4 // Dedicated infrastructure +) + +// Enum value maps for TenantTier. +var ( + TenantTier_name = map[int32]string{ + 0: "TENANT_TIER_UNSPECIFIED", + 1: "TENANT_TIER_FREE", + 2: "TENANT_TIER_PRO", + 3: "TENANT_TIER_ENTERPRISE", + 4: "TENANT_TIER_DEDICATED", + } + TenantTier_value = map[string]int32{ + "TENANT_TIER_UNSPECIFIED": 0, + "TENANT_TIER_FREE": 1, + "TENANT_TIER_PRO": 2, + "TENANT_TIER_ENTERPRISE": 3, + "TENANT_TIER_DEDICATED": 4, + } +) + +func (x TenantTier) Enum() *TenantTier { + p := new(TenantTier) + *p = x + return p +} + +func (x TenantTier) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TenantTier) Descriptor() protoreflect.EnumDescriptor { + return file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes[1].Descriptor() +} + +func (TenantTier) Type() protoreflect.EnumType { + return &file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes[1] +} + +func (x TenantTier) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TenantTier.Descriptor instead. +func (TenantTier) EnumDescriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{1} +} + +// Init process strategies for microVMs +type InitStrategy int32 + +const ( + InitStrategy_INIT_STRATEGY_UNSPECIFIED InitStrategy = 0 + InitStrategy_INIT_STRATEGY_TINI InitStrategy = 1 // Use tini as init (recommended) + InitStrategy_INIT_STRATEGY_DIRECT InitStrategy = 2 // Direct exec (risky) + InitStrategy_INIT_STRATEGY_CUSTOM InitStrategy = 3 // Custom init script +) + +// Enum value maps for InitStrategy. +var ( + InitStrategy_name = map[int32]string{ + 0: "INIT_STRATEGY_UNSPECIFIED", + 1: "INIT_STRATEGY_TINI", + 2: "INIT_STRATEGY_DIRECT", + 3: "INIT_STRATEGY_CUSTOM", + } + InitStrategy_value = map[string]int32{ + "INIT_STRATEGY_UNSPECIFIED": 0, + "INIT_STRATEGY_TINI": 1, + "INIT_STRATEGY_DIRECT": 2, + "INIT_STRATEGY_CUSTOM": 3, + } +) + +func (x InitStrategy) Enum() *InitStrategy { + p := new(InitStrategy) + *p = x + return p +} + +func (x InitStrategy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (InitStrategy) Descriptor() protoreflect.EnumDescriptor { + return file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes[2].Descriptor() +} + +func (InitStrategy) Type() protoreflect.EnumType { + return &file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes[2] +} + +func (x InitStrategy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use InitStrategy.Descriptor instead. +func (InitStrategy) EnumDescriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{2} +} + +// Multi-tenant context +type TenantContext struct { + state protoimpl.MessageState `protogen:"open.v1"` + TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // Primary tenant identifier + CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` // Customer within tenant (for billing) + OrganizationId string `protobuf:"bytes,3,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` // Organization (for enterprise) + Tier TenantTier `protobuf:"varint,4,opt,name=tier,proto3,enum=builder.v1.TenantTier" json:"tier,omitempty"` // Service tier + Permissions []string `protobuf:"bytes,5,rep,name=permissions,proto3" json:"permissions,omitempty"` // Build permissions + Metadata map[string]string `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Tenant metadata + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TenantContext) Reset() { + *x = TenantContext{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TenantContext) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TenantContext) ProtoMessage() {} + +func (x *TenantContext) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TenantContext.ProtoReflect.Descriptor instead. +func (*TenantContext) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{0} +} + +func (x *TenantContext) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +func (x *TenantContext) GetCustomerId() string { + if x != nil { + return x.CustomerId + } + return "" +} + +func (x *TenantContext) GetOrganizationId() string { + if x != nil { + return x.OrganizationId + } + return "" +} + +func (x *TenantContext) GetTier() TenantTier { + if x != nil { + return x.Tier + } + return TenantTier_TENANT_TIER_UNSPECIFIED +} + +func (x *TenantContext) GetPermissions() []string { + if x != nil { + return x.Permissions + } + return nil +} + +func (x *TenantContext) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +// Build source types - extensible for future build types +type BuildSource struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to SourceType: + // + // *BuildSource_DockerImage + // *BuildSource_GitRepository + // *BuildSource_Archive + SourceType isBuildSource_SourceType `protobuf_oneof:"source_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BuildSource) Reset() { + *x = BuildSource{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BuildSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildSource) ProtoMessage() {} + +func (x *BuildSource) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BuildSource.ProtoReflect.Descriptor instead. +func (*BuildSource) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{1} +} + +func (x *BuildSource) GetSourceType() isBuildSource_SourceType { + if x != nil { + return x.SourceType + } + return nil +} + +func (x *BuildSource) GetDockerImage() *DockerImageSource { + if x != nil { + if x, ok := x.SourceType.(*BuildSource_DockerImage); ok { + return x.DockerImage + } + } + return nil +} + +func (x *BuildSource) GetGitRepository() *GitRepositorySource { + if x != nil { + if x, ok := x.SourceType.(*BuildSource_GitRepository); ok { + return x.GitRepository + } + } + return nil +} + +func (x *BuildSource) GetArchive() *ArchiveSource { + if x != nil { + if x, ok := x.SourceType.(*BuildSource_Archive); ok { + return x.Archive + } + } + return nil +} + +type isBuildSource_SourceType interface { + isBuildSource_SourceType() +} + +type BuildSource_DockerImage struct { + DockerImage *DockerImageSource `protobuf:"bytes,1,opt,name=docker_image,json=dockerImage,proto3,oneof"` +} + +type BuildSource_GitRepository struct { + GitRepository *GitRepositorySource `protobuf:"bytes,2,opt,name=git_repository,json=gitRepository,proto3,oneof"` +} + +type BuildSource_Archive struct { + Archive *ArchiveSource `protobuf:"bytes,3,opt,name=archive,proto3,oneof"` // Future: nix_flake = 4, buildpack = 5, etc. +} + +func (*BuildSource_DockerImage) isBuildSource_SourceType() {} + +func (*BuildSource_GitRepository) isBuildSource_SourceType() {} + +func (*BuildSource_Archive) isBuildSource_SourceType() {} + +// Docker image extraction (first implementation) +type DockerImageSource struct { + state protoimpl.MessageState `protogen:"open.v1"` + ImageUri string `protobuf:"bytes,1,opt,name=image_uri,json=imageUri,proto3" json:"image_uri,omitempty"` // "ghcr.io/unkeyed/unkey:f4cfee5" + Auth *DockerAuth `protobuf:"bytes,2,opt,name=auth,proto3" json:"auth,omitempty"` // Registry authentication + PullTags []string `protobuf:"bytes,3,rep,name=pull_tags,json=pullTags,proto3" json:"pull_tags,omitempty"` // Additional tags to consider + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DockerImageSource) Reset() { + *x = DockerImageSource{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DockerImageSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DockerImageSource) ProtoMessage() {} + +func (x *DockerImageSource) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DockerImageSource.ProtoReflect.Descriptor instead. +func (*DockerImageSource) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{2} +} + +func (x *DockerImageSource) GetImageUri() string { + if x != nil { + return x.ImageUri + } + return "" +} + +func (x *DockerImageSource) GetAuth() *DockerAuth { + if x != nil { + return x.Auth + } + return nil +} + +func (x *DockerImageSource) GetPullTags() []string { + if x != nil { + return x.PullTags + } + return nil +} + +type DockerAuth struct { + state protoimpl.MessageState `protogen:"open.v1"` + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` + Registry string `protobuf:"bytes,4,opt,name=registry,proto3" json:"registry,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DockerAuth) Reset() { + *x = DockerAuth{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DockerAuth) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DockerAuth) ProtoMessage() {} + +func (x *DockerAuth) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DockerAuth.ProtoReflect.Descriptor instead. +func (*DockerAuth) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{3} +} + +func (x *DockerAuth) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *DockerAuth) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +func (x *DockerAuth) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +func (x *DockerAuth) GetRegistry() string { + if x != nil { + return x.Registry + } + return "" +} + +// Git repository builds (future) +type GitRepositorySource struct { + state protoimpl.MessageState `protogen:"open.v1"` + RepositoryUrl string `protobuf:"bytes,1,opt,name=repository_url,json=repositoryUrl,proto3" json:"repository_url,omitempty"` // "https://github.com/unkeyed/unkey" + Ref string `protobuf:"bytes,2,opt,name=ref,proto3" json:"ref,omitempty"` // branch/tag/commit + BuildContext string `protobuf:"bytes,3,opt,name=build_context,json=buildContext,proto3" json:"build_context,omitempty"` // subdirectory if needed + Auth *GitAuth `protobuf:"bytes,4,opt,name=auth,proto3" json:"auth,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GitRepositorySource) Reset() { + *x = GitRepositorySource{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GitRepositorySource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GitRepositorySource) ProtoMessage() {} + +func (x *GitRepositorySource) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GitRepositorySource.ProtoReflect.Descriptor instead. +func (*GitRepositorySource) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{4} +} + +func (x *GitRepositorySource) GetRepositoryUrl() string { + if x != nil { + return x.RepositoryUrl + } + return "" +} + +func (x *GitRepositorySource) GetRef() string { + if x != nil { + return x.Ref + } + return "" +} + +func (x *GitRepositorySource) GetBuildContext() string { + if x != nil { + return x.BuildContext + } + return "" +} + +func (x *GitRepositorySource) GetAuth() *GitAuth { + if x != nil { + return x.Auth + } + return nil +} + +type GitAuth struct { + state protoimpl.MessageState `protogen:"open.v1"` + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + SshKey string `protobuf:"bytes,3,opt,name=ssh_key,json=sshKey,proto3" json:"ssh_key,omitempty"` + Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GitAuth) Reset() { + *x = GitAuth{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GitAuth) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GitAuth) ProtoMessage() {} + +func (x *GitAuth) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GitAuth.ProtoReflect.Descriptor instead. +func (*GitAuth) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{5} +} + +func (x *GitAuth) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *GitAuth) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +func (x *GitAuth) GetSshKey() string { + if x != nil { + return x.SshKey + } + return "" +} + +func (x *GitAuth) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +// Archive builds (future) +type ArchiveSource struct { + state protoimpl.MessageState `protogen:"open.v1"` + ArchiveUrl string `protobuf:"bytes,1,opt,name=archive_url,json=archiveUrl,proto3" json:"archive_url,omitempty"` // URL to tar.gz, zip, etc. + ArchiveType string `protobuf:"bytes,2,opt,name=archive_type,json=archiveType,proto3" json:"archive_type,omitempty"` // "tar.gz", "zip" + BuildContext string `protobuf:"bytes,3,opt,name=build_context,json=buildContext,proto3" json:"build_context,omitempty"` // subdirectory in archive + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ArchiveSource) Reset() { + *x = ArchiveSource{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ArchiveSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArchiveSource) ProtoMessage() {} + +func (x *ArchiveSource) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArchiveSource.ProtoReflect.Descriptor instead. +func (*ArchiveSource) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{6} +} + +func (x *ArchiveSource) GetArchiveUrl() string { + if x != nil { + return x.ArchiveUrl + } + return "" +} + +func (x *ArchiveSource) GetArchiveType() string { + if x != nil { + return x.ArchiveType + } + return "" +} + +func (x *ArchiveSource) GetBuildContext() string { + if x != nil { + return x.BuildContext + } + return "" +} + +// Build target types - extensible +type BuildTarget struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to TargetType: + // + // *BuildTarget_MicrovmRootfs + // *BuildTarget_ContainerImage + TargetType isBuildTarget_TargetType `protobuf_oneof:"target_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BuildTarget) Reset() { + *x = BuildTarget{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BuildTarget) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildTarget) ProtoMessage() {} + +func (x *BuildTarget) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BuildTarget.ProtoReflect.Descriptor instead. +func (*BuildTarget) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{7} +} + +func (x *BuildTarget) GetTargetType() isBuildTarget_TargetType { + if x != nil { + return x.TargetType + } + return nil +} + +func (x *BuildTarget) GetMicrovmRootfs() *MicroVMRootfs { + if x != nil { + if x, ok := x.TargetType.(*BuildTarget_MicrovmRootfs); ok { + return x.MicrovmRootfs + } + } + return nil +} + +func (x *BuildTarget) GetContainerImage() *ContainerImage { + if x != nil { + if x, ok := x.TargetType.(*BuildTarget_ContainerImage); ok { + return x.ContainerImage + } + } + return nil +} + +type isBuildTarget_TargetType interface { + isBuildTarget_TargetType() +} + +type BuildTarget_MicrovmRootfs struct { + MicrovmRootfs *MicroVMRootfs `protobuf:"bytes,1,opt,name=microvm_rootfs,json=microvmRootfs,proto3,oneof"` +} + +type BuildTarget_ContainerImage struct { + ContainerImage *ContainerImage `protobuf:"bytes,2,opt,name=container_image,json=containerImage,proto3,oneof"` // Future: wasm_module = 3, lambda_layer = 4, etc. +} + +func (*BuildTarget_MicrovmRootfs) isBuildTarget_TargetType() {} + +func (*BuildTarget_ContainerImage) isBuildTarget_TargetType() {} + +// MicroVM rootfs (our focus) +type MicroVMRootfs struct { + state protoimpl.MessageState `protogen:"open.v1"` + InitStrategy InitStrategy `protobuf:"varint,1,opt,name=init_strategy,json=initStrategy,proto3,enum=builder.v1.InitStrategy" json:"init_strategy,omitempty"` + RuntimeConfig *RuntimeConfig `protobuf:"bytes,2,opt,name=runtime_config,json=runtimeConfig,proto3" json:"runtime_config,omitempty"` + Optimization *OptimizationSettings `protobuf:"bytes,3,opt,name=optimization,proto3" json:"optimization,omitempty"` + PreservePaths []string `protobuf:"bytes,4,rep,name=preserve_paths,json=preservePaths,proto3" json:"preserve_paths,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MicroVMRootfs) Reset() { + *x = MicroVMRootfs{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MicroVMRootfs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MicroVMRootfs) ProtoMessage() {} + +func (x *MicroVMRootfs) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MicroVMRootfs.ProtoReflect.Descriptor instead. +func (*MicroVMRootfs) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{8} +} + +func (x *MicroVMRootfs) GetInitStrategy() InitStrategy { + if x != nil { + return x.InitStrategy + } + return InitStrategy_INIT_STRATEGY_UNSPECIFIED +} + +func (x *MicroVMRootfs) GetRuntimeConfig() *RuntimeConfig { + if x != nil { + return x.RuntimeConfig + } + return nil +} + +func (x *MicroVMRootfs) GetOptimization() *OptimizationSettings { + if x != nil { + return x.Optimization + } + return nil +} + +func (x *MicroVMRootfs) GetPreservePaths() []string { + if x != nil { + return x.PreservePaths + } + return nil +} + +// Container image (future) +type ContainerImage struct { + state protoimpl.MessageState `protogen:"open.v1"` + BaseImage string `protobuf:"bytes,1,opt,name=base_image,json=baseImage,proto3" json:"base_image,omitempty"` + Layers []string `protobuf:"bytes,2,rep,name=layers,proto3" json:"layers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ContainerImage) Reset() { + *x = ContainerImage{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ContainerImage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContainerImage) ProtoMessage() {} + +func (x *ContainerImage) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ContainerImage.ProtoReflect.Descriptor instead. +func (*ContainerImage) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{9} +} + +func (x *ContainerImage) GetBaseImage() string { + if x != nil { + return x.BaseImage + } + return "" +} + +func (x *ContainerImage) GetLayers() []string { + if x != nil { + return x.Layers + } + return nil +} + +type RuntimeConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + Command []string `protobuf:"bytes,1,rep,name=command,proto3" json:"command,omitempty"` // Override CMD + Entrypoint []string `protobuf:"bytes,2,rep,name=entrypoint,proto3" json:"entrypoint,omitempty"` // Override ENTRYPOINT + WorkingDir string `protobuf:"bytes,3,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` // Override WORKDIR + Environment map[string]string `protobuf:"bytes,4,rep,name=environment,proto3" json:"environment,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Environment variables + ExposedPorts []string `protobuf:"bytes,5,rep,name=exposed_ports,json=exposedPorts,proto3" json:"exposed_ports,omitempty"` // Ports to expose + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RuntimeConfig) Reset() { + *x = RuntimeConfig{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RuntimeConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RuntimeConfig) ProtoMessage() {} + +func (x *RuntimeConfig) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RuntimeConfig.ProtoReflect.Descriptor instead. +func (*RuntimeConfig) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{10} +} + +func (x *RuntimeConfig) GetCommand() []string { + if x != nil { + return x.Command + } + return nil +} + +func (x *RuntimeConfig) GetEntrypoint() []string { + if x != nil { + return x.Entrypoint + } + return nil +} + +func (x *RuntimeConfig) GetWorkingDir() string { + if x != nil { + return x.WorkingDir + } + return "" +} + +func (x *RuntimeConfig) GetEnvironment() map[string]string { + if x != nil { + return x.Environment + } + return nil +} + +func (x *RuntimeConfig) GetExposedPorts() []string { + if x != nil { + return x.ExposedPorts + } + return nil +} + +type OptimizationSettings struct { + state protoimpl.MessageState `protogen:"open.v1"` + StripDebugSymbols bool `protobuf:"varint,1,opt,name=strip_debug_symbols,json=stripDebugSymbols,proto3" json:"strip_debug_symbols,omitempty"` // Strip debug info + CompressBinaries bool `protobuf:"varint,2,opt,name=compress_binaries,json=compressBinaries,proto3" json:"compress_binaries,omitempty"` // Compress with UPX + RemoveDocs bool `protobuf:"varint,3,opt,name=remove_docs,json=removeDocs,proto3" json:"remove_docs,omitempty"` // Remove documentation + RemoveCache bool `protobuf:"varint,4,opt,name=remove_cache,json=removeCache,proto3" json:"remove_cache,omitempty"` // Remove package caches + PreservePaths []string `protobuf:"bytes,5,rep,name=preserve_paths,json=preservePaths,proto3" json:"preserve_paths,omitempty"` // Paths to always keep + ExcludePatterns []string `protobuf:"bytes,6,rep,name=exclude_patterns,json=excludePatterns,proto3" json:"exclude_patterns,omitempty"` // Files to exclude + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OptimizationSettings) Reset() { + *x = OptimizationSettings{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OptimizationSettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OptimizationSettings) ProtoMessage() {} + +func (x *OptimizationSettings) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OptimizationSettings.ProtoReflect.Descriptor instead. +func (*OptimizationSettings) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{11} +} + +func (x *OptimizationSettings) GetStripDebugSymbols() bool { + if x != nil { + return x.StripDebugSymbols + } + return false +} + +func (x *OptimizationSettings) GetCompressBinaries() bool { + if x != nil { + return x.CompressBinaries + } + return false +} + +func (x *OptimizationSettings) GetRemoveDocs() bool { + if x != nil { + return x.RemoveDocs + } + return false +} + +func (x *OptimizationSettings) GetRemoveCache() bool { + if x != nil { + return x.RemoveCache + } + return false +} + +func (x *OptimizationSettings) GetPreservePaths() []string { + if x != nil { + return x.PreservePaths + } + return nil +} + +func (x *OptimizationSettings) GetExcludePatterns() []string { + if x != nil { + return x.ExcludePatterns + } + return nil +} + +// Build strategies - how to build from source to target +type BuildStrategy struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to StrategyType: + // + // *BuildStrategy_DockerExtract + // *BuildStrategy_GoApi + // *BuildStrategy_Sinatra + // *BuildStrategy_Nodejs + StrategyType isBuildStrategy_StrategyType `protobuf_oneof:"strategy_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BuildStrategy) Reset() { + *x = BuildStrategy{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BuildStrategy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildStrategy) ProtoMessage() {} + +func (x *BuildStrategy) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BuildStrategy.ProtoReflect.Descriptor instead. +func (*BuildStrategy) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{12} +} + +func (x *BuildStrategy) GetStrategyType() isBuildStrategy_StrategyType { + if x != nil { + return x.StrategyType + } + return nil +} + +func (x *BuildStrategy) GetDockerExtract() *DockerExtractStrategy { + if x != nil { + if x, ok := x.StrategyType.(*BuildStrategy_DockerExtract); ok { + return x.DockerExtract + } + } + return nil +} + +func (x *BuildStrategy) GetGoApi() *GoApiStrategy { + if x != nil { + if x, ok := x.StrategyType.(*BuildStrategy_GoApi); ok { + return x.GoApi + } + } + return nil +} + +func (x *BuildStrategy) GetSinatra() *SinatraStrategy { + if x != nil { + if x, ok := x.StrategyType.(*BuildStrategy_Sinatra); ok { + return x.Sinatra + } + } + return nil +} + +func (x *BuildStrategy) GetNodejs() *NodejsStrategy { + if x != nil { + if x, ok := x.StrategyType.(*BuildStrategy_Nodejs); ok { + return x.Nodejs + } + } + return nil +} + +type isBuildStrategy_StrategyType interface { + isBuildStrategy_StrategyType() +} + +type BuildStrategy_DockerExtract struct { + DockerExtract *DockerExtractStrategy `protobuf:"bytes,1,opt,name=docker_extract,json=dockerExtract,proto3,oneof"` +} + +type BuildStrategy_GoApi struct { + GoApi *GoApiStrategy `protobuf:"bytes,2,opt,name=go_api,json=goApi,proto3,oneof"` +} + +type BuildStrategy_Sinatra struct { + Sinatra *SinatraStrategy `protobuf:"bytes,3,opt,name=sinatra,proto3,oneof"` +} + +type BuildStrategy_Nodejs struct { + Nodejs *NodejsStrategy `protobuf:"bytes,4,opt,name=nodejs,proto3,oneof"` // Future: python_wsgi = 5, rust_binary = 6, etc. +} + +func (*BuildStrategy_DockerExtract) isBuildStrategy_StrategyType() {} + +func (*BuildStrategy_GoApi) isBuildStrategy_StrategyType() {} + +func (*BuildStrategy_Sinatra) isBuildStrategy_StrategyType() {} + +func (*BuildStrategy_Nodejs) isBuildStrategy_StrategyType() {} + +// Docker extraction strategy (first implementation) +type DockerExtractStrategy struct { + state protoimpl.MessageState `protogen:"open.v1"` + PreserveLayers bool `protobuf:"varint,1,opt,name=preserve_layers,json=preserveLayers,proto3" json:"preserve_layers,omitempty"` // Keep layer structure + FlattenFilesystem bool `protobuf:"varint,2,opt,name=flatten_filesystem,json=flattenFilesystem,proto3" json:"flatten_filesystem,omitempty"` // Merge all layers + ExcludePatterns []string `protobuf:"bytes,3,rep,name=exclude_patterns,json=excludePatterns,proto3" json:"exclude_patterns,omitempty"` // Files to exclude + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DockerExtractStrategy) Reset() { + *x = DockerExtractStrategy{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DockerExtractStrategy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DockerExtractStrategy) ProtoMessage() {} + +func (x *DockerExtractStrategy) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DockerExtractStrategy.ProtoReflect.Descriptor instead. +func (*DockerExtractStrategy) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{13} +} + +func (x *DockerExtractStrategy) GetPreserveLayers() bool { + if x != nil { + return x.PreserveLayers + } + return false +} + +func (x *DockerExtractStrategy) GetFlattenFilesystem() bool { + if x != nil { + return x.FlattenFilesystem + } + return false +} + +func (x *DockerExtractStrategy) GetExcludePatterns() []string { + if x != nil { + return x.ExcludePatterns + } + return nil +} + +// Go API strategy (future) +type GoApiStrategy struct { + state protoimpl.MessageState `protogen:"open.v1"` + GoVersion string `protobuf:"bytes,1,opt,name=go_version,json=goVersion,proto3" json:"go_version,omitempty"` // "1.21", "latest" + BuildFlags []string `protobuf:"bytes,2,rep,name=build_flags,json=buildFlags,proto3" json:"build_flags,omitempty"` // "-ldflags", "-tags" + MainPackage string `protobuf:"bytes,3,opt,name=main_package,json=mainPackage,proto3" json:"main_package,omitempty"` // "./cmd/api" + EnableCgo bool `protobuf:"varint,4,opt,name=enable_cgo,json=enableCgo,proto3" json:"enable_cgo,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GoApiStrategy) Reset() { + *x = GoApiStrategy{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GoApiStrategy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GoApiStrategy) ProtoMessage() {} + +func (x *GoApiStrategy) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GoApiStrategy.ProtoReflect.Descriptor instead. +func (*GoApiStrategy) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{14} +} + +func (x *GoApiStrategy) GetGoVersion() string { + if x != nil { + return x.GoVersion + } + return "" +} + +func (x *GoApiStrategy) GetBuildFlags() []string { + if x != nil { + return x.BuildFlags + } + return nil +} + +func (x *GoApiStrategy) GetMainPackage() string { + if x != nil { + return x.MainPackage + } + return "" +} + +func (x *GoApiStrategy) GetEnableCgo() bool { + if x != nil { + return x.EnableCgo + } + return false +} + +// Sinatra strategy (future) +type SinatraStrategy struct { + state protoimpl.MessageState `protogen:"open.v1"` + RubyVersion string `protobuf:"bytes,1,opt,name=ruby_version,json=rubyVersion,proto3" json:"ruby_version,omitempty"` // "3.2", "latest" + GemfilePath string `protobuf:"bytes,2,opt,name=gemfile_path,json=gemfilePath,proto3" json:"gemfile_path,omitempty"` // "Gemfile" + RackServer string `protobuf:"bytes,3,opt,name=rack_server,json=rackServer,proto3" json:"rack_server,omitempty"` // "puma", "unicorn" + RackConfig map[string]string `protobuf:"bytes,4,rep,name=rack_config,json=rackConfig,proto3" json:"rack_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Server-specific config + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SinatraStrategy) Reset() { + *x = SinatraStrategy{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SinatraStrategy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SinatraStrategy) ProtoMessage() {} + +func (x *SinatraStrategy) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SinatraStrategy.ProtoReflect.Descriptor instead. +func (*SinatraStrategy) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{15} +} + +func (x *SinatraStrategy) GetRubyVersion() string { + if x != nil { + return x.RubyVersion + } + return "" +} + +func (x *SinatraStrategy) GetGemfilePath() string { + if x != nil { + return x.GemfilePath + } + return "" +} + +func (x *SinatraStrategy) GetRackServer() string { + if x != nil { + return x.RackServer + } + return "" +} + +func (x *SinatraStrategy) GetRackConfig() map[string]string { + if x != nil { + return x.RackConfig + } + return nil +} + +// Node.js strategy (future) +type NodejsStrategy struct { + state protoimpl.MessageState `protogen:"open.v1"` + NodeVersion string `protobuf:"bytes,1,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` // "18", "20", "latest" + PackageManager string `protobuf:"bytes,2,opt,name=package_manager,json=packageManager,proto3" json:"package_manager,omitempty"` // "npm", "yarn", "pnpm" + StartScript string `protobuf:"bytes,3,opt,name=start_script,json=startScript,proto3" json:"start_script,omitempty"` // "start", "server" + EnableProduction bool `protobuf:"varint,4,opt,name=enable_production,json=enableProduction,proto3" json:"enable_production,omitempty"` // NODE_ENV=production + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodejsStrategy) Reset() { + *x = NodejsStrategy{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodejsStrategy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodejsStrategy) ProtoMessage() {} + +func (x *NodejsStrategy) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NodejsStrategy.ProtoReflect.Descriptor instead. +func (*NodejsStrategy) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{16} +} + +func (x *NodejsStrategy) GetNodeVersion() string { + if x != nil { + return x.NodeVersion + } + return "" +} + +func (x *NodejsStrategy) GetPackageManager() string { + if x != nil { + return x.PackageManager + } + return "" +} + +func (x *NodejsStrategy) GetStartScript() string { + if x != nil { + return x.StartScript + } + return "" +} + +func (x *NodejsStrategy) GetEnableProduction() bool { + if x != nil { + return x.EnableProduction + } + return false +} + +// Tenant-aware resource limits +type TenantResourceLimits struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Per-build limits + MaxMemoryBytes int64 `protobuf:"varint,1,opt,name=max_memory_bytes,json=maxMemoryBytes,proto3" json:"max_memory_bytes,omitempty"` + MaxCpuCores int32 `protobuf:"varint,2,opt,name=max_cpu_cores,json=maxCpuCores,proto3" json:"max_cpu_cores,omitempty"` + MaxDiskBytes int64 `protobuf:"varint,3,opt,name=max_disk_bytes,json=maxDiskBytes,proto3" json:"max_disk_bytes,omitempty"` + TimeoutSeconds int32 `protobuf:"varint,4,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` + // Tenant-wide quotas + MaxConcurrentBuilds int32 `protobuf:"varint,5,opt,name=max_concurrent_builds,json=maxConcurrentBuilds,proto3" json:"max_concurrent_builds,omitempty"` // Concurrent builds per tenant + MaxDailyBuilds int32 `protobuf:"varint,6,opt,name=max_daily_builds,json=maxDailyBuilds,proto3" json:"max_daily_builds,omitempty"` // Daily build quota + MaxStorageBytes int64 `protobuf:"varint,7,opt,name=max_storage_bytes,json=maxStorageBytes,proto3" json:"max_storage_bytes,omitempty"` // Total storage quota + MaxBuildTimeMinutes int32 `protobuf:"varint,8,opt,name=max_build_time_minutes,json=maxBuildTimeMinutes,proto3" json:"max_build_time_minutes,omitempty"` // Max time per build + // Network restrictions + AllowedRegistries []string `protobuf:"bytes,9,rep,name=allowed_registries,json=allowedRegistries,proto3" json:"allowed_registries,omitempty"` // Docker registries + AllowedGitHosts []string `protobuf:"bytes,10,rep,name=allowed_git_hosts,json=allowedGitHosts,proto3" json:"allowed_git_hosts,omitempty"` // Git hosts + AllowExternalNetwork bool `protobuf:"varint,11,opt,name=allow_external_network,json=allowExternalNetwork,proto3" json:"allow_external_network,omitempty"` // External network access + // Security restrictions + AllowPrivilegedBuilds bool `protobuf:"varint,12,opt,name=allow_privileged_builds,json=allowPrivilegedBuilds,proto3" json:"allow_privileged_builds,omitempty"` // Privileged containers + BlockedCommands []string `protobuf:"bytes,13,rep,name=blocked_commands,json=blockedCommands,proto3" json:"blocked_commands,omitempty"` // Forbidden commands + SandboxLevel int32 `protobuf:"varint,14,opt,name=sandbox_level,json=sandboxLevel,proto3" json:"sandbox_level,omitempty"` // Isolation level (0-3) + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TenantResourceLimits) Reset() { + *x = TenantResourceLimits{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TenantResourceLimits) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TenantResourceLimits) ProtoMessage() {} + +func (x *TenantResourceLimits) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TenantResourceLimits.ProtoReflect.Descriptor instead. +func (*TenantResourceLimits) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{17} +} + +func (x *TenantResourceLimits) GetMaxMemoryBytes() int64 { + if x != nil { + return x.MaxMemoryBytes + } + return 0 +} + +func (x *TenantResourceLimits) GetMaxCpuCores() int32 { + if x != nil { + return x.MaxCpuCores + } + return 0 +} + +func (x *TenantResourceLimits) GetMaxDiskBytes() int64 { + if x != nil { + return x.MaxDiskBytes + } + return 0 +} + +func (x *TenantResourceLimits) GetTimeoutSeconds() int32 { + if x != nil { + return x.TimeoutSeconds + } + return 0 +} + +func (x *TenantResourceLimits) GetMaxConcurrentBuilds() int32 { + if x != nil { + return x.MaxConcurrentBuilds + } + return 0 +} + +func (x *TenantResourceLimits) GetMaxDailyBuilds() int32 { + if x != nil { + return x.MaxDailyBuilds + } + return 0 +} + +func (x *TenantResourceLimits) GetMaxStorageBytes() int64 { + if x != nil { + return x.MaxStorageBytes + } + return 0 +} + +func (x *TenantResourceLimits) GetMaxBuildTimeMinutes() int32 { + if x != nil { + return x.MaxBuildTimeMinutes + } + return 0 +} + +func (x *TenantResourceLimits) GetAllowedRegistries() []string { + if x != nil { + return x.AllowedRegistries + } + return nil +} + +func (x *TenantResourceLimits) GetAllowedGitHosts() []string { + if x != nil { + return x.AllowedGitHosts + } + return nil +} + +func (x *TenantResourceLimits) GetAllowExternalNetwork() bool { + if x != nil { + return x.AllowExternalNetwork + } + return false +} + +func (x *TenantResourceLimits) GetAllowPrivilegedBuilds() bool { + if x != nil { + return x.AllowPrivilegedBuilds + } + return false +} + +func (x *TenantResourceLimits) GetBlockedCommands() []string { + if x != nil { + return x.BlockedCommands + } + return nil +} + +func (x *TenantResourceLimits) GetSandboxLevel() int32 { + if x != nil { + return x.SandboxLevel + } + return 0 +} + +// Main build configuration +type BuildConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Tenant identification + Tenant *TenantContext `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"` + // What we're building from + Source *BuildSource `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` + // What we're building to + Target *BuildTarget `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + // How to build it + Strategy *BuildStrategy `protobuf:"bytes,4,opt,name=strategy,proto3" json:"strategy,omitempty"` + // Build constraints (tenant-aware) + Limits *TenantResourceLimits `protobuf:"bytes,5,opt,name=limits,proto3" json:"limits,omitempty"` + // Build metadata + BuildName string `protobuf:"bytes,6,opt,name=build_name,json=buildName,proto3" json:"build_name,omitempty"` // Human-readable name + Labels map[string]string `protobuf:"bytes,7,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Custom labels + // Suggested asset ID to use when registering the built artifact + // This allows the caller to pre-generate the asset ID + SuggestedAssetId string `protobuf:"bytes,8,opt,name=suggested_asset_id,json=suggestedAssetId,proto3" json:"suggested_asset_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BuildConfig) Reset() { + *x = BuildConfig{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BuildConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildConfig) ProtoMessage() {} + +func (x *BuildConfig) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BuildConfig.ProtoReflect.Descriptor instead. +func (*BuildConfig) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{18} +} + +func (x *BuildConfig) GetTenant() *TenantContext { + if x != nil { + return x.Tenant + } + return nil +} + +func (x *BuildConfig) GetSource() *BuildSource { + if x != nil { + return x.Source + } + return nil +} + +func (x *BuildConfig) GetTarget() *BuildTarget { + if x != nil { + return x.Target + } + return nil +} + +func (x *BuildConfig) GetStrategy() *BuildStrategy { + if x != nil { + return x.Strategy + } + return nil +} + +func (x *BuildConfig) GetLimits() *TenantResourceLimits { + if x != nil { + return x.Limits + } + return nil +} + +func (x *BuildConfig) GetBuildName() string { + if x != nil { + return x.BuildName + } + return "" +} + +func (x *BuildConfig) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *BuildConfig) GetSuggestedAssetId() string { + if x != nil { + return x.SuggestedAssetId + } + return "" +} + +// Build isolation metadata +type BuildIsolation struct { + state protoimpl.MessageState `protogen:"open.v1"` + SandboxId string `protobuf:"bytes,1,opt,name=sandbox_id,json=sandboxId,proto3" json:"sandbox_id,omitempty"` // Unique sandbox identifier + NetworkNamespace string `protobuf:"bytes,2,opt,name=network_namespace,json=networkNamespace,proto3" json:"network_namespace,omitempty"` // Network isolation + FilesystemNamespace string `protobuf:"bytes,3,opt,name=filesystem_namespace,json=filesystemNamespace,proto3" json:"filesystem_namespace,omitempty"` // Filesystem isolation + SecurityContexts []string `protobuf:"bytes,4,rep,name=security_contexts,json=securityContexts,proto3" json:"security_contexts,omitempty"` // SELinux/AppArmor contexts + CgroupPath string `protobuf:"bytes,5,opt,name=cgroup_path,json=cgroupPath,proto3" json:"cgroup_path,omitempty"` // Resource cgroup + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BuildIsolation) Reset() { + *x = BuildIsolation{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BuildIsolation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildIsolation) ProtoMessage() {} + +func (x *BuildIsolation) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BuildIsolation.ProtoReflect.Descriptor instead. +func (*BuildIsolation) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{19} +} + +func (x *BuildIsolation) GetSandboxId() string { + if x != nil { + return x.SandboxId + } + return "" +} + +func (x *BuildIsolation) GetNetworkNamespace() string { + if x != nil { + return x.NetworkNamespace + } + return "" +} + +func (x *BuildIsolation) GetFilesystemNamespace() string { + if x != nil { + return x.FilesystemNamespace + } + return "" +} + +func (x *BuildIsolation) GetSecurityContexts() []string { + if x != nil { + return x.SecurityContexts + } + return nil +} + +func (x *BuildIsolation) GetCgroupPath() string { + if x != nil { + return x.CgroupPath + } + return "" +} + +// Image metadata extracted from Docker images +type ImageMetadata struct { + state protoimpl.MessageState `protogen:"open.v1"` + OriginalImage string `protobuf:"bytes,1,opt,name=original_image,json=originalImage,proto3" json:"original_image,omitempty"` // Original Docker image + ImageDigest string `protobuf:"bytes,2,opt,name=image_digest,json=imageDigest,proto3" json:"image_digest,omitempty"` // Docker image SHA256 + Layers []string `protobuf:"bytes,3,rep,name=layers,proto3" json:"layers,omitempty"` // Layer digests + Labels map[string]string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Docker labels + Command []string `protobuf:"bytes,5,rep,name=command,proto3" json:"command,omitempty"` // Original CMD + Entrypoint []string `protobuf:"bytes,6,rep,name=entrypoint,proto3" json:"entrypoint,omitempty"` // Original ENTRYPOINT + WorkingDir string `protobuf:"bytes,7,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` // WORKDIR + Env map[string]string `protobuf:"bytes,8,rep,name=env,proto3" json:"env,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Environment variables + ExposedPorts []string `protobuf:"bytes,9,rep,name=exposed_ports,json=exposedPorts,proto3" json:"exposed_ports,omitempty"` // EXPOSE ports + User string `protobuf:"bytes,10,opt,name=user,proto3" json:"user,omitempty"` // USER directive + Volumes []string `protobuf:"bytes,11,rep,name=volumes,proto3" json:"volumes,omitempty"` // VOLUME directives + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ImageMetadata) Reset() { + *x = ImageMetadata{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ImageMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImageMetadata) ProtoMessage() {} + +func (x *ImageMetadata) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ImageMetadata.ProtoReflect.Descriptor instead. +func (*ImageMetadata) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{20} +} + +func (x *ImageMetadata) GetOriginalImage() string { + if x != nil { + return x.OriginalImage + } + return "" +} + +func (x *ImageMetadata) GetImageDigest() string { + if x != nil { + return x.ImageDigest + } + return "" +} + +func (x *ImageMetadata) GetLayers() []string { + if x != nil { + return x.Layers + } + return nil +} + +func (x *ImageMetadata) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *ImageMetadata) GetCommand() []string { + if x != nil { + return x.Command + } + return nil +} + +func (x *ImageMetadata) GetEntrypoint() []string { + if x != nil { + return x.Entrypoint + } + return nil +} + +func (x *ImageMetadata) GetWorkingDir() string { + if x != nil { + return x.WorkingDir + } + return "" +} + +func (x *ImageMetadata) GetEnv() map[string]string { + if x != nil { + return x.Env + } + return nil +} + +func (x *ImageMetadata) GetExposedPorts() []string { + if x != nil { + return x.ExposedPorts + } + return nil +} + +func (x *ImageMetadata) GetUser() string { + if x != nil { + return x.User + } + return "" +} + +func (x *ImageMetadata) GetVolumes() []string { + if x != nil { + return x.Volumes + } + return nil +} + +// Build performance metrics +type BuildMetrics struct { + state protoimpl.MessageState `protogen:"open.v1"` + PullDurationMs int64 `protobuf:"varint,1,opt,name=pull_duration_ms,json=pullDurationMs,proto3" json:"pull_duration_ms,omitempty"` // Time to pull image/source + ExtractDurationMs int64 `protobuf:"varint,2,opt,name=extract_duration_ms,json=extractDurationMs,proto3" json:"extract_duration_ms,omitempty"` // Time to extract layers + BuildDurationMs int64 `protobuf:"varint,3,opt,name=build_duration_ms,json=buildDurationMs,proto3" json:"build_duration_ms,omitempty"` // Time to build rootfs + OptimizeDurationMs int64 `protobuf:"varint,4,opt,name=optimize_duration_ms,json=optimizeDurationMs,proto3" json:"optimize_duration_ms,omitempty"` // Time for optimizations + TotalDurationMs int64 `protobuf:"varint,5,opt,name=total_duration_ms,json=totalDurationMs,proto3" json:"total_duration_ms,omitempty"` // Total build time + OriginalSizeBytes int64 `protobuf:"varint,6,opt,name=original_size_bytes,json=originalSizeBytes,proto3" json:"original_size_bytes,omitempty"` // Original image/source size + RootfsSizeBytes int64 `protobuf:"varint,7,opt,name=rootfs_size_bytes,json=rootfsSizeBytes,proto3" json:"rootfs_size_bytes,omitempty"` // Final rootfs size + CompressionRatio int64 `protobuf:"varint,8,opt,name=compression_ratio,json=compressionRatio,proto3" json:"compression_ratio,omitempty"` // Size reduction percentage + MemoryPeakBytes int64 `protobuf:"varint,9,opt,name=memory_peak_bytes,json=memoryPeakBytes,proto3" json:"memory_peak_bytes,omitempty"` // Peak memory usage + DiskUsageBytes int64 `protobuf:"varint,10,opt,name=disk_usage_bytes,json=diskUsageBytes,proto3" json:"disk_usage_bytes,omitempty"` // Temporary disk usage + CpuCoresUsed int32 `protobuf:"varint,11,opt,name=cpu_cores_used,json=cpuCoresUsed,proto3" json:"cpu_cores_used,omitempty"` // CPU cores utilized + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BuildMetrics) Reset() { + *x = BuildMetrics{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BuildMetrics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildMetrics) ProtoMessage() {} + +func (x *BuildMetrics) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BuildMetrics.ProtoReflect.Descriptor instead. +func (*BuildMetrics) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{21} +} + +func (x *BuildMetrics) GetPullDurationMs() int64 { + if x != nil { + return x.PullDurationMs + } + return 0 +} + +func (x *BuildMetrics) GetExtractDurationMs() int64 { + if x != nil { + return x.ExtractDurationMs + } + return 0 +} + +func (x *BuildMetrics) GetBuildDurationMs() int64 { + if x != nil { + return x.BuildDurationMs + } + return 0 +} + +func (x *BuildMetrics) GetOptimizeDurationMs() int64 { + if x != nil { + return x.OptimizeDurationMs + } + return 0 +} + +func (x *BuildMetrics) GetTotalDurationMs() int64 { + if x != nil { + return x.TotalDurationMs + } + return 0 +} + +func (x *BuildMetrics) GetOriginalSizeBytes() int64 { + if x != nil { + return x.OriginalSizeBytes + } + return 0 +} + +func (x *BuildMetrics) GetRootfsSizeBytes() int64 { + if x != nil { + return x.RootfsSizeBytes + } + return 0 +} + +func (x *BuildMetrics) GetCompressionRatio() int64 { + if x != nil { + return x.CompressionRatio + } + return 0 +} + +func (x *BuildMetrics) GetMemoryPeakBytes() int64 { + if x != nil { + return x.MemoryPeakBytes + } + return 0 +} + +func (x *BuildMetrics) GetDiskUsageBytes() int64 { + if x != nil { + return x.DiskUsageBytes + } + return 0 +} + +func (x *BuildMetrics) GetCpuCoresUsed() int32 { + if x != nil { + return x.CpuCoresUsed + } + return 0 +} + +// Complete build job information +type BuildJob struct { + state protoimpl.MessageState `protogen:"open.v1"` + BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` // Unique build identifier + Config *BuildConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` // Build configuration + State BuildState `protobuf:"varint,3,opt,name=state,proto3,enum=builder.v1.BuildState" json:"state,omitempty"` // Current build state + // Timestamps + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + StartedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` + CompletedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"` + // Results + RootfsPath string `protobuf:"bytes,7,opt,name=rootfs_path,json=rootfsPath,proto3" json:"rootfs_path,omitempty"` // Path to built rootfs + RootfsSizeBytes int64 `protobuf:"varint,8,opt,name=rootfs_size_bytes,json=rootfsSizeBytes,proto3" json:"rootfs_size_bytes,omitempty"` // Size of rootfs + RootfsChecksum string `protobuf:"bytes,9,opt,name=rootfs_checksum,json=rootfsChecksum,proto3" json:"rootfs_checksum,omitempty"` // SHA256 of rootfs + // Build metadata + ImageMetadata *ImageMetadata `protobuf:"bytes,10,opt,name=image_metadata,json=imageMetadata,proto3" json:"image_metadata,omitempty"` + Metrics *BuildMetrics `protobuf:"bytes,11,opt,name=metrics,proto3" json:"metrics,omitempty"` + Isolation *BuildIsolation `protobuf:"bytes,12,opt,name=isolation,proto3" json:"isolation,omitempty"` + // Error information + ErrorMessage string `protobuf:"bytes,13,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + BuildLogs []string `protobuf:"bytes,14,rep,name=build_logs,json=buildLogs,proto3" json:"build_logs,omitempty"` + // Progress information + ProgressPercent int32 `protobuf:"varint,15,opt,name=progress_percent,json=progressPercent,proto3" json:"progress_percent,omitempty"` // 0-100 + CurrentStep string `protobuf:"bytes,16,opt,name=current_step,json=currentStep,proto3" json:"current_step,omitempty"` // Current build step + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BuildJob) Reset() { + *x = BuildJob{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BuildJob) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildJob) ProtoMessage() {} + +func (x *BuildJob) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BuildJob.ProtoReflect.Descriptor instead. +func (*BuildJob) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{22} +} + +func (x *BuildJob) GetBuildId() string { + if x != nil { + return x.BuildId + } + return "" +} + +func (x *BuildJob) GetConfig() *BuildConfig { + if x != nil { + return x.Config + } + return nil +} + +func (x *BuildJob) GetState() BuildState { + if x != nil { + return x.State + } + return BuildState_BUILD_STATE_UNSPECIFIED +} + +func (x *BuildJob) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *BuildJob) GetStartedAt() *timestamppb.Timestamp { + if x != nil { + return x.StartedAt + } + return nil +} + +func (x *BuildJob) GetCompletedAt() *timestamppb.Timestamp { + if x != nil { + return x.CompletedAt + } + return nil +} + +func (x *BuildJob) GetRootfsPath() string { + if x != nil { + return x.RootfsPath + } + return "" +} + +func (x *BuildJob) GetRootfsSizeBytes() int64 { + if x != nil { + return x.RootfsSizeBytes + } + return 0 +} + +func (x *BuildJob) GetRootfsChecksum() string { + if x != nil { + return x.RootfsChecksum + } + return "" +} + +func (x *BuildJob) GetImageMetadata() *ImageMetadata { + if x != nil { + return x.ImageMetadata + } + return nil +} + +func (x *BuildJob) GetMetrics() *BuildMetrics { + if x != nil { + return x.Metrics + } + return nil +} + +func (x *BuildJob) GetIsolation() *BuildIsolation { + if x != nil { + return x.Isolation + } + return nil +} + +func (x *BuildJob) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage + } + return "" +} + +func (x *BuildJob) GetBuildLogs() []string { + if x != nil { + return x.BuildLogs + } + return nil +} + +func (x *BuildJob) GetProgressPercent() int32 { + if x != nil { + return x.ProgressPercent + } + return 0 +} + +func (x *BuildJob) GetCurrentStep() string { + if x != nil { + return x.CurrentStep + } + return "" +} + +// Build log entry for streaming +type StreamBuildLogsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Level string `protobuf:"bytes,2,opt,name=level,proto3" json:"level,omitempty"` // "info", "warn", "error", "debug" + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` + Component string `protobuf:"bytes,4,opt,name=component,proto3" json:"component,omitempty"` // "puller", "extractor", "builder" + Metadata map[string]string `protobuf:"bytes,5,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StreamBuildLogsResponse) Reset() { + *x = StreamBuildLogsResponse{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StreamBuildLogsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamBuildLogsResponse) ProtoMessage() {} + +func (x *StreamBuildLogsResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StreamBuildLogsResponse.ProtoReflect.Descriptor instead. +func (*StreamBuildLogsResponse) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{23} +} + +func (x *StreamBuildLogsResponse) GetTimestamp() *timestamppb.Timestamp { + if x != nil { + return x.Timestamp + } + return nil +} + +func (x *StreamBuildLogsResponse) GetLevel() string { + if x != nil { + return x.Level + } + return "" +} + +func (x *StreamBuildLogsResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *StreamBuildLogsResponse) GetComponent() string { + if x != nil { + return x.Component + } + return "" +} + +func (x *StreamBuildLogsResponse) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +// Tenant usage statistics +type TenantUsageStats struct { + state protoimpl.MessageState `protogen:"open.v1"` + ActiveBuilds int32 `protobuf:"varint,1,opt,name=active_builds,json=activeBuilds,proto3" json:"active_builds,omitempty"` + DailyBuildsUsed int32 `protobuf:"varint,2,opt,name=daily_builds_used,json=dailyBuildsUsed,proto3" json:"daily_builds_used,omitempty"` + StorageBytesUsed int64 `protobuf:"varint,3,opt,name=storage_bytes_used,json=storageBytesUsed,proto3" json:"storage_bytes_used,omitempty"` + ComputeMinutesUsed int64 `protobuf:"varint,4,opt,name=compute_minutes_used,json=computeMinutesUsed,proto3" json:"compute_minutes_used,omitempty"` + BuildsQueued int32 `protobuf:"varint,5,opt,name=builds_queued,json=buildsQueued,proto3" json:"builds_queued,omitempty"` + BuildsCompletedToday int32 `protobuf:"varint,6,opt,name=builds_completed_today,json=buildsCompletedToday,proto3" json:"builds_completed_today,omitempty"` + BuildsFailedToday int32 `protobuf:"varint,7,opt,name=builds_failed_today,json=buildsFailedToday,proto3" json:"builds_failed_today,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TenantUsageStats) Reset() { + *x = TenantUsageStats{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TenantUsageStats) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TenantUsageStats) ProtoMessage() {} + +func (x *TenantUsageStats) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TenantUsageStats.ProtoReflect.Descriptor instead. +func (*TenantUsageStats) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{24} +} + +func (x *TenantUsageStats) GetActiveBuilds() int32 { + if x != nil { + return x.ActiveBuilds + } + return 0 +} + +func (x *TenantUsageStats) GetDailyBuildsUsed() int32 { + if x != nil { + return x.DailyBuildsUsed + } + return 0 +} + +func (x *TenantUsageStats) GetStorageBytesUsed() int64 { + if x != nil { + return x.StorageBytesUsed + } + return 0 +} + +func (x *TenantUsageStats) GetComputeMinutesUsed() int64 { + if x != nil { + return x.ComputeMinutesUsed + } + return 0 +} + +func (x *TenantUsageStats) GetBuildsQueued() int32 { + if x != nil { + return x.BuildsQueued + } + return 0 +} + +func (x *TenantUsageStats) GetBuildsCompletedToday() int32 { + if x != nil { + return x.BuildsCompletedToday + } + return 0 +} + +func (x *TenantUsageStats) GetBuildsFailedToday() int32 { + if x != nil { + return x.BuildsFailedToday + } + return 0 +} + +type QuotaViolation struct { + state protoimpl.MessageState `protogen:"open.v1"` + QuotaType string `protobuf:"bytes,1,opt,name=quota_type,json=quotaType,proto3" json:"quota_type,omitempty"` // "concurrent_builds", "daily_builds", etc. + CurrentValue int64 `protobuf:"varint,2,opt,name=current_value,json=currentValue,proto3" json:"current_value,omitempty"` + LimitValue int64 `protobuf:"varint,3,opt,name=limit_value,json=limitValue,proto3" json:"limit_value,omitempty"` + Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *QuotaViolation) Reset() { + *x = QuotaViolation{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *QuotaViolation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QuotaViolation) ProtoMessage() {} + +func (x *QuotaViolation) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QuotaViolation.ProtoReflect.Descriptor instead. +func (*QuotaViolation) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{25} +} + +func (x *QuotaViolation) GetQuotaType() string { + if x != nil { + return x.QuotaType + } + return "" +} + +func (x *QuotaViolation) GetCurrentValue() int64 { + if x != nil { + return x.CurrentValue + } + return 0 +} + +func (x *QuotaViolation) GetLimitValue() int64 { + if x != nil { + return x.LimitValue + } + return 0 +} + +func (x *QuotaViolation) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +// Request/Response messages +type CreateBuildRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Config *BuildConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateBuildRequest) Reset() { + *x = CreateBuildRequest{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateBuildRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateBuildRequest) ProtoMessage() {} + +func (x *CreateBuildRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateBuildRequest.ProtoReflect.Descriptor instead. +func (*CreateBuildRequest) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{26} +} + +func (x *CreateBuildRequest) GetConfig() *BuildConfig { + if x != nil { + return x.Config + } + return nil +} + +type CreateBuildResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` + State BuildState `protobuf:"varint,2,opt,name=state,proto3,enum=builder.v1.BuildState" json:"state,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + RootfsPath string `protobuf:"bytes,4,opt,name=rootfs_path,json=rootfsPath,proto3" json:"rootfs_path,omitempty"` // Path to the generated rootfs for VM creation + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateBuildResponse) Reset() { + *x = CreateBuildResponse{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateBuildResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateBuildResponse) ProtoMessage() {} + +func (x *CreateBuildResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateBuildResponse.ProtoReflect.Descriptor instead. +func (*CreateBuildResponse) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{27} +} + +func (x *CreateBuildResponse) GetBuildId() string { + if x != nil { + return x.BuildId + } + return "" +} + +func (x *CreateBuildResponse) GetState() BuildState { + if x != nil { + return x.State + } + return BuildState_BUILD_STATE_UNSPECIFIED +} + +func (x *CreateBuildResponse) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CreateBuildResponse) GetRootfsPath() string { + if x != nil { + return x.RootfsPath + } + return "" +} + +type GetBuildRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` + TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // For authorization + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetBuildRequest) Reset() { + *x = GetBuildRequest{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetBuildRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBuildRequest) ProtoMessage() {} + +func (x *GetBuildRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetBuildRequest.ProtoReflect.Descriptor instead. +func (*GetBuildRequest) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{28} +} + +func (x *GetBuildRequest) GetBuildId() string { + if x != nil { + return x.BuildId + } + return "" +} + +func (x *GetBuildRequest) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +type GetBuildResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Build *BuildJob `protobuf:"bytes,1,opt,name=build,proto3" json:"build,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetBuildResponse) Reset() { + *x = GetBuildResponse{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetBuildResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBuildResponse) ProtoMessage() {} + +func (x *GetBuildResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetBuildResponse.ProtoReflect.Descriptor instead. +func (*GetBuildResponse) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{29} +} + +func (x *GetBuildResponse) GetBuild() *BuildJob { + if x != nil { + return x.Build + } + return nil +} + +type ListBuildsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // Required for filtering + StateFilter []BuildState `protobuf:"varint,2,rep,packed,name=state_filter,json=stateFilter,proto3,enum=builder.v1.BuildState" json:"state_filter,omitempty"` + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListBuildsRequest) Reset() { + *x = ListBuildsRequest{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListBuildsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListBuildsRequest) ProtoMessage() {} + +func (x *ListBuildsRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListBuildsRequest.ProtoReflect.Descriptor instead. +func (*ListBuildsRequest) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{30} +} + +func (x *ListBuildsRequest) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +func (x *ListBuildsRequest) GetStateFilter() []BuildState { + if x != nil { + return x.StateFilter + } + return nil +} + +func (x *ListBuildsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListBuildsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +type ListBuildsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Builds []*BuildJob `protobuf:"bytes,1,rep,name=builds,proto3" json:"builds,omitempty"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListBuildsResponse) Reset() { + *x = ListBuildsResponse{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListBuildsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListBuildsResponse) ProtoMessage() {} + +func (x *ListBuildsResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListBuildsResponse.ProtoReflect.Descriptor instead. +func (*ListBuildsResponse) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{31} +} + +func (x *ListBuildsResponse) GetBuilds() []*BuildJob { + if x != nil { + return x.Builds + } + return nil +} + +func (x *ListBuildsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +func (x *ListBuildsResponse) GetTotalCount() int32 { + if x != nil { + return x.TotalCount + } + return 0 +} + +type CancelBuildRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` + TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // For authorization + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CancelBuildRequest) Reset() { + *x = CancelBuildRequest{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CancelBuildRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelBuildRequest) ProtoMessage() {} + +func (x *CancelBuildRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CancelBuildRequest.ProtoReflect.Descriptor instead. +func (*CancelBuildRequest) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{32} +} + +func (x *CancelBuildRequest) GetBuildId() string { + if x != nil { + return x.BuildId + } + return "" +} + +func (x *CancelBuildRequest) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +type CancelBuildResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + State BuildState `protobuf:"varint,2,opt,name=state,proto3,enum=builder.v1.BuildState" json:"state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CancelBuildResponse) Reset() { + *x = CancelBuildResponse{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CancelBuildResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelBuildResponse) ProtoMessage() {} + +func (x *CancelBuildResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CancelBuildResponse.ProtoReflect.Descriptor instead. +func (*CancelBuildResponse) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{33} +} + +func (x *CancelBuildResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *CancelBuildResponse) GetState() BuildState { + if x != nil { + return x.State + } + return BuildState_BUILD_STATE_UNSPECIFIED +} + +type DeleteBuildRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` + TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // For authorization + Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"` // Delete even if running + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteBuildRequest) Reset() { + *x = DeleteBuildRequest{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteBuildRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteBuildRequest) ProtoMessage() {} + +func (x *DeleteBuildRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteBuildRequest.ProtoReflect.Descriptor instead. +func (*DeleteBuildRequest) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{34} +} + +func (x *DeleteBuildRequest) GetBuildId() string { + if x != nil { + return x.BuildId + } + return "" +} + +func (x *DeleteBuildRequest) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +func (x *DeleteBuildRequest) GetForce() bool { + if x != nil { + return x.Force + } + return false +} + +type DeleteBuildResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteBuildResponse) Reset() { + *x = DeleteBuildResponse{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteBuildResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteBuildResponse) ProtoMessage() {} + +func (x *DeleteBuildResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteBuildResponse.ProtoReflect.Descriptor instead. +func (*DeleteBuildResponse) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{35} +} + +func (x *DeleteBuildResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +type StreamBuildLogsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` + TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // For authorization + Follow bool `protobuf:"varint,3,opt,name=follow,proto3" json:"follow,omitempty"` // Continue streaming new logs + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StreamBuildLogsRequest) Reset() { + *x = StreamBuildLogsRequest{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StreamBuildLogsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamBuildLogsRequest) ProtoMessage() {} + +func (x *StreamBuildLogsRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[36] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StreamBuildLogsRequest.ProtoReflect.Descriptor instead. +func (*StreamBuildLogsRequest) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{36} +} + +func (x *StreamBuildLogsRequest) GetBuildId() string { + if x != nil { + return x.BuildId + } + return "" +} + +func (x *StreamBuildLogsRequest) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +func (x *StreamBuildLogsRequest) GetFollow() bool { + if x != nil { + return x.Follow + } + return false +} + +type GetTenantQuotasRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetTenantQuotasRequest) Reset() { + *x = GetTenantQuotasRequest{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetTenantQuotasRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTenantQuotasRequest) ProtoMessage() {} + +func (x *GetTenantQuotasRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[37] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTenantQuotasRequest.ProtoReflect.Descriptor instead. +func (*GetTenantQuotasRequest) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{37} +} + +func (x *GetTenantQuotasRequest) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +type GetTenantQuotasResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + CurrentLimits *TenantResourceLimits `protobuf:"bytes,1,opt,name=current_limits,json=currentLimits,proto3" json:"current_limits,omitempty"` + CurrentUsage *TenantUsageStats `protobuf:"bytes,2,opt,name=current_usage,json=currentUsage,proto3" json:"current_usage,omitempty"` + Violations []*QuotaViolation `protobuf:"bytes,3,rep,name=violations,proto3" json:"violations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetTenantQuotasResponse) Reset() { + *x = GetTenantQuotasResponse{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetTenantQuotasResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTenantQuotasResponse) ProtoMessage() {} + +func (x *GetTenantQuotasResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTenantQuotasResponse.ProtoReflect.Descriptor instead. +func (*GetTenantQuotasResponse) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{38} +} + +func (x *GetTenantQuotasResponse) GetCurrentLimits() *TenantResourceLimits { + if x != nil { + return x.CurrentLimits + } + return nil +} + +func (x *GetTenantQuotasResponse) GetCurrentUsage() *TenantUsageStats { + if x != nil { + return x.CurrentUsage + } + return nil +} + +func (x *GetTenantQuotasResponse) GetViolations() []*QuotaViolation { + if x != nil { + return x.Violations + } + return nil +} + +type GetBuildStatsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetBuildStatsRequest) Reset() { + *x = GetBuildStatsRequest{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetBuildStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBuildStatsRequest) ProtoMessage() {} + +func (x *GetBuildStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[39] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetBuildStatsRequest.ProtoReflect.Descriptor instead. +func (*GetBuildStatsRequest) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{39} +} + +func (x *GetBuildStatsRequest) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +func (x *GetBuildStatsRequest) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *GetBuildStatsRequest) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +type GetBuildStatsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + TotalBuilds int32 `protobuf:"varint,1,opt,name=total_builds,json=totalBuilds,proto3" json:"total_builds,omitempty"` + SuccessfulBuilds int32 `protobuf:"varint,2,opt,name=successful_builds,json=successfulBuilds,proto3" json:"successful_builds,omitempty"` + FailedBuilds int32 `protobuf:"varint,3,opt,name=failed_builds,json=failedBuilds,proto3" json:"failed_builds,omitempty"` + AvgBuildTimeMs int64 `protobuf:"varint,4,opt,name=avg_build_time_ms,json=avgBuildTimeMs,proto3" json:"avg_build_time_ms,omitempty"` + TotalStorageBytes int64 `protobuf:"varint,5,opt,name=total_storage_bytes,json=totalStorageBytes,proto3" json:"total_storage_bytes,omitempty"` + TotalComputeMinutes int64 `protobuf:"varint,6,opt,name=total_compute_minutes,json=totalComputeMinutes,proto3" json:"total_compute_minutes,omitempty"` + RecentBuilds []*BuildJob `protobuf:"bytes,7,rep,name=recent_builds,json=recentBuilds,proto3" json:"recent_builds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetBuildStatsResponse) Reset() { + *x = GetBuildStatsResponse{} + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetBuildStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBuildStatsResponse) ProtoMessage() {} + +func (x *GetBuildStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[40] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetBuildStatsResponse.ProtoReflect.Descriptor instead. +func (*GetBuildStatsResponse) Descriptor() ([]byte, []int) { + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{40} +} + +func (x *GetBuildStatsResponse) GetTotalBuilds() int32 { + if x != nil { + return x.TotalBuilds + } + return 0 +} + +func (x *GetBuildStatsResponse) GetSuccessfulBuilds() int32 { + if x != nil { + return x.SuccessfulBuilds + } + return 0 +} + +func (x *GetBuildStatsResponse) GetFailedBuilds() int32 { + if x != nil { + return x.FailedBuilds + } + return 0 +} + +func (x *GetBuildStatsResponse) GetAvgBuildTimeMs() int64 { + if x != nil { + return x.AvgBuildTimeMs + } + return 0 +} + +func (x *GetBuildStatsResponse) GetTotalStorageBytes() int64 { + if x != nil { + return x.TotalStorageBytes + } + return 0 +} + +func (x *GetBuildStatsResponse) GetTotalComputeMinutes() int64 { + if x != nil { + return x.TotalComputeMinutes + } + return 0 +} + +func (x *GetBuildStatsResponse) GetRecentBuilds() []*BuildJob { + if x != nil { + return x.RecentBuilds + } + return nil +} + +var File_deploy_builderd_proto_builder_v1_builder_proto protoreflect.FileDescriptor + +const file_deploy_builderd_proto_builder_v1_builder_proto_rawDesc = "" + + "\n" + + ".deploy/builderd/proto/builder/v1/builder.proto\x12\n" + + "builder.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\xc6\x02\n" + + "\rTenantContext\x12\x1b\n" + + "\ttenant_id\x18\x01 \x01(\tR\btenantId\x12\x1f\n" + + "\vcustomer_id\x18\x02 \x01(\tR\n" + + "customerId\x12'\n" + + "\x0forganization_id\x18\x03 \x01(\tR\x0eorganizationId\x12*\n" + + "\x04tier\x18\x04 \x01(\x0e2\x16.builder.v1.TenantTierR\x04tier\x12 \n" + + "\vpermissions\x18\x05 \x03(\tR\vpermissions\x12C\n" + + "\bmetadata\x18\x06 \x03(\v2'.builder.v1.TenantContext.MetadataEntryR\bmetadata\x1a;\n" + + "\rMetadataEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xe1\x01\n" + + "\vBuildSource\x12B\n" + + "\fdocker_image\x18\x01 \x01(\v2\x1d.builder.v1.DockerImageSourceH\x00R\vdockerImage\x12H\n" + + "\x0egit_repository\x18\x02 \x01(\v2\x1f.builder.v1.GitRepositorySourceH\x00R\rgitRepository\x125\n" + + "\aarchive\x18\x03 \x01(\v2\x19.builder.v1.ArchiveSourceH\x00R\aarchiveB\r\n" + + "\vsource_type\"y\n" + + "\x11DockerImageSource\x12\x1b\n" + + "\timage_uri\x18\x01 \x01(\tR\bimageUri\x12*\n" + + "\x04auth\x18\x02 \x01(\v2\x16.builder.v1.DockerAuthR\x04auth\x12\x1b\n" + + "\tpull_tags\x18\x03 \x03(\tR\bpullTags\"v\n" + + "\n" + + "DockerAuth\x12\x1a\n" + + "\busername\x18\x01 \x01(\tR\busername\x12\x1a\n" + + "\bpassword\x18\x02 \x01(\tR\bpassword\x12\x14\n" + + "\x05token\x18\x03 \x01(\tR\x05token\x12\x1a\n" + + "\bregistry\x18\x04 \x01(\tR\bregistry\"\x9c\x01\n" + + "\x13GitRepositorySource\x12%\n" + + "\x0erepository_url\x18\x01 \x01(\tR\rrepositoryUrl\x12\x10\n" + + "\x03ref\x18\x02 \x01(\tR\x03ref\x12#\n" + + "\rbuild_context\x18\x03 \x01(\tR\fbuildContext\x12'\n" + + "\x04auth\x18\x04 \x01(\v2\x13.builder.v1.GitAuthR\x04auth\"p\n" + + "\aGitAuth\x12\x1a\n" + + "\busername\x18\x01 \x01(\tR\busername\x12\x1a\n" + + "\bpassword\x18\x02 \x01(\tR\bpassword\x12\x17\n" + + "\assh_key\x18\x03 \x01(\tR\x06sshKey\x12\x14\n" + + "\x05token\x18\x04 \x01(\tR\x05token\"x\n" + + "\rArchiveSource\x12\x1f\n" + + "\varchive_url\x18\x01 \x01(\tR\n" + + "archiveUrl\x12!\n" + + "\farchive_type\x18\x02 \x01(\tR\varchiveType\x12#\n" + + "\rbuild_context\x18\x03 \x01(\tR\fbuildContext\"\xa7\x01\n" + + "\vBuildTarget\x12B\n" + + "\x0emicrovm_rootfs\x18\x01 \x01(\v2\x19.builder.v1.MicroVMRootfsH\x00R\rmicrovmRootfs\x12E\n" + + "\x0fcontainer_image\x18\x02 \x01(\v2\x1a.builder.v1.ContainerImageH\x00R\x0econtainerImageB\r\n" + + "\vtarget_type\"\xfd\x01\n" + + "\rMicroVMRootfs\x12=\n" + + "\rinit_strategy\x18\x01 \x01(\x0e2\x18.builder.v1.InitStrategyR\finitStrategy\x12@\n" + + "\x0eruntime_config\x18\x02 \x01(\v2\x19.builder.v1.RuntimeConfigR\rruntimeConfig\x12D\n" + + "\foptimization\x18\x03 \x01(\v2 .builder.v1.OptimizationSettingsR\foptimization\x12%\n" + + "\x0epreserve_paths\x18\x04 \x03(\tR\rpreservePaths\"G\n" + + "\x0eContainerImage\x12\x1d\n" + + "\n" + + "base_image\x18\x01 \x01(\tR\tbaseImage\x12\x16\n" + + "\x06layers\x18\x02 \x03(\tR\x06layers\"\x9d\x02\n" + + "\rRuntimeConfig\x12\x18\n" + + "\acommand\x18\x01 \x03(\tR\acommand\x12\x1e\n" + + "\n" + + "entrypoint\x18\x02 \x03(\tR\n" + + "entrypoint\x12\x1f\n" + + "\vworking_dir\x18\x03 \x01(\tR\n" + + "workingDir\x12L\n" + + "\venvironment\x18\x04 \x03(\v2*.builder.v1.RuntimeConfig.EnvironmentEntryR\venvironment\x12#\n" + + "\rexposed_ports\x18\x05 \x03(\tR\fexposedPorts\x1a>\n" + + "\x10EnvironmentEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x89\x02\n" + + "\x14OptimizationSettings\x12.\n" + + "\x13strip_debug_symbols\x18\x01 \x01(\bR\x11stripDebugSymbols\x12+\n" + + "\x11compress_binaries\x18\x02 \x01(\bR\x10compressBinaries\x12\x1f\n" + + "\vremove_docs\x18\x03 \x01(\bR\n" + + "removeDocs\x12!\n" + + "\fremove_cache\x18\x04 \x01(\bR\vremoveCache\x12%\n" + + "\x0epreserve_paths\x18\x05 \x03(\tR\rpreservePaths\x12)\n" + + "\x10exclude_patterns\x18\x06 \x03(\tR\x0fexcludePatterns\"\x8f\x02\n" + + "\rBuildStrategy\x12J\n" + + "\x0edocker_extract\x18\x01 \x01(\v2!.builder.v1.DockerExtractStrategyH\x00R\rdockerExtract\x122\n" + + "\x06go_api\x18\x02 \x01(\v2\x19.builder.v1.GoApiStrategyH\x00R\x05goApi\x127\n" + + "\asinatra\x18\x03 \x01(\v2\x1b.builder.v1.SinatraStrategyH\x00R\asinatra\x124\n" + + "\x06nodejs\x18\x04 \x01(\v2\x1a.builder.v1.NodejsStrategyH\x00R\x06nodejsB\x0f\n" + + "\rstrategy_type\"\x9a\x01\n" + + "\x15DockerExtractStrategy\x12'\n" + + "\x0fpreserve_layers\x18\x01 \x01(\bR\x0epreserveLayers\x12-\n" + + "\x12flatten_filesystem\x18\x02 \x01(\bR\x11flattenFilesystem\x12)\n" + + "\x10exclude_patterns\x18\x03 \x03(\tR\x0fexcludePatterns\"\x91\x01\n" + + "\rGoApiStrategy\x12\x1d\n" + + "\n" + + "go_version\x18\x01 \x01(\tR\tgoVersion\x12\x1f\n" + + "\vbuild_flags\x18\x02 \x03(\tR\n" + + "buildFlags\x12!\n" + + "\fmain_package\x18\x03 \x01(\tR\vmainPackage\x12\x1d\n" + + "\n" + + "enable_cgo\x18\x04 \x01(\bR\tenableCgo\"\x85\x02\n" + + "\x0fSinatraStrategy\x12!\n" + + "\fruby_version\x18\x01 \x01(\tR\vrubyVersion\x12!\n" + + "\fgemfile_path\x18\x02 \x01(\tR\vgemfilePath\x12\x1f\n" + + "\vrack_server\x18\x03 \x01(\tR\n" + + "rackServer\x12L\n" + + "\vrack_config\x18\x04 \x03(\v2+.builder.v1.SinatraStrategy.RackConfigEntryR\n" + + "rackConfig\x1a=\n" + + "\x0fRackConfigEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xac\x01\n" + + "\x0eNodejsStrategy\x12!\n" + + "\fnode_version\x18\x01 \x01(\tR\vnodeVersion\x12'\n" + + "\x0fpackage_manager\x18\x02 \x01(\tR\x0epackageManager\x12!\n" + + "\fstart_script\x18\x03 \x01(\tR\vstartScript\x12+\n" + + "\x11enable_production\x18\x04 \x01(\bR\x10enableProduction\"\x8b\x05\n" + + "\x14TenantResourceLimits\x12(\n" + + "\x10max_memory_bytes\x18\x01 \x01(\x03R\x0emaxMemoryBytes\x12\"\n" + + "\rmax_cpu_cores\x18\x02 \x01(\x05R\vmaxCpuCores\x12$\n" + + "\x0emax_disk_bytes\x18\x03 \x01(\x03R\fmaxDiskBytes\x12'\n" + + "\x0ftimeout_seconds\x18\x04 \x01(\x05R\x0etimeoutSeconds\x122\n" + + "\x15max_concurrent_builds\x18\x05 \x01(\x05R\x13maxConcurrentBuilds\x12(\n" + + "\x10max_daily_builds\x18\x06 \x01(\x05R\x0emaxDailyBuilds\x12*\n" + + "\x11max_storage_bytes\x18\a \x01(\x03R\x0fmaxStorageBytes\x123\n" + + "\x16max_build_time_minutes\x18\b \x01(\x05R\x13maxBuildTimeMinutes\x12-\n" + + "\x12allowed_registries\x18\t \x03(\tR\x11allowedRegistries\x12*\n" + + "\x11allowed_git_hosts\x18\n" + + " \x03(\tR\x0fallowedGitHosts\x124\n" + + "\x16allow_external_network\x18\v \x01(\bR\x14allowExternalNetwork\x126\n" + + "\x17allow_privileged_builds\x18\f \x01(\bR\x15allowPrivilegedBuilds\x12)\n" + + "\x10blocked_commands\x18\r \x03(\tR\x0fblockedCommands\x12#\n" + + "\rsandbox_level\x18\x0e \x01(\x05R\fsandboxLevel\"\xd8\x03\n" + + "\vBuildConfig\x121\n" + + "\x06tenant\x18\x01 \x01(\v2\x19.builder.v1.TenantContextR\x06tenant\x12/\n" + + "\x06source\x18\x02 \x01(\v2\x17.builder.v1.BuildSourceR\x06source\x12/\n" + + "\x06target\x18\x03 \x01(\v2\x17.builder.v1.BuildTargetR\x06target\x125\n" + + "\bstrategy\x18\x04 \x01(\v2\x19.builder.v1.BuildStrategyR\bstrategy\x128\n" + + "\x06limits\x18\x05 \x01(\v2 .builder.v1.TenantResourceLimitsR\x06limits\x12\x1d\n" + + "\n" + + "build_name\x18\x06 \x01(\tR\tbuildName\x12;\n" + + "\x06labels\x18\a \x03(\v2#.builder.v1.BuildConfig.LabelsEntryR\x06labels\x12,\n" + + "\x12suggested_asset_id\x18\b \x01(\tR\x10suggestedAssetId\x1a9\n" + + "\vLabelsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xdd\x01\n" + + "\x0eBuildIsolation\x12\x1d\n" + + "\n" + + "sandbox_id\x18\x01 \x01(\tR\tsandboxId\x12+\n" + + "\x11network_namespace\x18\x02 \x01(\tR\x10networkNamespace\x121\n" + + "\x14filesystem_namespace\x18\x03 \x01(\tR\x13filesystemNamespace\x12+\n" + + "\x11security_contexts\x18\x04 \x03(\tR\x10securityContexts\x12\x1f\n" + + "\vcgroup_path\x18\x05 \x01(\tR\n" + + "cgroupPath\"\x87\x04\n" + + "\rImageMetadata\x12%\n" + + "\x0eoriginal_image\x18\x01 \x01(\tR\roriginalImage\x12!\n" + + "\fimage_digest\x18\x02 \x01(\tR\vimageDigest\x12\x16\n" + + "\x06layers\x18\x03 \x03(\tR\x06layers\x12=\n" + + "\x06labels\x18\x04 \x03(\v2%.builder.v1.ImageMetadata.LabelsEntryR\x06labels\x12\x18\n" + + "\acommand\x18\x05 \x03(\tR\acommand\x12\x1e\n" + + "\n" + + "entrypoint\x18\x06 \x03(\tR\n" + + "entrypoint\x12\x1f\n" + + "\vworking_dir\x18\a \x01(\tR\n" + + "workingDir\x124\n" + + "\x03env\x18\b \x03(\v2\".builder.v1.ImageMetadata.EnvEntryR\x03env\x12#\n" + + "\rexposed_ports\x18\t \x03(\tR\fexposedPorts\x12\x12\n" + + "\x04user\x18\n" + + " \x01(\tR\x04user\x12\x18\n" + + "\avolumes\x18\v \x03(\tR\avolumes\x1a9\n" + + "\vLabelsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a6\n" + + "\bEnvEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xf7\x03\n" + + "\fBuildMetrics\x12(\n" + + "\x10pull_duration_ms\x18\x01 \x01(\x03R\x0epullDurationMs\x12.\n" + + "\x13extract_duration_ms\x18\x02 \x01(\x03R\x11extractDurationMs\x12*\n" + + "\x11build_duration_ms\x18\x03 \x01(\x03R\x0fbuildDurationMs\x120\n" + + "\x14optimize_duration_ms\x18\x04 \x01(\x03R\x12optimizeDurationMs\x12*\n" + + "\x11total_duration_ms\x18\x05 \x01(\x03R\x0ftotalDurationMs\x12.\n" + + "\x13original_size_bytes\x18\x06 \x01(\x03R\x11originalSizeBytes\x12*\n" + + "\x11rootfs_size_bytes\x18\a \x01(\x03R\x0frootfsSizeBytes\x12+\n" + + "\x11compression_ratio\x18\b \x01(\x03R\x10compressionRatio\x12*\n" + + "\x11memory_peak_bytes\x18\t \x01(\x03R\x0fmemoryPeakBytes\x12(\n" + + "\x10disk_usage_bytes\x18\n" + + " \x01(\x03R\x0ediskUsageBytes\x12$\n" + + "\x0ecpu_cores_used\x18\v \x01(\x05R\fcpuCoresUsed\"\xf1\x05\n" + + "\bBuildJob\x12\x19\n" + + "\bbuild_id\x18\x01 \x01(\tR\abuildId\x12/\n" + + "\x06config\x18\x02 \x01(\v2\x17.builder.v1.BuildConfigR\x06config\x12,\n" + + "\x05state\x18\x03 \x01(\x0e2\x16.builder.v1.BuildStateR\x05state\x129\n" + + "\n" + + "created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + + "\n" + + "started_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" + + "\fcompleted_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\x12\x1f\n" + + "\vrootfs_path\x18\a \x01(\tR\n" + + "rootfsPath\x12*\n" + + "\x11rootfs_size_bytes\x18\b \x01(\x03R\x0frootfsSizeBytes\x12'\n" + + "\x0frootfs_checksum\x18\t \x01(\tR\x0erootfsChecksum\x12@\n" + + "\x0eimage_metadata\x18\n" + + " \x01(\v2\x19.builder.v1.ImageMetadataR\rimageMetadata\x122\n" + + "\ametrics\x18\v \x01(\v2\x18.builder.v1.BuildMetricsR\ametrics\x128\n" + + "\tisolation\x18\f \x01(\v2\x1a.builder.v1.BuildIsolationR\tisolation\x12#\n" + + "\rerror_message\x18\r \x01(\tR\ferrorMessage\x12\x1d\n" + + "\n" + + "build_logs\x18\x0e \x03(\tR\tbuildLogs\x12)\n" + + "\x10progress_percent\x18\x0f \x01(\x05R\x0fprogressPercent\x12!\n" + + "\fcurrent_step\x18\x10 \x01(\tR\vcurrentStep\"\xad\x02\n" + + "\x17StreamBuildLogsResponse\x128\n" + + "\ttimestamp\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12\x14\n" + + "\x05level\x18\x02 \x01(\tR\x05level\x12\x18\n" + + "\amessage\x18\x03 \x01(\tR\amessage\x12\x1c\n" + + "\tcomponent\x18\x04 \x01(\tR\tcomponent\x12M\n" + + "\bmetadata\x18\x05 \x03(\v21.builder.v1.StreamBuildLogsResponse.MetadataEntryR\bmetadata\x1a;\n" + + "\rMetadataEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xce\x02\n" + + "\x10TenantUsageStats\x12#\n" + + "\ractive_builds\x18\x01 \x01(\x05R\factiveBuilds\x12*\n" + + "\x11daily_builds_used\x18\x02 \x01(\x05R\x0fdailyBuildsUsed\x12,\n" + + "\x12storage_bytes_used\x18\x03 \x01(\x03R\x10storageBytesUsed\x120\n" + + "\x14compute_minutes_used\x18\x04 \x01(\x03R\x12computeMinutesUsed\x12#\n" + + "\rbuilds_queued\x18\x05 \x01(\x05R\fbuildsQueued\x124\n" + + "\x16builds_completed_today\x18\x06 \x01(\x05R\x14buildsCompletedToday\x12.\n" + + "\x13builds_failed_today\x18\a \x01(\x05R\x11buildsFailedToday\"\x8f\x01\n" + + "\x0eQuotaViolation\x12\x1d\n" + + "\n" + + "quota_type\x18\x01 \x01(\tR\tquotaType\x12#\n" + + "\rcurrent_value\x18\x02 \x01(\x03R\fcurrentValue\x12\x1f\n" + + "\vlimit_value\x18\x03 \x01(\x03R\n" + + "limitValue\x12\x18\n" + + "\amessage\x18\x04 \x01(\tR\amessage\"E\n" + + "\x12CreateBuildRequest\x12/\n" + + "\x06config\x18\x01 \x01(\v2\x17.builder.v1.BuildConfigR\x06config\"\xba\x01\n" + + "\x13CreateBuildResponse\x12\x19\n" + + "\bbuild_id\x18\x01 \x01(\tR\abuildId\x12,\n" + + "\x05state\x18\x02 \x01(\x0e2\x16.builder.v1.BuildStateR\x05state\x129\n" + + "\n" + + "created_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x1f\n" + + "\vrootfs_path\x18\x04 \x01(\tR\n" + + "rootfsPath\"I\n" + + "\x0fGetBuildRequest\x12\x19\n" + + "\bbuild_id\x18\x01 \x01(\tR\abuildId\x12\x1b\n" + + "\ttenant_id\x18\x02 \x01(\tR\btenantId\">\n" + + "\x10GetBuildResponse\x12*\n" + + "\x05build\x18\x01 \x01(\v2\x14.builder.v1.BuildJobR\x05build\"\xa7\x01\n" + + "\x11ListBuildsRequest\x12\x1b\n" + + "\ttenant_id\x18\x01 \x01(\tR\btenantId\x129\n" + + "\fstate_filter\x18\x02 \x03(\x0e2\x16.builder.v1.BuildStateR\vstateFilter\x12\x1b\n" + + "\tpage_size\x18\x03 \x01(\x05R\bpageSize\x12\x1d\n" + + "\n" + + "page_token\x18\x04 \x01(\tR\tpageToken\"\x8b\x01\n" + + "\x12ListBuildsResponse\x12,\n" + + "\x06builds\x18\x01 \x03(\v2\x14.builder.v1.BuildJobR\x06builds\x12&\n" + + "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12\x1f\n" + + "\vtotal_count\x18\x03 \x01(\x05R\n" + + "totalCount\"L\n" + + "\x12CancelBuildRequest\x12\x19\n" + + "\bbuild_id\x18\x01 \x01(\tR\abuildId\x12\x1b\n" + + "\ttenant_id\x18\x02 \x01(\tR\btenantId\"]\n" + + "\x13CancelBuildResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12,\n" + + "\x05state\x18\x02 \x01(\x0e2\x16.builder.v1.BuildStateR\x05state\"b\n" + + "\x12DeleteBuildRequest\x12\x19\n" + + "\bbuild_id\x18\x01 \x01(\tR\abuildId\x12\x1b\n" + + "\ttenant_id\x18\x02 \x01(\tR\btenantId\x12\x14\n" + + "\x05force\x18\x03 \x01(\bR\x05force\"/\n" + + "\x13DeleteBuildResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\"h\n" + + "\x16StreamBuildLogsRequest\x12\x19\n" + + "\bbuild_id\x18\x01 \x01(\tR\abuildId\x12\x1b\n" + + "\ttenant_id\x18\x02 \x01(\tR\btenantId\x12\x16\n" + + "\x06follow\x18\x03 \x01(\bR\x06follow\"5\n" + + "\x16GetTenantQuotasRequest\x12\x1b\n" + + "\ttenant_id\x18\x01 \x01(\tR\btenantId\"\xe1\x01\n" + + "\x17GetTenantQuotasResponse\x12G\n" + + "\x0ecurrent_limits\x18\x01 \x01(\v2 .builder.v1.TenantResourceLimitsR\rcurrentLimits\x12A\n" + + "\rcurrent_usage\x18\x02 \x01(\v2\x1c.builder.v1.TenantUsageStatsR\fcurrentUsage\x12:\n" + + "\n" + + "violations\x18\x03 \x03(\v2\x1a.builder.v1.QuotaViolationR\n" + + "violations\"\xa5\x01\n" + + "\x14GetBuildStatsRequest\x12\x1b\n" + + "\ttenant_id\x18\x01 \x01(\tR\btenantId\x129\n" + + "\n" + + "start_time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tstartTime\x125\n" + + "\bend_time\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\aendTime\"\xd6\x02\n" + + "\x15GetBuildStatsResponse\x12!\n" + + "\ftotal_builds\x18\x01 \x01(\x05R\vtotalBuilds\x12+\n" + + "\x11successful_builds\x18\x02 \x01(\x05R\x10successfulBuilds\x12#\n" + + "\rfailed_builds\x18\x03 \x01(\x05R\ffailedBuilds\x12)\n" + + "\x11avg_build_time_ms\x18\x04 \x01(\x03R\x0eavgBuildTimeMs\x12.\n" + + "\x13total_storage_bytes\x18\x05 \x01(\x03R\x11totalStorageBytes\x122\n" + + "\x15total_compute_minutes\x18\x06 \x01(\x03R\x13totalComputeMinutes\x129\n" + + "\rrecent_builds\x18\a \x03(\v2\x14.builder.v1.BuildJobR\frecentBuilds*\x95\x02\n" + + "\n" + + "BuildState\x12\x1b\n" + + "\x17BUILD_STATE_UNSPECIFIED\x10\x00\x12\x17\n" + + "\x13BUILD_STATE_PENDING\x10\x01\x12\x17\n" + + "\x13BUILD_STATE_PULLING\x10\x02\x12\x1a\n" + + "\x16BUILD_STATE_EXTRACTING\x10\x03\x12\x18\n" + + "\x14BUILD_STATE_BUILDING\x10\x04\x12\x1a\n" + + "\x16BUILD_STATE_OPTIMIZING\x10\x05\x12\x19\n" + + "\x15BUILD_STATE_COMPLETED\x10\x06\x12\x16\n" + + "\x12BUILD_STATE_FAILED\x10\a\x12\x19\n" + + "\x15BUILD_STATE_CANCELLED\x10\b\x12\x18\n" + + "\x14BUILD_STATE_CLEANING\x10\t*\x8b\x01\n" + + "\n" + + "TenantTier\x12\x1b\n" + + "\x17TENANT_TIER_UNSPECIFIED\x10\x00\x12\x14\n" + + "\x10TENANT_TIER_FREE\x10\x01\x12\x13\n" + + "\x0fTENANT_TIER_PRO\x10\x02\x12\x1a\n" + + "\x16TENANT_TIER_ENTERPRISE\x10\x03\x12\x19\n" + + "\x15TENANT_TIER_DEDICATED\x10\x04*y\n" + + "\fInitStrategy\x12\x1d\n" + + "\x19INIT_STRATEGY_UNSPECIFIED\x10\x00\x12\x16\n" + + "\x12INIT_STRATEGY_TINI\x10\x01\x12\x18\n" + + "\x14INIT_STRATEGY_DIRECT\x10\x02\x12\x18\n" + + "\x14INIT_STRATEGY_CUSTOM\x10\x032\xa4\x05\n" + + "\x0eBuilderService\x12N\n" + + "\vCreateBuild\x12\x1e.builder.v1.CreateBuildRequest\x1a\x1f.builder.v1.CreateBuildResponse\x12E\n" + + "\bGetBuild\x12\x1b.builder.v1.GetBuildRequest\x1a\x1c.builder.v1.GetBuildResponse\x12K\n" + + "\n" + + "ListBuilds\x12\x1d.builder.v1.ListBuildsRequest\x1a\x1e.builder.v1.ListBuildsResponse\x12N\n" + + "\vCancelBuild\x12\x1e.builder.v1.CancelBuildRequest\x1a\x1f.builder.v1.CancelBuildResponse\x12N\n" + + "\vDeleteBuild\x12\x1e.builder.v1.DeleteBuildRequest\x1a\x1f.builder.v1.DeleteBuildResponse\x12\\\n" + + "\x0fStreamBuildLogs\x12\".builder.v1.StreamBuildLogsRequest\x1a#.builder.v1.StreamBuildLogsResponse0\x01\x12Z\n" + + "\x0fGetTenantQuotas\x12\".builder.v1.GetTenantQuotasRequest\x1a#.builder.v1.GetTenantQuotasResponse\x12T\n" + + "\rGetBuildStats\x12 .builder.v1.GetBuildStatsRequest\x1a!.builder.v1.GetBuildStatsResponseBFZDgithub.com/unkeyed/unkey/go/deploy/builderd/gen/builder/v1;builderv1b\x06proto3" + +var ( + file_deploy_builderd_proto_builder_v1_builder_proto_rawDescOnce sync.Once + file_deploy_builderd_proto_builder_v1_builder_proto_rawDescData []byte +) + +func file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP() []byte { + file_deploy_builderd_proto_builder_v1_builder_proto_rawDescOnce.Do(func() { + file_deploy_builderd_proto_builder_v1_builder_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_deploy_builderd_proto_builder_v1_builder_proto_rawDesc), len(file_deploy_builderd_proto_builder_v1_builder_proto_rawDesc))) + }) + return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescData +} + +var file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes = make([]protoimpl.MessageInfo, 48) +var file_deploy_builderd_proto_builder_v1_builder_proto_goTypes = []any{ + (BuildState)(0), // 0: builder.v1.BuildState + (TenantTier)(0), // 1: builder.v1.TenantTier + (InitStrategy)(0), // 2: builder.v1.InitStrategy + (*TenantContext)(nil), // 3: builder.v1.TenantContext + (*BuildSource)(nil), // 4: builder.v1.BuildSource + (*DockerImageSource)(nil), // 5: builder.v1.DockerImageSource + (*DockerAuth)(nil), // 6: builder.v1.DockerAuth + (*GitRepositorySource)(nil), // 7: builder.v1.GitRepositorySource + (*GitAuth)(nil), // 8: builder.v1.GitAuth + (*ArchiveSource)(nil), // 9: builder.v1.ArchiveSource + (*BuildTarget)(nil), // 10: builder.v1.BuildTarget + (*MicroVMRootfs)(nil), // 11: builder.v1.MicroVMRootfs + (*ContainerImage)(nil), // 12: builder.v1.ContainerImage + (*RuntimeConfig)(nil), // 13: builder.v1.RuntimeConfig + (*OptimizationSettings)(nil), // 14: builder.v1.OptimizationSettings + (*BuildStrategy)(nil), // 15: builder.v1.BuildStrategy + (*DockerExtractStrategy)(nil), // 16: builder.v1.DockerExtractStrategy + (*GoApiStrategy)(nil), // 17: builder.v1.GoApiStrategy + (*SinatraStrategy)(nil), // 18: builder.v1.SinatraStrategy + (*NodejsStrategy)(nil), // 19: builder.v1.NodejsStrategy + (*TenantResourceLimits)(nil), // 20: builder.v1.TenantResourceLimits + (*BuildConfig)(nil), // 21: builder.v1.BuildConfig + (*BuildIsolation)(nil), // 22: builder.v1.BuildIsolation + (*ImageMetadata)(nil), // 23: builder.v1.ImageMetadata + (*BuildMetrics)(nil), // 24: builder.v1.BuildMetrics + (*BuildJob)(nil), // 25: builder.v1.BuildJob + (*StreamBuildLogsResponse)(nil), // 26: builder.v1.StreamBuildLogsResponse + (*TenantUsageStats)(nil), // 27: builder.v1.TenantUsageStats + (*QuotaViolation)(nil), // 28: builder.v1.QuotaViolation + (*CreateBuildRequest)(nil), // 29: builder.v1.CreateBuildRequest + (*CreateBuildResponse)(nil), // 30: builder.v1.CreateBuildResponse + (*GetBuildRequest)(nil), // 31: builder.v1.GetBuildRequest + (*GetBuildResponse)(nil), // 32: builder.v1.GetBuildResponse + (*ListBuildsRequest)(nil), // 33: builder.v1.ListBuildsRequest + (*ListBuildsResponse)(nil), // 34: builder.v1.ListBuildsResponse + (*CancelBuildRequest)(nil), // 35: builder.v1.CancelBuildRequest + (*CancelBuildResponse)(nil), // 36: builder.v1.CancelBuildResponse + (*DeleteBuildRequest)(nil), // 37: builder.v1.DeleteBuildRequest + (*DeleteBuildResponse)(nil), // 38: builder.v1.DeleteBuildResponse + (*StreamBuildLogsRequest)(nil), // 39: builder.v1.StreamBuildLogsRequest + (*GetTenantQuotasRequest)(nil), // 40: builder.v1.GetTenantQuotasRequest + (*GetTenantQuotasResponse)(nil), // 41: builder.v1.GetTenantQuotasResponse + (*GetBuildStatsRequest)(nil), // 42: builder.v1.GetBuildStatsRequest + (*GetBuildStatsResponse)(nil), // 43: builder.v1.GetBuildStatsResponse + nil, // 44: builder.v1.TenantContext.MetadataEntry + nil, // 45: builder.v1.RuntimeConfig.EnvironmentEntry + nil, // 46: builder.v1.SinatraStrategy.RackConfigEntry + nil, // 47: builder.v1.BuildConfig.LabelsEntry + nil, // 48: builder.v1.ImageMetadata.LabelsEntry + nil, // 49: builder.v1.ImageMetadata.EnvEntry + nil, // 50: builder.v1.StreamBuildLogsResponse.MetadataEntry + (*timestamppb.Timestamp)(nil), // 51: google.protobuf.Timestamp +} +var file_deploy_builderd_proto_builder_v1_builder_proto_depIdxs = []int32{ + 1, // 0: builder.v1.TenantContext.tier:type_name -> builder.v1.TenantTier + 44, // 1: builder.v1.TenantContext.metadata:type_name -> builder.v1.TenantContext.MetadataEntry + 5, // 2: builder.v1.BuildSource.docker_image:type_name -> builder.v1.DockerImageSource + 7, // 3: builder.v1.BuildSource.git_repository:type_name -> builder.v1.GitRepositorySource + 9, // 4: builder.v1.BuildSource.archive:type_name -> builder.v1.ArchiveSource + 6, // 5: builder.v1.DockerImageSource.auth:type_name -> builder.v1.DockerAuth + 8, // 6: builder.v1.GitRepositorySource.auth:type_name -> builder.v1.GitAuth + 11, // 7: builder.v1.BuildTarget.microvm_rootfs:type_name -> builder.v1.MicroVMRootfs + 12, // 8: builder.v1.BuildTarget.container_image:type_name -> builder.v1.ContainerImage + 2, // 9: builder.v1.MicroVMRootfs.init_strategy:type_name -> builder.v1.InitStrategy + 13, // 10: builder.v1.MicroVMRootfs.runtime_config:type_name -> builder.v1.RuntimeConfig + 14, // 11: builder.v1.MicroVMRootfs.optimization:type_name -> builder.v1.OptimizationSettings + 45, // 12: builder.v1.RuntimeConfig.environment:type_name -> builder.v1.RuntimeConfig.EnvironmentEntry + 16, // 13: builder.v1.BuildStrategy.docker_extract:type_name -> builder.v1.DockerExtractStrategy + 17, // 14: builder.v1.BuildStrategy.go_api:type_name -> builder.v1.GoApiStrategy + 18, // 15: builder.v1.BuildStrategy.sinatra:type_name -> builder.v1.SinatraStrategy + 19, // 16: builder.v1.BuildStrategy.nodejs:type_name -> builder.v1.NodejsStrategy + 46, // 17: builder.v1.SinatraStrategy.rack_config:type_name -> builder.v1.SinatraStrategy.RackConfigEntry + 3, // 18: builder.v1.BuildConfig.tenant:type_name -> builder.v1.TenantContext + 4, // 19: builder.v1.BuildConfig.source:type_name -> builder.v1.BuildSource + 10, // 20: builder.v1.BuildConfig.target:type_name -> builder.v1.BuildTarget + 15, // 21: builder.v1.BuildConfig.strategy:type_name -> builder.v1.BuildStrategy + 20, // 22: builder.v1.BuildConfig.limits:type_name -> builder.v1.TenantResourceLimits + 47, // 23: builder.v1.BuildConfig.labels:type_name -> builder.v1.BuildConfig.LabelsEntry + 48, // 24: builder.v1.ImageMetadata.labels:type_name -> builder.v1.ImageMetadata.LabelsEntry + 49, // 25: builder.v1.ImageMetadata.env:type_name -> builder.v1.ImageMetadata.EnvEntry + 21, // 26: builder.v1.BuildJob.config:type_name -> builder.v1.BuildConfig + 0, // 27: builder.v1.BuildJob.state:type_name -> builder.v1.BuildState + 51, // 28: builder.v1.BuildJob.created_at:type_name -> google.protobuf.Timestamp + 51, // 29: builder.v1.BuildJob.started_at:type_name -> google.protobuf.Timestamp + 51, // 30: builder.v1.BuildJob.completed_at:type_name -> google.protobuf.Timestamp + 23, // 31: builder.v1.BuildJob.image_metadata:type_name -> builder.v1.ImageMetadata + 24, // 32: builder.v1.BuildJob.metrics:type_name -> builder.v1.BuildMetrics + 22, // 33: builder.v1.BuildJob.isolation:type_name -> builder.v1.BuildIsolation + 51, // 34: builder.v1.StreamBuildLogsResponse.timestamp:type_name -> google.protobuf.Timestamp + 50, // 35: builder.v1.StreamBuildLogsResponse.metadata:type_name -> builder.v1.StreamBuildLogsResponse.MetadataEntry + 21, // 36: builder.v1.CreateBuildRequest.config:type_name -> builder.v1.BuildConfig + 0, // 37: builder.v1.CreateBuildResponse.state:type_name -> builder.v1.BuildState + 51, // 38: builder.v1.CreateBuildResponse.created_at:type_name -> google.protobuf.Timestamp + 25, // 39: builder.v1.GetBuildResponse.build:type_name -> builder.v1.BuildJob + 0, // 40: builder.v1.ListBuildsRequest.state_filter:type_name -> builder.v1.BuildState + 25, // 41: builder.v1.ListBuildsResponse.builds:type_name -> builder.v1.BuildJob + 0, // 42: builder.v1.CancelBuildResponse.state:type_name -> builder.v1.BuildState + 20, // 43: builder.v1.GetTenantQuotasResponse.current_limits:type_name -> builder.v1.TenantResourceLimits + 27, // 44: builder.v1.GetTenantQuotasResponse.current_usage:type_name -> builder.v1.TenantUsageStats + 28, // 45: builder.v1.GetTenantQuotasResponse.violations:type_name -> builder.v1.QuotaViolation + 51, // 46: builder.v1.GetBuildStatsRequest.start_time:type_name -> google.protobuf.Timestamp + 51, // 47: builder.v1.GetBuildStatsRequest.end_time:type_name -> google.protobuf.Timestamp + 25, // 48: builder.v1.GetBuildStatsResponse.recent_builds:type_name -> builder.v1.BuildJob + 29, // 49: builder.v1.BuilderService.CreateBuild:input_type -> builder.v1.CreateBuildRequest + 31, // 50: builder.v1.BuilderService.GetBuild:input_type -> builder.v1.GetBuildRequest + 33, // 51: builder.v1.BuilderService.ListBuilds:input_type -> builder.v1.ListBuildsRequest + 35, // 52: builder.v1.BuilderService.CancelBuild:input_type -> builder.v1.CancelBuildRequest + 37, // 53: builder.v1.BuilderService.DeleteBuild:input_type -> builder.v1.DeleteBuildRequest + 39, // 54: builder.v1.BuilderService.StreamBuildLogs:input_type -> builder.v1.StreamBuildLogsRequest + 40, // 55: builder.v1.BuilderService.GetTenantQuotas:input_type -> builder.v1.GetTenantQuotasRequest + 42, // 56: builder.v1.BuilderService.GetBuildStats:input_type -> builder.v1.GetBuildStatsRequest + 30, // 57: builder.v1.BuilderService.CreateBuild:output_type -> builder.v1.CreateBuildResponse + 32, // 58: builder.v1.BuilderService.GetBuild:output_type -> builder.v1.GetBuildResponse + 34, // 59: builder.v1.BuilderService.ListBuilds:output_type -> builder.v1.ListBuildsResponse + 36, // 60: builder.v1.BuilderService.CancelBuild:output_type -> builder.v1.CancelBuildResponse + 38, // 61: builder.v1.BuilderService.DeleteBuild:output_type -> builder.v1.DeleteBuildResponse + 26, // 62: builder.v1.BuilderService.StreamBuildLogs:output_type -> builder.v1.StreamBuildLogsResponse + 41, // 63: builder.v1.BuilderService.GetTenantQuotas:output_type -> builder.v1.GetTenantQuotasResponse + 43, // 64: builder.v1.BuilderService.GetBuildStats:output_type -> builder.v1.GetBuildStatsResponse + 57, // [57:65] is the sub-list for method output_type + 49, // [49:57] is the sub-list for method input_type + 49, // [49:49] is the sub-list for extension type_name + 49, // [49:49] is the sub-list for extension extendee + 0, // [0:49] is the sub-list for field type_name +} + +func init() { file_deploy_builderd_proto_builder_v1_builder_proto_init() } +func file_deploy_builderd_proto_builder_v1_builder_proto_init() { + if File_deploy_builderd_proto_builder_v1_builder_proto != nil { + return + } + file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[1].OneofWrappers = []any{ + (*BuildSource_DockerImage)(nil), + (*BuildSource_GitRepository)(nil), + (*BuildSource_Archive)(nil), + } + file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[7].OneofWrappers = []any{ + (*BuildTarget_MicrovmRootfs)(nil), + (*BuildTarget_ContainerImage)(nil), + } + file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[12].OneofWrappers = []any{ + (*BuildStrategy_DockerExtract)(nil), + (*BuildStrategy_GoApi)(nil), + (*BuildStrategy_Sinatra)(nil), + (*BuildStrategy_Nodejs)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_deploy_builderd_proto_builder_v1_builder_proto_rawDesc), len(file_deploy_builderd_proto_builder_v1_builder_proto_rawDesc)), + NumEnums: 3, + NumMessages: 48, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_deploy_builderd_proto_builder_v1_builder_proto_goTypes, + DependencyIndexes: file_deploy_builderd_proto_builder_v1_builder_proto_depIdxs, + EnumInfos: file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes, + MessageInfos: file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes, + }.Build() + File_deploy_builderd_proto_builder_v1_builder_proto = out.File + file_deploy_builderd_proto_builder_v1_builder_proto_goTypes = nil + file_deploy_builderd_proto_builder_v1_builder_proto_depIdxs = nil +} diff --git a/go/gen/deploy/builderd/proto/builder/v1/builderv1connect/builder.connect.go b/go/gen/deploy/builderd/proto/builder/v1/builderv1connect/builder.connect.go new file mode 100644 index 0000000000..b317edf9c8 --- /dev/null +++ b/go/gen/deploy/builderd/proto/builder/v1/builderv1connect/builder.connect.go @@ -0,0 +1,338 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: deploy/builderd/proto/builder/v1/builder.proto + +package builderv1connect + +import ( + connect "connectrpc.com/connect" + context "context" + errors "errors" + v1 "github.com/unkeyed/unkey/go/deploy/builderd/gen/builder/v1" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // BuilderServiceName is the fully-qualified name of the BuilderService service. + BuilderServiceName = "builder.v1.BuilderService" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // BuilderServiceCreateBuildProcedure is the fully-qualified name of the BuilderService's + // CreateBuild RPC. + BuilderServiceCreateBuildProcedure = "/builder.v1.BuilderService/CreateBuild" + // BuilderServiceGetBuildProcedure is the fully-qualified name of the BuilderService's GetBuild RPC. + BuilderServiceGetBuildProcedure = "/builder.v1.BuilderService/GetBuild" + // BuilderServiceListBuildsProcedure is the fully-qualified name of the BuilderService's ListBuilds + // RPC. + BuilderServiceListBuildsProcedure = "/builder.v1.BuilderService/ListBuilds" + // BuilderServiceCancelBuildProcedure is the fully-qualified name of the BuilderService's + // CancelBuild RPC. + BuilderServiceCancelBuildProcedure = "/builder.v1.BuilderService/CancelBuild" + // BuilderServiceDeleteBuildProcedure is the fully-qualified name of the BuilderService's + // DeleteBuild RPC. + BuilderServiceDeleteBuildProcedure = "/builder.v1.BuilderService/DeleteBuild" + // BuilderServiceStreamBuildLogsProcedure is the fully-qualified name of the BuilderService's + // StreamBuildLogs RPC. + BuilderServiceStreamBuildLogsProcedure = "/builder.v1.BuilderService/StreamBuildLogs" + // BuilderServiceGetTenantQuotasProcedure is the fully-qualified name of the BuilderService's + // GetTenantQuotas RPC. + BuilderServiceGetTenantQuotasProcedure = "/builder.v1.BuilderService/GetTenantQuotas" + // BuilderServiceGetBuildStatsProcedure is the fully-qualified name of the BuilderService's + // GetBuildStats RPC. + BuilderServiceGetBuildStatsProcedure = "/builder.v1.BuilderService/GetBuildStats" +) + +// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. +var ( + builderServiceServiceDescriptor = v1.File_deploy_builderd_proto_builder_v1_builder_proto.Services().ByName("BuilderService") + builderServiceCreateBuildMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("CreateBuild") + builderServiceGetBuildMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("GetBuild") + builderServiceListBuildsMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("ListBuilds") + builderServiceCancelBuildMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("CancelBuild") + builderServiceDeleteBuildMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("DeleteBuild") + builderServiceStreamBuildLogsMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("StreamBuildLogs") + builderServiceGetTenantQuotasMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("GetTenantQuotas") + builderServiceGetBuildStatsMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("GetBuildStats") +) + +// BuilderServiceClient is a client for the builder.v1.BuilderService service. +type BuilderServiceClient interface { + // Create a new build job + CreateBuild(context.Context, *connect.Request[v1.CreateBuildRequest]) (*connect.Response[v1.CreateBuildResponse], error) + // Get build status and progress + GetBuild(context.Context, *connect.Request[v1.GetBuildRequest]) (*connect.Response[v1.GetBuildResponse], error) + // List builds with filtering (tenant-scoped) + ListBuilds(context.Context, *connect.Request[v1.ListBuildsRequest]) (*connect.Response[v1.ListBuildsResponse], error) + // Cancel a running build + CancelBuild(context.Context, *connect.Request[v1.CancelBuildRequest]) (*connect.Response[v1.CancelBuildResponse], error) + // Delete a build and its artifacts + DeleteBuild(context.Context, *connect.Request[v1.DeleteBuildRequest]) (*connect.Response[v1.DeleteBuildResponse], error) + // Stream build logs in real-time + StreamBuildLogs(context.Context, *connect.Request[v1.StreamBuildLogsRequest]) (*connect.ServerStreamForClient[v1.StreamBuildLogsResponse], error) + // Get tenant quotas and usage + GetTenantQuotas(context.Context, *connect.Request[v1.GetTenantQuotasRequest]) (*connect.Response[v1.GetTenantQuotasResponse], error) + // Get build statistics + GetBuildStats(context.Context, *connect.Request[v1.GetBuildStatsRequest]) (*connect.Response[v1.GetBuildStatsResponse], error) +} + +// NewBuilderServiceClient constructs a client for the builder.v1.BuilderService service. By +// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, +// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the +// connect.WithGRPC() or connect.WithGRPCWeb() options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewBuilderServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) BuilderServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + return &builderServiceClient{ + createBuild: connect.NewClient[v1.CreateBuildRequest, v1.CreateBuildResponse]( + httpClient, + baseURL+BuilderServiceCreateBuildProcedure, + connect.WithSchema(builderServiceCreateBuildMethodDescriptor), + connect.WithClientOptions(opts...), + ), + getBuild: connect.NewClient[v1.GetBuildRequest, v1.GetBuildResponse]( + httpClient, + baseURL+BuilderServiceGetBuildProcedure, + connect.WithSchema(builderServiceGetBuildMethodDescriptor), + connect.WithClientOptions(opts...), + ), + listBuilds: connect.NewClient[v1.ListBuildsRequest, v1.ListBuildsResponse]( + httpClient, + baseURL+BuilderServiceListBuildsProcedure, + connect.WithSchema(builderServiceListBuildsMethodDescriptor), + connect.WithClientOptions(opts...), + ), + cancelBuild: connect.NewClient[v1.CancelBuildRequest, v1.CancelBuildResponse]( + httpClient, + baseURL+BuilderServiceCancelBuildProcedure, + connect.WithSchema(builderServiceCancelBuildMethodDescriptor), + connect.WithClientOptions(opts...), + ), + deleteBuild: connect.NewClient[v1.DeleteBuildRequest, v1.DeleteBuildResponse]( + httpClient, + baseURL+BuilderServiceDeleteBuildProcedure, + connect.WithSchema(builderServiceDeleteBuildMethodDescriptor), + connect.WithClientOptions(opts...), + ), + streamBuildLogs: connect.NewClient[v1.StreamBuildLogsRequest, v1.StreamBuildLogsResponse]( + httpClient, + baseURL+BuilderServiceStreamBuildLogsProcedure, + connect.WithSchema(builderServiceStreamBuildLogsMethodDescriptor), + connect.WithClientOptions(opts...), + ), + getTenantQuotas: connect.NewClient[v1.GetTenantQuotasRequest, v1.GetTenantQuotasResponse]( + httpClient, + baseURL+BuilderServiceGetTenantQuotasProcedure, + connect.WithSchema(builderServiceGetTenantQuotasMethodDescriptor), + connect.WithClientOptions(opts...), + ), + getBuildStats: connect.NewClient[v1.GetBuildStatsRequest, v1.GetBuildStatsResponse]( + httpClient, + baseURL+BuilderServiceGetBuildStatsProcedure, + connect.WithSchema(builderServiceGetBuildStatsMethodDescriptor), + connect.WithClientOptions(opts...), + ), + } +} + +// builderServiceClient implements BuilderServiceClient. +type builderServiceClient struct { + createBuild *connect.Client[v1.CreateBuildRequest, v1.CreateBuildResponse] + getBuild *connect.Client[v1.GetBuildRequest, v1.GetBuildResponse] + listBuilds *connect.Client[v1.ListBuildsRequest, v1.ListBuildsResponse] + cancelBuild *connect.Client[v1.CancelBuildRequest, v1.CancelBuildResponse] + deleteBuild *connect.Client[v1.DeleteBuildRequest, v1.DeleteBuildResponse] + streamBuildLogs *connect.Client[v1.StreamBuildLogsRequest, v1.StreamBuildLogsResponse] + getTenantQuotas *connect.Client[v1.GetTenantQuotasRequest, v1.GetTenantQuotasResponse] + getBuildStats *connect.Client[v1.GetBuildStatsRequest, v1.GetBuildStatsResponse] +} + +// CreateBuild calls builder.v1.BuilderService.CreateBuild. +func (c *builderServiceClient) CreateBuild(ctx context.Context, req *connect.Request[v1.CreateBuildRequest]) (*connect.Response[v1.CreateBuildResponse], error) { + return c.createBuild.CallUnary(ctx, req) +} + +// GetBuild calls builder.v1.BuilderService.GetBuild. +func (c *builderServiceClient) GetBuild(ctx context.Context, req *connect.Request[v1.GetBuildRequest]) (*connect.Response[v1.GetBuildResponse], error) { + return c.getBuild.CallUnary(ctx, req) +} + +// ListBuilds calls builder.v1.BuilderService.ListBuilds. +func (c *builderServiceClient) ListBuilds(ctx context.Context, req *connect.Request[v1.ListBuildsRequest]) (*connect.Response[v1.ListBuildsResponse], error) { + return c.listBuilds.CallUnary(ctx, req) +} + +// CancelBuild calls builder.v1.BuilderService.CancelBuild. +func (c *builderServiceClient) CancelBuild(ctx context.Context, req *connect.Request[v1.CancelBuildRequest]) (*connect.Response[v1.CancelBuildResponse], error) { + return c.cancelBuild.CallUnary(ctx, req) +} + +// DeleteBuild calls builder.v1.BuilderService.DeleteBuild. +func (c *builderServiceClient) DeleteBuild(ctx context.Context, req *connect.Request[v1.DeleteBuildRequest]) (*connect.Response[v1.DeleteBuildResponse], error) { + return c.deleteBuild.CallUnary(ctx, req) +} + +// StreamBuildLogs calls builder.v1.BuilderService.StreamBuildLogs. +func (c *builderServiceClient) StreamBuildLogs(ctx context.Context, req *connect.Request[v1.StreamBuildLogsRequest]) (*connect.ServerStreamForClient[v1.StreamBuildLogsResponse], error) { + return c.streamBuildLogs.CallServerStream(ctx, req) +} + +// GetTenantQuotas calls builder.v1.BuilderService.GetTenantQuotas. +func (c *builderServiceClient) GetTenantQuotas(ctx context.Context, req *connect.Request[v1.GetTenantQuotasRequest]) (*connect.Response[v1.GetTenantQuotasResponse], error) { + return c.getTenantQuotas.CallUnary(ctx, req) +} + +// GetBuildStats calls builder.v1.BuilderService.GetBuildStats. +func (c *builderServiceClient) GetBuildStats(ctx context.Context, req *connect.Request[v1.GetBuildStatsRequest]) (*connect.Response[v1.GetBuildStatsResponse], error) { + return c.getBuildStats.CallUnary(ctx, req) +} + +// BuilderServiceHandler is an implementation of the builder.v1.BuilderService service. +type BuilderServiceHandler interface { + // Create a new build job + CreateBuild(context.Context, *connect.Request[v1.CreateBuildRequest]) (*connect.Response[v1.CreateBuildResponse], error) + // Get build status and progress + GetBuild(context.Context, *connect.Request[v1.GetBuildRequest]) (*connect.Response[v1.GetBuildResponse], error) + // List builds with filtering (tenant-scoped) + ListBuilds(context.Context, *connect.Request[v1.ListBuildsRequest]) (*connect.Response[v1.ListBuildsResponse], error) + // Cancel a running build + CancelBuild(context.Context, *connect.Request[v1.CancelBuildRequest]) (*connect.Response[v1.CancelBuildResponse], error) + // Delete a build and its artifacts + DeleteBuild(context.Context, *connect.Request[v1.DeleteBuildRequest]) (*connect.Response[v1.DeleteBuildResponse], error) + // Stream build logs in real-time + StreamBuildLogs(context.Context, *connect.Request[v1.StreamBuildLogsRequest], *connect.ServerStream[v1.StreamBuildLogsResponse]) error + // Get tenant quotas and usage + GetTenantQuotas(context.Context, *connect.Request[v1.GetTenantQuotasRequest]) (*connect.Response[v1.GetTenantQuotasResponse], error) + // Get build statistics + GetBuildStats(context.Context, *connect.Request[v1.GetBuildStatsRequest]) (*connect.Response[v1.GetBuildStatsResponse], error) +} + +// NewBuilderServiceHandler builds an HTTP handler from the service implementation. It returns the +// path on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewBuilderServiceHandler(svc BuilderServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + builderServiceCreateBuildHandler := connect.NewUnaryHandler( + BuilderServiceCreateBuildProcedure, + svc.CreateBuild, + connect.WithSchema(builderServiceCreateBuildMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + builderServiceGetBuildHandler := connect.NewUnaryHandler( + BuilderServiceGetBuildProcedure, + svc.GetBuild, + connect.WithSchema(builderServiceGetBuildMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + builderServiceListBuildsHandler := connect.NewUnaryHandler( + BuilderServiceListBuildsProcedure, + svc.ListBuilds, + connect.WithSchema(builderServiceListBuildsMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + builderServiceCancelBuildHandler := connect.NewUnaryHandler( + BuilderServiceCancelBuildProcedure, + svc.CancelBuild, + connect.WithSchema(builderServiceCancelBuildMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + builderServiceDeleteBuildHandler := connect.NewUnaryHandler( + BuilderServiceDeleteBuildProcedure, + svc.DeleteBuild, + connect.WithSchema(builderServiceDeleteBuildMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + builderServiceStreamBuildLogsHandler := connect.NewServerStreamHandler( + BuilderServiceStreamBuildLogsProcedure, + svc.StreamBuildLogs, + connect.WithSchema(builderServiceStreamBuildLogsMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + builderServiceGetTenantQuotasHandler := connect.NewUnaryHandler( + BuilderServiceGetTenantQuotasProcedure, + svc.GetTenantQuotas, + connect.WithSchema(builderServiceGetTenantQuotasMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + builderServiceGetBuildStatsHandler := connect.NewUnaryHandler( + BuilderServiceGetBuildStatsProcedure, + svc.GetBuildStats, + connect.WithSchema(builderServiceGetBuildStatsMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + return "/builder.v1.BuilderService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case BuilderServiceCreateBuildProcedure: + builderServiceCreateBuildHandler.ServeHTTP(w, r) + case BuilderServiceGetBuildProcedure: + builderServiceGetBuildHandler.ServeHTTP(w, r) + case BuilderServiceListBuildsProcedure: + builderServiceListBuildsHandler.ServeHTTP(w, r) + case BuilderServiceCancelBuildProcedure: + builderServiceCancelBuildHandler.ServeHTTP(w, r) + case BuilderServiceDeleteBuildProcedure: + builderServiceDeleteBuildHandler.ServeHTTP(w, r) + case BuilderServiceStreamBuildLogsProcedure: + builderServiceStreamBuildLogsHandler.ServeHTTP(w, r) + case BuilderServiceGetTenantQuotasProcedure: + builderServiceGetTenantQuotasHandler.ServeHTTP(w, r) + case BuilderServiceGetBuildStatsProcedure: + builderServiceGetBuildStatsHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedBuilderServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedBuilderServiceHandler struct{} + +func (UnimplementedBuilderServiceHandler) CreateBuild(context.Context, *connect.Request[v1.CreateBuildRequest]) (*connect.Response[v1.CreateBuildResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.CreateBuild is not implemented")) +} + +func (UnimplementedBuilderServiceHandler) GetBuild(context.Context, *connect.Request[v1.GetBuildRequest]) (*connect.Response[v1.GetBuildResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.GetBuild is not implemented")) +} + +func (UnimplementedBuilderServiceHandler) ListBuilds(context.Context, *connect.Request[v1.ListBuildsRequest]) (*connect.Response[v1.ListBuildsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.ListBuilds is not implemented")) +} + +func (UnimplementedBuilderServiceHandler) CancelBuild(context.Context, *connect.Request[v1.CancelBuildRequest]) (*connect.Response[v1.CancelBuildResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.CancelBuild is not implemented")) +} + +func (UnimplementedBuilderServiceHandler) DeleteBuild(context.Context, *connect.Request[v1.DeleteBuildRequest]) (*connect.Response[v1.DeleteBuildResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.DeleteBuild is not implemented")) +} + +func (UnimplementedBuilderServiceHandler) StreamBuildLogs(context.Context, *connect.Request[v1.StreamBuildLogsRequest], *connect.ServerStream[v1.StreamBuildLogsResponse]) error { + return connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.StreamBuildLogs is not implemented")) +} + +func (UnimplementedBuilderServiceHandler) GetTenantQuotas(context.Context, *connect.Request[v1.GetTenantQuotasRequest]) (*connect.Response[v1.GetTenantQuotasResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.GetTenantQuotas is not implemented")) +} + +func (UnimplementedBuilderServiceHandler) GetBuildStats(context.Context, *connect.Request[v1.GetBuildStatsRequest]) (*connect.Response[v1.GetBuildStatsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.GetBuildStats is not implemented")) +} diff --git a/go/deploy/metald/gen/vmprovisioner/v1/vm.pb.go b/go/gen/deploy/metald/proto/vmprovisioner/v1/vm.pb.go similarity index 88% rename from go/deploy/metald/gen/vmprovisioner/v1/vm.pb.go rename to go/gen/deploy/metald/proto/vmprovisioner/v1/vm.pb.go index d88ecc763c..0c366e9041 100644 --- a/go/deploy/metald/gen/vmprovisioner/v1/vm.pb.go +++ b/go/gen/deploy/metald/proto/vmprovisioner/v1/vm.pb.go @@ -2,7 +2,7 @@ // versions: // protoc-gen-go v1.36.6 // protoc (unknown) -// source: vmprovisioner/v1/vm.proto +// source: deploy/metald/proto/vmprovisioner/v1/vm.proto package vmprovisionerv1 @@ -61,11 +61,11 @@ func (x VmState) String() string { } func (VmState) Descriptor() protoreflect.EnumDescriptor { - return file_vmprovisioner_v1_vm_proto_enumTypes[0].Descriptor() + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_enumTypes[0].Descriptor() } func (VmState) Type() protoreflect.EnumType { - return &file_vmprovisioner_v1_vm_proto_enumTypes[0] + return &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_enumTypes[0] } func (x VmState) Number() protoreflect.EnumNumber { @@ -74,7 +74,7 @@ func (x VmState) Number() protoreflect.EnumNumber { // Deprecated: Use VmState.Descriptor instead. func (VmState) EnumDescriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{0} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{0} } // Network mode for the interface @@ -114,11 +114,11 @@ func (x NetworkMode) String() string { } func (NetworkMode) Descriptor() protoreflect.EnumDescriptor { - return file_vmprovisioner_v1_vm_proto_enumTypes[1].Descriptor() + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_enumTypes[1].Descriptor() } func (NetworkMode) Type() protoreflect.EnumType { - return &file_vmprovisioner_v1_vm_proto_enumTypes[1] + return &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_enumTypes[1] } func (x NetworkMode) Number() protoreflect.EnumNumber { @@ -127,7 +127,7 @@ func (x NetworkMode) Number() protoreflect.EnumNumber { // Deprecated: Use NetworkMode.Descriptor instead. func (NetworkMode) EnumDescriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{1} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{1} } // Unified VM configuration that works across different hypervisors @@ -153,7 +153,7 @@ type VmConfig struct { func (x *VmConfig) Reset() { *x = VmConfig{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[0] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -165,7 +165,7 @@ func (x *VmConfig) String() string { func (*VmConfig) ProtoMessage() {} func (x *VmConfig) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[0] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -178,7 +178,7 @@ func (x *VmConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use VmConfig.ProtoReflect.Descriptor instead. func (*VmConfig) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{0} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{0} } func (x *VmConfig) GetCpu() *CpuConfig { @@ -246,7 +246,7 @@ type CpuConfig struct { func (x *CpuConfig) Reset() { *x = CpuConfig{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[1] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -258,7 +258,7 @@ func (x *CpuConfig) String() string { func (*CpuConfig) ProtoMessage() {} func (x *CpuConfig) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[1] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -271,7 +271,7 @@ func (x *CpuConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use CpuConfig.ProtoReflect.Descriptor instead. func (*CpuConfig) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{1} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{1} } func (x *CpuConfig) GetVcpuCount() int32 { @@ -313,7 +313,7 @@ type CpuTopology struct { func (x *CpuTopology) Reset() { *x = CpuTopology{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[2] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -325,7 +325,7 @@ func (x *CpuTopology) String() string { func (*CpuTopology) ProtoMessage() {} func (x *CpuTopology) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[2] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -338,7 +338,7 @@ func (x *CpuTopology) ProtoReflect() protoreflect.Message { // Deprecated: Use CpuTopology.ProtoReflect.Descriptor instead. func (*CpuTopology) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{2} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{2} } func (x *CpuTopology) GetSockets() int32 { @@ -378,7 +378,7 @@ type MemoryConfig struct { func (x *MemoryConfig) Reset() { *x = MemoryConfig{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[3] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -390,7 +390,7 @@ func (x *MemoryConfig) String() string { func (*MemoryConfig) ProtoMessage() {} func (x *MemoryConfig) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[3] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -403,7 +403,7 @@ func (x *MemoryConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use MemoryConfig.ProtoReflect.Descriptor instead. func (*MemoryConfig) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{3} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{3} } func (x *MemoryConfig) GetSizeBytes() int64 { @@ -450,7 +450,7 @@ type BootConfig struct { func (x *BootConfig) Reset() { *x = BootConfig{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[4] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -462,7 +462,7 @@ func (x *BootConfig) String() string { func (*BootConfig) ProtoMessage() {} func (x *BootConfig) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[4] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -475,7 +475,7 @@ func (x *BootConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use BootConfig.ProtoReflect.Descriptor instead. func (*BootConfig) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{4} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{4} } func (x *BootConfig) GetKernelPath() string { @@ -526,7 +526,7 @@ type StorageDevice struct { func (x *StorageDevice) Reset() { *x = StorageDevice{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[5] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -538,7 +538,7 @@ func (x *StorageDevice) String() string { func (*StorageDevice) ProtoMessage() {} func (x *StorageDevice) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[5] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -551,7 +551,7 @@ func (x *StorageDevice) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageDevice.ProtoReflect.Descriptor instead. func (*StorageDevice) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{5} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{5} } func (x *StorageDevice) GetId() string { @@ -623,7 +623,7 @@ type NetworkInterface struct { func (x *NetworkInterface) Reset() { *x = NetworkInterface{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[6] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -635,7 +635,7 @@ func (x *NetworkInterface) String() string { func (*NetworkInterface) ProtoMessage() {} func (x *NetworkInterface) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[6] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -648,7 +648,7 @@ func (x *NetworkInterface) ProtoReflect() protoreflect.Message { // Deprecated: Use NetworkInterface.ProtoReflect.Descriptor instead. func (*NetworkInterface) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{6} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{6} } func (x *NetworkInterface) GetId() string { @@ -735,7 +735,7 @@ type IPv4Config struct { func (x *IPv4Config) Reset() { *x = IPv4Config{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[7] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -747,7 +747,7 @@ func (x *IPv4Config) String() string { func (*IPv4Config) ProtoMessage() {} func (x *IPv4Config) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[7] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -760,7 +760,7 @@ func (x *IPv4Config) ProtoReflect() protoreflect.Message { // Deprecated: Use IPv4Config.ProtoReflect.Descriptor instead. func (*IPv4Config) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{7} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{7} } func (x *IPv4Config) GetAddress() string { @@ -814,7 +814,7 @@ type IPv6Config struct { func (x *IPv6Config) Reset() { *x = IPv6Config{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[8] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -826,7 +826,7 @@ func (x *IPv6Config) String() string { func (*IPv6Config) ProtoMessage() {} func (x *IPv6Config) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[8] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -839,7 +839,7 @@ func (x *IPv6Config) ProtoReflect() protoreflect.Message { // Deprecated: Use IPv6Config.ProtoReflect.Descriptor instead. func (*IPv6Config) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{8} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{8} } func (x *IPv6Config) GetAddress() string { @@ -903,7 +903,7 @@ type RateLimit struct { func (x *RateLimit) Reset() { *x = RateLimit{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[9] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -915,7 +915,7 @@ func (x *RateLimit) String() string { func (*RateLimit) ProtoMessage() {} func (x *RateLimit) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[9] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -928,7 +928,7 @@ func (x *RateLimit) ProtoReflect() protoreflect.Message { // Deprecated: Use RateLimit.ProtoReflect.Descriptor instead. func (*RateLimit) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{9} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{9} } func (x *RateLimit) GetBandwidth() int64 { @@ -968,7 +968,7 @@ type ConsoleConfig struct { func (x *ConsoleConfig) Reset() { *x = ConsoleConfig{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[10] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -980,7 +980,7 @@ func (x *ConsoleConfig) String() string { func (*ConsoleConfig) ProtoMessage() {} func (x *ConsoleConfig) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[10] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -993,7 +993,7 @@ func (x *ConsoleConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ConsoleConfig.ProtoReflect.Descriptor instead. func (*ConsoleConfig) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{10} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{10} } func (x *ConsoleConfig) GetEnabled() bool { @@ -1039,7 +1039,7 @@ type CreateVmRequest struct { func (x *CreateVmRequest) Reset() { *x = CreateVmRequest{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[11] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1051,7 +1051,7 @@ func (x *CreateVmRequest) String() string { func (*CreateVmRequest) ProtoMessage() {} func (x *CreateVmRequest) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[11] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1064,7 +1064,7 @@ func (x *CreateVmRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateVmRequest.ProtoReflect.Descriptor instead. func (*CreateVmRequest) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{11} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{11} } func (x *CreateVmRequest) GetVmId() string { @@ -1100,7 +1100,7 @@ type CreateVmResponse struct { func (x *CreateVmResponse) Reset() { *x = CreateVmResponse{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[12] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1112,7 +1112,7 @@ func (x *CreateVmResponse) String() string { func (*CreateVmResponse) ProtoMessage() {} func (x *CreateVmResponse) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[12] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1125,7 +1125,7 @@ func (x *CreateVmResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateVmResponse.ProtoReflect.Descriptor instead. func (*CreateVmResponse) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{12} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{12} } func (x *CreateVmResponse) GetVmId() string { @@ -1153,7 +1153,7 @@ type DeleteVmRequest struct { func (x *DeleteVmRequest) Reset() { *x = DeleteVmRequest{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[13] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1165,7 +1165,7 @@ func (x *DeleteVmRequest) String() string { func (*DeleteVmRequest) ProtoMessage() {} func (x *DeleteVmRequest) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[13] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1178,7 +1178,7 @@ func (x *DeleteVmRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteVmRequest.ProtoReflect.Descriptor instead. func (*DeleteVmRequest) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{13} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{13} } func (x *DeleteVmRequest) GetVmId() string { @@ -1204,7 +1204,7 @@ type DeleteVmResponse struct { func (x *DeleteVmResponse) Reset() { *x = DeleteVmResponse{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[14] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1216,7 +1216,7 @@ func (x *DeleteVmResponse) String() string { func (*DeleteVmResponse) ProtoMessage() {} func (x *DeleteVmResponse) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[14] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1229,7 +1229,7 @@ func (x *DeleteVmResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteVmResponse.ProtoReflect.Descriptor instead. func (*DeleteVmResponse) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{14} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{14} } func (x *DeleteVmResponse) GetSuccess() bool { @@ -1248,7 +1248,7 @@ type BootVmRequest struct { func (x *BootVmRequest) Reset() { *x = BootVmRequest{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[15] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1260,7 +1260,7 @@ func (x *BootVmRequest) String() string { func (*BootVmRequest) ProtoMessage() {} func (x *BootVmRequest) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[15] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1273,7 +1273,7 @@ func (x *BootVmRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BootVmRequest.ProtoReflect.Descriptor instead. func (*BootVmRequest) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{15} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{15} } func (x *BootVmRequest) GetVmId() string { @@ -1293,7 +1293,7 @@ type BootVmResponse struct { func (x *BootVmResponse) Reset() { *x = BootVmResponse{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[16] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1305,7 +1305,7 @@ func (x *BootVmResponse) String() string { func (*BootVmResponse) ProtoMessage() {} func (x *BootVmResponse) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[16] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1318,7 +1318,7 @@ func (x *BootVmResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BootVmResponse.ProtoReflect.Descriptor instead. func (*BootVmResponse) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{16} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{16} } func (x *BootVmResponse) GetSuccess() bool { @@ -1348,7 +1348,7 @@ type ShutdownVmRequest struct { func (x *ShutdownVmRequest) Reset() { *x = ShutdownVmRequest{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[17] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1360,7 +1360,7 @@ func (x *ShutdownVmRequest) String() string { func (*ShutdownVmRequest) ProtoMessage() {} func (x *ShutdownVmRequest) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[17] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1373,7 +1373,7 @@ func (x *ShutdownVmRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ShutdownVmRequest.ProtoReflect.Descriptor instead. func (*ShutdownVmRequest) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{17} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{17} } func (x *ShutdownVmRequest) GetVmId() string { @@ -1407,7 +1407,7 @@ type ShutdownVmResponse struct { func (x *ShutdownVmResponse) Reset() { *x = ShutdownVmResponse{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[18] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1419,7 +1419,7 @@ func (x *ShutdownVmResponse) String() string { func (*ShutdownVmResponse) ProtoMessage() {} func (x *ShutdownVmResponse) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[18] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1432,7 +1432,7 @@ func (x *ShutdownVmResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ShutdownVmResponse.ProtoReflect.Descriptor instead. func (*ShutdownVmResponse) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{18} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{18} } func (x *ShutdownVmResponse) GetSuccess() bool { @@ -1458,7 +1458,7 @@ type PauseVmRequest struct { func (x *PauseVmRequest) Reset() { *x = PauseVmRequest{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[19] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1470,7 +1470,7 @@ func (x *PauseVmRequest) String() string { func (*PauseVmRequest) ProtoMessage() {} func (x *PauseVmRequest) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[19] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1483,7 +1483,7 @@ func (x *PauseVmRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PauseVmRequest.ProtoReflect.Descriptor instead. func (*PauseVmRequest) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{19} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{19} } func (x *PauseVmRequest) GetVmId() string { @@ -1503,7 +1503,7 @@ type PauseVmResponse struct { func (x *PauseVmResponse) Reset() { *x = PauseVmResponse{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[20] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1515,7 +1515,7 @@ func (x *PauseVmResponse) String() string { func (*PauseVmResponse) ProtoMessage() {} func (x *PauseVmResponse) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[20] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1528,7 +1528,7 @@ func (x *PauseVmResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PauseVmResponse.ProtoReflect.Descriptor instead. func (*PauseVmResponse) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{20} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{20} } func (x *PauseVmResponse) GetSuccess() bool { @@ -1554,7 +1554,7 @@ type ResumeVmRequest struct { func (x *ResumeVmRequest) Reset() { *x = ResumeVmRequest{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[21] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1566,7 +1566,7 @@ func (x *ResumeVmRequest) String() string { func (*ResumeVmRequest) ProtoMessage() {} func (x *ResumeVmRequest) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[21] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1579,7 +1579,7 @@ func (x *ResumeVmRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ResumeVmRequest.ProtoReflect.Descriptor instead. func (*ResumeVmRequest) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{21} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{21} } func (x *ResumeVmRequest) GetVmId() string { @@ -1599,7 +1599,7 @@ type ResumeVmResponse struct { func (x *ResumeVmResponse) Reset() { *x = ResumeVmResponse{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[22] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1611,7 +1611,7 @@ func (x *ResumeVmResponse) String() string { func (*ResumeVmResponse) ProtoMessage() {} func (x *ResumeVmResponse) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[22] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1624,7 +1624,7 @@ func (x *ResumeVmResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ResumeVmResponse.ProtoReflect.Descriptor instead. func (*ResumeVmResponse) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{22} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{22} } func (x *ResumeVmResponse) GetSuccess() bool { @@ -1652,7 +1652,7 @@ type RebootVmRequest struct { func (x *RebootVmRequest) Reset() { *x = RebootVmRequest{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[23] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1664,7 +1664,7 @@ func (x *RebootVmRequest) String() string { func (*RebootVmRequest) ProtoMessage() {} func (x *RebootVmRequest) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[23] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1677,7 +1677,7 @@ func (x *RebootVmRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RebootVmRequest.ProtoReflect.Descriptor instead. func (*RebootVmRequest) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{23} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{23} } func (x *RebootVmRequest) GetVmId() string { @@ -1704,7 +1704,7 @@ type RebootVmResponse struct { func (x *RebootVmResponse) Reset() { *x = RebootVmResponse{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[24] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1716,7 +1716,7 @@ func (x *RebootVmResponse) String() string { func (*RebootVmResponse) ProtoMessage() {} func (x *RebootVmResponse) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[24] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1729,7 +1729,7 @@ func (x *RebootVmResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RebootVmResponse.ProtoReflect.Descriptor instead. func (*RebootVmResponse) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{24} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{24} } func (x *RebootVmResponse) GetSuccess() bool { @@ -1755,7 +1755,7 @@ type GetVmInfoRequest struct { func (x *GetVmInfoRequest) Reset() { *x = GetVmInfoRequest{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[25] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1767,7 +1767,7 @@ func (x *GetVmInfoRequest) String() string { func (*GetVmInfoRequest) ProtoMessage() {} func (x *GetVmInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[25] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1780,7 +1780,7 @@ func (x *GetVmInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVmInfoRequest.ProtoReflect.Descriptor instead. func (*GetVmInfoRequest) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{25} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{25} } func (x *GetVmInfoRequest) GetVmId() string { @@ -1806,7 +1806,7 @@ type GetVmInfoResponse struct { func (x *GetVmInfoResponse) Reset() { *x = GetVmInfoResponse{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[26] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1818,7 +1818,7 @@ func (x *GetVmInfoResponse) String() string { func (*GetVmInfoResponse) ProtoMessage() {} func (x *GetVmInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[26] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1831,7 +1831,7 @@ func (x *GetVmInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVmInfoResponse.ProtoReflect.Descriptor instead. func (*GetVmInfoResponse) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{26} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{26} } func (x *GetVmInfoResponse) GetVmId() string { @@ -1888,7 +1888,7 @@ type PortMapping struct { func (x *PortMapping) Reset() { *x = PortMapping{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[27] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1900,7 +1900,7 @@ func (x *PortMapping) String() string { func (*PortMapping) ProtoMessage() {} func (x *PortMapping) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[27] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1913,7 +1913,7 @@ func (x *PortMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use PortMapping.ProtoReflect.Descriptor instead. func (*PortMapping) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{27} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{27} } func (x *PortMapping) GetContainerPort() int32 { @@ -1953,7 +1953,7 @@ type VmNetworkInfo struct { func (x *VmNetworkInfo) Reset() { *x = VmNetworkInfo{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[28] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1965,7 +1965,7 @@ func (x *VmNetworkInfo) String() string { func (*VmNetworkInfo) ProtoMessage() {} func (x *VmNetworkInfo) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[28] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1978,7 +1978,7 @@ func (x *VmNetworkInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use VmNetworkInfo.ProtoReflect.Descriptor instead. func (*VmNetworkInfo) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{28} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{28} } func (x *VmNetworkInfo) GetIpAddress() string { @@ -2048,7 +2048,7 @@ type VmMetrics struct { func (x *VmMetrics) Reset() { *x = VmMetrics{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[29] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2060,7 +2060,7 @@ func (x *VmMetrics) String() string { func (*VmMetrics) ProtoMessage() {} func (x *VmMetrics) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[29] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2073,7 +2073,7 @@ func (x *VmMetrics) ProtoReflect() protoreflect.Message { // Deprecated: Use VmMetrics.ProtoReflect.Descriptor instead. func (*VmMetrics) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{29} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{29} } func (x *VmMetrics) GetCpuUsagePercent() float64 { @@ -2123,7 +2123,7 @@ type NetworkStats struct { func (x *NetworkStats) Reset() { *x = NetworkStats{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[30] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2135,7 +2135,7 @@ func (x *NetworkStats) String() string { func (*NetworkStats) ProtoMessage() {} func (x *NetworkStats) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[30] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2148,7 +2148,7 @@ func (x *NetworkStats) ProtoReflect() protoreflect.Message { // Deprecated: Use NetworkStats.ProtoReflect.Descriptor instead. func (*NetworkStats) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{30} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{30} } func (x *NetworkStats) GetBytesReceived() int64 { @@ -2191,7 +2191,7 @@ type StorageStats struct { func (x *StorageStats) Reset() { *x = StorageStats{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[31] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2203,7 +2203,7 @@ func (x *StorageStats) String() string { func (*StorageStats) ProtoMessage() {} func (x *StorageStats) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[31] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2216,7 +2216,7 @@ func (x *StorageStats) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageStats.ProtoReflect.Descriptor instead. func (*StorageStats) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{31} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{31} } func (x *StorageStats) GetBytesRead() int64 { @@ -2260,7 +2260,7 @@ type ListVmsRequest struct { func (x *ListVmsRequest) Reset() { *x = ListVmsRequest{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[32] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2272,7 +2272,7 @@ func (x *ListVmsRequest) String() string { func (*ListVmsRequest) ProtoMessage() {} func (x *ListVmsRequest) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[32] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2285,7 +2285,7 @@ func (x *ListVmsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListVmsRequest.ProtoReflect.Descriptor instead. func (*ListVmsRequest) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{32} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{32} } func (x *ListVmsRequest) GetStateFilter() []VmState { @@ -2320,7 +2320,7 @@ type ListVmsResponse struct { func (x *ListVmsResponse) Reset() { *x = ListVmsResponse{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[33] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2332,7 +2332,7 @@ func (x *ListVmsResponse) String() string { func (*ListVmsResponse) ProtoMessage() {} func (x *ListVmsResponse) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[33] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2345,7 +2345,7 @@ func (x *ListVmsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListVmsResponse.ProtoReflect.Descriptor instead. func (*ListVmsResponse) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{33} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{33} } func (x *ListVmsResponse) GetVms() []*VmInfo { @@ -2389,7 +2389,7 @@ type VmInfo struct { func (x *VmInfo) Reset() { *x = VmInfo{} - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[34] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2401,7 +2401,7 @@ func (x *VmInfo) String() string { func (*VmInfo) ProtoMessage() {} func (x *VmInfo) ProtoReflect() protoreflect.Message { - mi := &file_vmprovisioner_v1_vm_proto_msgTypes[34] + mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2414,7 +2414,7 @@ func (x *VmInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use VmInfo.ProtoReflect.Descriptor instead. func (*VmInfo) Descriptor() ([]byte, []int) { - return file_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{34} + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{34} } func (x *VmInfo) GetVmId() string { @@ -2473,11 +2473,11 @@ func (x *VmInfo) GetCustomerId() string { return "" } -var File_vmprovisioner_v1_vm_proto protoreflect.FileDescriptor +var File_deploy_metald_proto_vmprovisioner_v1_vm_proto protoreflect.FileDescriptor -const file_vmprovisioner_v1_vm_proto_rawDesc = "" + +const file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDesc = "" + "\n" + - "\x19vmprovisioner/v1/vm.proto\x12\x10vmprovisioner.v1\"\xda\x03\n" + + "-deploy/metald/proto/vmprovisioner/v1/vm.proto\x12\x10vmprovisioner.v1\"\xda\x03\n" + "\bVmConfig\x12-\n" + "\x03cpu\x18\x01 \x01(\v2\x1b.vmprovisioner.v1.CpuConfigR\x03cpu\x126\n" + "\x06memory\x18\x02 \x01(\v2\x1e.vmprovisioner.v1.MemoryConfigR\x06memory\x120\n" + @@ -2712,24 +2712,23 @@ const file_vmprovisioner_v1_vm_proto_rawDesc = "" + "\bResumeVm\x12!.vmprovisioner.v1.ResumeVmRequest\x1a\".vmprovisioner.v1.ResumeVmResponse\x12Q\n" + "\bRebootVm\x12!.vmprovisioner.v1.RebootVmRequest\x1a\".vmprovisioner.v1.RebootVmResponse\x12T\n" + "\tGetVmInfo\x12\".vmprovisioner.v1.GetVmInfoRequest\x1a#.vmprovisioner.v1.GetVmInfoResponse\x12N\n" + - "\aListVms\x12 .vmprovisioner.v1.ListVmsRequest\x1a!.vmprovisioner.v1.ListVmsResponseB\xd0\x01\n" + - "\x14com.vmprovisioner.v1B\aVmProtoP\x01ZNgithub.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1;vmprovisionerv1\xa2\x02\x03VXX\xaa\x02\x10Vmprovisioner.V1\xca\x02\x10Vmprovisioner\\V1\xe2\x02\x1cVmprovisioner\\V1\\GPBMetadata\xea\x02\x11Vmprovisioner::V1b\x06proto3" + "\aListVms\x12 .vmprovisioner.v1.ListVmsRequest\x1a!.vmprovisioner.v1.ListVmsResponseB-Z+metald/gen/vmprovisioner/v1;vmprovisionerv1b\x06proto3" var ( - file_vmprovisioner_v1_vm_proto_rawDescOnce sync.Once - file_vmprovisioner_v1_vm_proto_rawDescData []byte + file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescOnce sync.Once + file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescData []byte ) -func file_vmprovisioner_v1_vm_proto_rawDescGZIP() []byte { - file_vmprovisioner_v1_vm_proto_rawDescOnce.Do(func() { - file_vmprovisioner_v1_vm_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_vmprovisioner_v1_vm_proto_rawDesc), len(file_vmprovisioner_v1_vm_proto_rawDesc))) +func file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP() []byte { + file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescOnce.Do(func() { + file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDesc), len(file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDesc))) }) - return file_vmprovisioner_v1_vm_proto_rawDescData + return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescData } -var file_vmprovisioner_v1_vm_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_vmprovisioner_v1_vm_proto_msgTypes = make([]protoimpl.MessageInfo, 43) -var file_vmprovisioner_v1_vm_proto_goTypes = []any{ +var file_deploy_metald_proto_vmprovisioner_v1_vm_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes = make([]protoimpl.MessageInfo, 43) +var file_deploy_metald_proto_vmprovisioner_v1_vm_proto_goTypes = []any{ (VmState)(0), // 0: vmprovisioner.v1.VmState (NetworkMode)(0), // 1: vmprovisioner.v1.NetworkMode (*VmConfig)(nil), // 2: vmprovisioner.v1.VmConfig @@ -2776,7 +2775,7 @@ var file_vmprovisioner_v1_vm_proto_goTypes = []any{ nil, // 43: vmprovisioner.v1.GetVmInfoResponse.BackendInfoEntry nil, // 44: vmprovisioner.v1.VmInfo.MetadataEntry } -var file_vmprovisioner_v1_vm_proto_depIdxs = []int32{ +var file_deploy_metald_proto_vmprovisioner_v1_vm_proto_depIdxs = []int32{ 3, // 0: vmprovisioner.v1.VmConfig.cpu:type_name -> vmprovisioner.v1.CpuConfig 5, // 1: vmprovisioner.v1.VmConfig.memory:type_name -> vmprovisioner.v1.MemoryConfig 6, // 2: vmprovisioner.v1.VmConfig.boot:type_name -> vmprovisioner.v1.BootConfig @@ -2839,27 +2838,27 @@ var file_vmprovisioner_v1_vm_proto_depIdxs = []int32{ 0, // [0:37] is the sub-list for field type_name } -func init() { file_vmprovisioner_v1_vm_proto_init() } -func file_vmprovisioner_v1_vm_proto_init() { - if File_vmprovisioner_v1_vm_proto != nil { +func init() { file_deploy_metald_proto_vmprovisioner_v1_vm_proto_init() } +func file_deploy_metald_proto_vmprovisioner_v1_vm_proto_init() { + if File_deploy_metald_proto_vmprovisioner_v1_vm_proto != nil { return } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_vmprovisioner_v1_vm_proto_rawDesc), len(file_vmprovisioner_v1_vm_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDesc), len(file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDesc)), NumEnums: 2, NumMessages: 43, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_vmprovisioner_v1_vm_proto_goTypes, - DependencyIndexes: file_vmprovisioner_v1_vm_proto_depIdxs, - EnumInfos: file_vmprovisioner_v1_vm_proto_enumTypes, - MessageInfos: file_vmprovisioner_v1_vm_proto_msgTypes, + GoTypes: file_deploy_metald_proto_vmprovisioner_v1_vm_proto_goTypes, + DependencyIndexes: file_deploy_metald_proto_vmprovisioner_v1_vm_proto_depIdxs, + EnumInfos: file_deploy_metald_proto_vmprovisioner_v1_vm_proto_enumTypes, + MessageInfos: file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes, }.Build() - File_vmprovisioner_v1_vm_proto = out.File - file_vmprovisioner_v1_vm_proto_goTypes = nil - file_vmprovisioner_v1_vm_proto_depIdxs = nil + File_deploy_metald_proto_vmprovisioner_v1_vm_proto = out.File + file_deploy_metald_proto_vmprovisioner_v1_vm_proto_goTypes = nil + file_deploy_metald_proto_vmprovisioner_v1_vm_proto_depIdxs = nil } diff --git a/go/deploy/metald/gen/vmprovisioner/v1/vmprovisionerv1connect/vm.connect.go b/go/gen/deploy/metald/proto/vmprovisioner/v1/vmprovisionerv1connect/vm.connect.go similarity index 88% rename from go/deploy/metald/gen/vmprovisioner/v1/vmprovisionerv1connect/vm.connect.go rename to go/gen/deploy/metald/proto/vmprovisioner/v1/vmprovisionerv1connect/vm.connect.go index ab68a2039d..1340426a05 100644 --- a/go/deploy/metald/gen/vmprovisioner/v1/vmprovisionerv1connect/vm.connect.go +++ b/go/gen/deploy/metald/proto/vmprovisioner/v1/vmprovisionerv1connect/vm.connect.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-connect-go. DO NOT EDIT. // -// Source: vmprovisioner/v1/vm.proto +// Source: deploy/metald/proto/vmprovisioner/v1/vm.proto package vmprovisionerv1connect @@ -8,7 +8,7 @@ import ( connect "connectrpc.com/connect" context "context" errors "errors" - v1 "github.com/unkeyed/unkey/go/deploy/metald/gen/vmprovisioner/v1" + v1 "metald/gen/vmprovisioner/v1" http "net/http" strings "strings" ) @@ -53,6 +53,20 @@ const ( VmServiceListVmsProcedure = "/vmprovisioner.v1.VmService/ListVms" ) +// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. +var ( + vmServiceServiceDescriptor = v1.File_deploy_metald_proto_vmprovisioner_v1_vm_proto.Services().ByName("VmService") + vmServiceCreateVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("CreateVm") + vmServiceDeleteVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("DeleteVm") + vmServiceBootVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("BootVm") + vmServiceShutdownVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("ShutdownVm") + vmServicePauseVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("PauseVm") + vmServiceResumeVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("ResumeVm") + vmServiceRebootVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("RebootVm") + vmServiceGetVmInfoMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("GetVmInfo") + vmServiceListVmsMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("ListVms") +) + // VmServiceClient is a client for the vmprovisioner.v1.VmService service. type VmServiceClient interface { // CreateVm creates a new virtual machine instance @@ -84,60 +98,59 @@ type VmServiceClient interface { // http://api.acme.com or https://acme.com/grpc). func NewVmServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) VmServiceClient { baseURL = strings.TrimRight(baseURL, "/") - vmServiceMethods := v1.File_vmprovisioner_v1_vm_proto.Services().ByName("VmService").Methods() return &vmServiceClient{ createVm: connect.NewClient[v1.CreateVmRequest, v1.CreateVmResponse]( httpClient, baseURL+VmServiceCreateVmProcedure, - connect.WithSchema(vmServiceMethods.ByName("CreateVm")), + connect.WithSchema(vmServiceCreateVmMethodDescriptor), connect.WithClientOptions(opts...), ), deleteVm: connect.NewClient[v1.DeleteVmRequest, v1.DeleteVmResponse]( httpClient, baseURL+VmServiceDeleteVmProcedure, - connect.WithSchema(vmServiceMethods.ByName("DeleteVm")), + connect.WithSchema(vmServiceDeleteVmMethodDescriptor), connect.WithClientOptions(opts...), ), bootVm: connect.NewClient[v1.BootVmRequest, v1.BootVmResponse]( httpClient, baseURL+VmServiceBootVmProcedure, - connect.WithSchema(vmServiceMethods.ByName("BootVm")), + connect.WithSchema(vmServiceBootVmMethodDescriptor), connect.WithClientOptions(opts...), ), shutdownVm: connect.NewClient[v1.ShutdownVmRequest, v1.ShutdownVmResponse]( httpClient, baseURL+VmServiceShutdownVmProcedure, - connect.WithSchema(vmServiceMethods.ByName("ShutdownVm")), + connect.WithSchema(vmServiceShutdownVmMethodDescriptor), connect.WithClientOptions(opts...), ), pauseVm: connect.NewClient[v1.PauseVmRequest, v1.PauseVmResponse]( httpClient, baseURL+VmServicePauseVmProcedure, - connect.WithSchema(vmServiceMethods.ByName("PauseVm")), + connect.WithSchema(vmServicePauseVmMethodDescriptor), connect.WithClientOptions(opts...), ), resumeVm: connect.NewClient[v1.ResumeVmRequest, v1.ResumeVmResponse]( httpClient, baseURL+VmServiceResumeVmProcedure, - connect.WithSchema(vmServiceMethods.ByName("ResumeVm")), + connect.WithSchema(vmServiceResumeVmMethodDescriptor), connect.WithClientOptions(opts...), ), rebootVm: connect.NewClient[v1.RebootVmRequest, v1.RebootVmResponse]( httpClient, baseURL+VmServiceRebootVmProcedure, - connect.WithSchema(vmServiceMethods.ByName("RebootVm")), + connect.WithSchema(vmServiceRebootVmMethodDescriptor), connect.WithClientOptions(opts...), ), getVmInfo: connect.NewClient[v1.GetVmInfoRequest, v1.GetVmInfoResponse]( httpClient, baseURL+VmServiceGetVmInfoProcedure, - connect.WithSchema(vmServiceMethods.ByName("GetVmInfo")), + connect.WithSchema(vmServiceGetVmInfoMethodDescriptor), connect.WithClientOptions(opts...), ), listVms: connect.NewClient[v1.ListVmsRequest, v1.ListVmsResponse]( httpClient, baseURL+VmServiceListVmsProcedure, - connect.WithSchema(vmServiceMethods.ByName("ListVms")), + connect.WithSchema(vmServiceListVmsMethodDescriptor), connect.WithClientOptions(opts...), ), } @@ -229,59 +242,58 @@ type VmServiceHandler interface { // By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf // and JSON codecs. They also support gzip compression. func NewVmServiceHandler(svc VmServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - vmServiceMethods := v1.File_vmprovisioner_v1_vm_proto.Services().ByName("VmService").Methods() vmServiceCreateVmHandler := connect.NewUnaryHandler( VmServiceCreateVmProcedure, svc.CreateVm, - connect.WithSchema(vmServiceMethods.ByName("CreateVm")), + connect.WithSchema(vmServiceCreateVmMethodDescriptor), connect.WithHandlerOptions(opts...), ) vmServiceDeleteVmHandler := connect.NewUnaryHandler( VmServiceDeleteVmProcedure, svc.DeleteVm, - connect.WithSchema(vmServiceMethods.ByName("DeleteVm")), + connect.WithSchema(vmServiceDeleteVmMethodDescriptor), connect.WithHandlerOptions(opts...), ) vmServiceBootVmHandler := connect.NewUnaryHandler( VmServiceBootVmProcedure, svc.BootVm, - connect.WithSchema(vmServiceMethods.ByName("BootVm")), + connect.WithSchema(vmServiceBootVmMethodDescriptor), connect.WithHandlerOptions(opts...), ) vmServiceShutdownVmHandler := connect.NewUnaryHandler( VmServiceShutdownVmProcedure, svc.ShutdownVm, - connect.WithSchema(vmServiceMethods.ByName("ShutdownVm")), + connect.WithSchema(vmServiceShutdownVmMethodDescriptor), connect.WithHandlerOptions(opts...), ) vmServicePauseVmHandler := connect.NewUnaryHandler( VmServicePauseVmProcedure, svc.PauseVm, - connect.WithSchema(vmServiceMethods.ByName("PauseVm")), + connect.WithSchema(vmServicePauseVmMethodDescriptor), connect.WithHandlerOptions(opts...), ) vmServiceResumeVmHandler := connect.NewUnaryHandler( VmServiceResumeVmProcedure, svc.ResumeVm, - connect.WithSchema(vmServiceMethods.ByName("ResumeVm")), + connect.WithSchema(vmServiceResumeVmMethodDescriptor), connect.WithHandlerOptions(opts...), ) vmServiceRebootVmHandler := connect.NewUnaryHandler( VmServiceRebootVmProcedure, svc.RebootVm, - connect.WithSchema(vmServiceMethods.ByName("RebootVm")), + connect.WithSchema(vmServiceRebootVmMethodDescriptor), connect.WithHandlerOptions(opts...), ) vmServiceGetVmInfoHandler := connect.NewUnaryHandler( VmServiceGetVmInfoProcedure, svc.GetVmInfo, - connect.WithSchema(vmServiceMethods.ByName("GetVmInfo")), + connect.WithSchema(vmServiceGetVmInfoMethodDescriptor), connect.WithHandlerOptions(opts...), ) vmServiceListVmsHandler := connect.NewUnaryHandler( VmServiceListVmsProcedure, svc.ListVms, - connect.WithSchema(vmServiceMethods.ByName("ListVms")), + connect.WithSchema(vmServiceListVmsMethodDescriptor), connect.WithHandlerOptions(opts...), ) return "/vmprovisioner.v1.VmService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { diff --git a/go/gen/proto/metal/vmprovisioner/v1/vmprovisioner.pb.go b/go/gen/proto/metal/vmprovisioner/v1/vmprovisioner.pb.go new file mode 100644 index 0000000000..e8555fec2b --- /dev/null +++ b/go/gen/proto/metal/vmprovisioner/v1/vmprovisioner.pb.go @@ -0,0 +1,2864 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc (unknown) +// source: proto/metal/vmprovisioner/v1/vmprovisioner.proto + +package vmprovisionerv1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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) +) + +// VM lifecycle states +type VmState int32 + +const ( + VmState_VM_STATE_UNSPECIFIED VmState = 0 + VmState_VM_STATE_CREATED VmState = 1 + VmState_VM_STATE_RUNNING VmState = 2 + VmState_VM_STATE_PAUSED VmState = 3 + VmState_VM_STATE_SHUTDOWN VmState = 4 +) + +// Enum value maps for VmState. +var ( + VmState_name = map[int32]string{ + 0: "VM_STATE_UNSPECIFIED", + 1: "VM_STATE_CREATED", + 2: "VM_STATE_RUNNING", + 3: "VM_STATE_PAUSED", + 4: "VM_STATE_SHUTDOWN", + } + VmState_value = map[string]int32{ + "VM_STATE_UNSPECIFIED": 0, + "VM_STATE_CREATED": 1, + "VM_STATE_RUNNING": 2, + "VM_STATE_PAUSED": 3, + "VM_STATE_SHUTDOWN": 4, + } +) + +func (x VmState) Enum() *VmState { + p := new(VmState) + *p = x + return p +} + +func (x VmState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VmState) Descriptor() protoreflect.EnumDescriptor { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_enumTypes[0].Descriptor() +} + +func (VmState) Type() protoreflect.EnumType { + return &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_enumTypes[0] +} + +func (x VmState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use VmState.Descriptor instead. +func (VmState) EnumDescriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{0} +} + +// Network mode for the interface +type NetworkMode int32 + +const ( + NetworkMode_NETWORK_MODE_UNSPECIFIED NetworkMode = 0 + NetworkMode_NETWORK_MODE_DUAL_STACK NetworkMode = 1 // Both IPv4 and IPv6 + NetworkMode_NETWORK_MODE_IPV4_ONLY NetworkMode = 2 // IPv4 only + NetworkMode_NETWORK_MODE_IPV6_ONLY NetworkMode = 3 // IPv6 only +) + +// Enum value maps for NetworkMode. +var ( + NetworkMode_name = map[int32]string{ + 0: "NETWORK_MODE_UNSPECIFIED", + 1: "NETWORK_MODE_DUAL_STACK", + 2: "NETWORK_MODE_IPV4_ONLY", + 3: "NETWORK_MODE_IPV6_ONLY", + } + NetworkMode_value = map[string]int32{ + "NETWORK_MODE_UNSPECIFIED": 0, + "NETWORK_MODE_DUAL_STACK": 1, + "NETWORK_MODE_IPV4_ONLY": 2, + "NETWORK_MODE_IPV6_ONLY": 3, + } +) + +func (x NetworkMode) Enum() *NetworkMode { + p := new(NetworkMode) + *p = x + return p +} + +func (x NetworkMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (NetworkMode) Descriptor() protoreflect.EnumDescriptor { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_enumTypes[1].Descriptor() +} + +func (NetworkMode) Type() protoreflect.EnumType { + return &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_enumTypes[1] +} + +func (x NetworkMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use NetworkMode.Descriptor instead. +func (NetworkMode) EnumDescriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{1} +} + +// Unified VM configuration that works across different hypervisors +type VmConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // CPU configuration + Cpu *CpuConfig `protobuf:"bytes,1,opt,name=cpu,proto3" json:"cpu,omitempty"` + // Memory configuration + Memory *MemoryConfig `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"` + // Boot configuration + Boot *BootConfig `protobuf:"bytes,3,opt,name=boot,proto3" json:"boot,omitempty"` + // Storage devices + Storage []*StorageDevice `protobuf:"bytes,4,rep,name=storage,proto3" json:"storage,omitempty"` + // Network interfaces + Network []*NetworkInterface `protobuf:"bytes,5,rep,name=network,proto3" json:"network,omitempty"` + // Console configuration + Console *ConsoleConfig `protobuf:"bytes,6,opt,name=console,proto3" json:"console,omitempty"` + // Metadata and labels + Metadata map[string]string `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VmConfig) Reset() { + *x = VmConfig{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VmConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VmConfig) ProtoMessage() {} + +func (x *VmConfig) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VmConfig.ProtoReflect.Descriptor instead. +func (*VmConfig) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{0} +} + +func (x *VmConfig) GetCpu() *CpuConfig { + if x != nil { + return x.Cpu + } + return nil +} + +func (x *VmConfig) GetMemory() *MemoryConfig { + if x != nil { + return x.Memory + } + return nil +} + +func (x *VmConfig) GetBoot() *BootConfig { + if x != nil { + return x.Boot + } + return nil +} + +func (x *VmConfig) GetStorage() []*StorageDevice { + if x != nil { + return x.Storage + } + return nil +} + +func (x *VmConfig) GetNetwork() []*NetworkInterface { + if x != nil { + return x.Network + } + return nil +} + +func (x *VmConfig) GetConsole() *ConsoleConfig { + if x != nil { + return x.Console + } + return nil +} + +func (x *VmConfig) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +type CpuConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Number of virtual CPUs to allocate at boot + VcpuCount int32 `protobuf:"varint,1,opt,name=vcpu_count,json=vcpuCount,proto3" json:"vcpu_count,omitempty"` + // Maximum number of virtual CPUs (for hotplug) + MaxVcpuCount int32 `protobuf:"varint,2,opt,name=max_vcpu_count,json=maxVcpuCount,proto3" json:"max_vcpu_count,omitempty"` + // CPU topology (optional) + Topology *CpuTopology `protobuf:"bytes,3,opt,name=topology,proto3" json:"topology,omitempty"` + // CPU features and model (backend-specific) + Features map[string]string `protobuf:"bytes,4,rep,name=features,proto3" json:"features,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CpuConfig) Reset() { + *x = CpuConfig{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CpuConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CpuConfig) ProtoMessage() {} + +func (x *CpuConfig) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CpuConfig.ProtoReflect.Descriptor instead. +func (*CpuConfig) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{1} +} + +func (x *CpuConfig) GetVcpuCount() int32 { + if x != nil { + return x.VcpuCount + } + return 0 +} + +func (x *CpuConfig) GetMaxVcpuCount() int32 { + if x != nil { + return x.MaxVcpuCount + } + return 0 +} + +func (x *CpuConfig) GetTopology() *CpuTopology { + if x != nil { + return x.Topology + } + return nil +} + +func (x *CpuConfig) GetFeatures() map[string]string { + if x != nil { + return x.Features + } + return nil +} + +type CpuTopology struct { + state protoimpl.MessageState `protogen:"open.v1"` + Sockets int32 `protobuf:"varint,1,opt,name=sockets,proto3" json:"sockets,omitempty"` + CoresPerSocket int32 `protobuf:"varint,2,opt,name=cores_per_socket,json=coresPerSocket,proto3" json:"cores_per_socket,omitempty"` + ThreadsPerCore int32 `protobuf:"varint,3,opt,name=threads_per_core,json=threadsPerCore,proto3" json:"threads_per_core,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CpuTopology) Reset() { + *x = CpuTopology{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CpuTopology) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CpuTopology) ProtoMessage() {} + +func (x *CpuTopology) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CpuTopology.ProtoReflect.Descriptor instead. +func (*CpuTopology) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{2} +} + +func (x *CpuTopology) GetSockets() int32 { + if x != nil { + return x.Sockets + } + return 0 +} + +func (x *CpuTopology) GetCoresPerSocket() int32 { + if x != nil { + return x.CoresPerSocket + } + return 0 +} + +func (x *CpuTopology) GetThreadsPerCore() int32 { + if x != nil { + return x.ThreadsPerCore + } + return 0 +} + +type MemoryConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Memory size in bytes + SizeBytes int64 `protobuf:"varint,1,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` + // Whether memory hotplug is enabled + HotplugEnabled bool `protobuf:"varint,2,opt,name=hotplug_enabled,json=hotplugEnabled,proto3" json:"hotplug_enabled,omitempty"` + // Maximum memory size for hotplug (bytes) + MaxSizeBytes int64 `protobuf:"varint,3,opt,name=max_size_bytes,json=maxSizeBytes,proto3" json:"max_size_bytes,omitempty"` + // Memory backing options (hugepages, etc.) + Backing map[string]string `protobuf:"bytes,4,rep,name=backing,proto3" json:"backing,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MemoryConfig) Reset() { + *x = MemoryConfig{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MemoryConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MemoryConfig) ProtoMessage() {} + +func (x *MemoryConfig) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MemoryConfig.ProtoReflect.Descriptor instead. +func (*MemoryConfig) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{3} +} + +func (x *MemoryConfig) GetSizeBytes() int64 { + if x != nil { + return x.SizeBytes + } + return 0 +} + +func (x *MemoryConfig) GetHotplugEnabled() bool { + if x != nil { + return x.HotplugEnabled + } + return false +} + +func (x *MemoryConfig) GetMaxSizeBytes() int64 { + if x != nil { + return x.MaxSizeBytes + } + return 0 +} + +func (x *MemoryConfig) GetBacking() map[string]string { + if x != nil { + return x.Backing + } + return nil +} + +type BootConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Path to kernel image + KernelPath string `protobuf:"bytes,1,opt,name=kernel_path,json=kernelPath,proto3" json:"kernel_path,omitempty"` + // Path to initial ramdisk (optional) + InitrdPath string `protobuf:"bytes,2,opt,name=initrd_path,json=initrdPath,proto3" json:"initrd_path,omitempty"` + // Kernel command line arguments + KernelArgs string `protobuf:"bytes,3,opt,name=kernel_args,json=kernelArgs,proto3" json:"kernel_args,omitempty"` + // Boot order and options + BootOptions map[string]string `protobuf:"bytes,4,rep,name=boot_options,json=bootOptions,proto3" json:"boot_options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BootConfig) Reset() { + *x = BootConfig{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BootConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BootConfig) ProtoMessage() {} + +func (x *BootConfig) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BootConfig.ProtoReflect.Descriptor instead. +func (*BootConfig) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{4} +} + +func (x *BootConfig) GetKernelPath() string { + if x != nil { + return x.KernelPath + } + return "" +} + +func (x *BootConfig) GetInitrdPath() string { + if x != nil { + return x.InitrdPath + } + return "" +} + +func (x *BootConfig) GetKernelArgs() string { + if x != nil { + return x.KernelArgs + } + return "" +} + +func (x *BootConfig) GetBootOptions() map[string]string { + if x != nil { + return x.BootOptions + } + return nil +} + +type StorageDevice struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Unique identifier for this storage device + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Path to the backing file or block device + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + // Whether this device is read-only + ReadOnly bool `protobuf:"varint,3,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` + // Whether this is the root/boot device + IsRootDevice bool `protobuf:"varint,4,opt,name=is_root_device,json=isRootDevice,proto3" json:"is_root_device,omitempty"` + // Storage interface type (virtio-blk, nvme, etc.) + InterfaceType string `protobuf:"bytes,5,opt,name=interface_type,json=interfaceType,proto3" json:"interface_type,omitempty"` + // Additional storage options + Options map[string]string `protobuf:"bytes,6,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StorageDevice) Reset() { + *x = StorageDevice{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StorageDevice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StorageDevice) ProtoMessage() {} + +func (x *StorageDevice) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StorageDevice.ProtoReflect.Descriptor instead. +func (*StorageDevice) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{5} +} + +func (x *StorageDevice) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *StorageDevice) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *StorageDevice) GetReadOnly() bool { + if x != nil { + return x.ReadOnly + } + return false +} + +func (x *StorageDevice) GetIsRootDevice() bool { + if x != nil { + return x.IsRootDevice + } + return false +} + +func (x *StorageDevice) GetInterfaceType() string { + if x != nil { + return x.InterfaceType + } + return "" +} + +func (x *StorageDevice) GetOptions() map[string]string { + if x != nil { + return x.Options + } + return nil +} + +type NetworkInterface struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Unique identifier for this network interface + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // MAC address (optional, will be generated if not provided) + MacAddress string `protobuf:"bytes,2,opt,name=mac_address,json=macAddress,proto3" json:"mac_address,omitempty"` + // Host-side TAP device name + TapDevice string `protobuf:"bytes,3,opt,name=tap_device,json=tapDevice,proto3" json:"tap_device,omitempty"` + // Network interface type (virtio-net, e1000, etc.) + InterfaceType string `protobuf:"bytes,4,opt,name=interface_type,json=interfaceType,proto3" json:"interface_type,omitempty"` + // Additional network options + Options map[string]string `protobuf:"bytes,5,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // IPv4 configuration (optional) + Ipv4Config *IPv4Config `protobuf:"bytes,6,opt,name=ipv4_config,json=ipv4Config,proto3" json:"ipv4_config,omitempty"` + // IPv6 configuration (optional) + Ipv6Config *IPv6Config `protobuf:"bytes,7,opt,name=ipv6_config,json=ipv6Config,proto3" json:"ipv6_config,omitempty"` + // Network mode + Mode NetworkMode `protobuf:"varint,8,opt,name=mode,proto3,enum=metal.vmprovisioner.v1.NetworkMode" json:"mode,omitempty"` + // Rate limiting + RxRateLimit *RateLimit `protobuf:"bytes,10,opt,name=rx_rate_limit,json=rxRateLimit,proto3" json:"rx_rate_limit,omitempty"` // Receive rate limit + TxRateLimit *RateLimit `protobuf:"bytes,11,opt,name=tx_rate_limit,json=txRateLimit,proto3" json:"tx_rate_limit,omitempty"` // Transmit rate limit + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NetworkInterface) Reset() { + *x = NetworkInterface{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NetworkInterface) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetworkInterface) ProtoMessage() {} + +func (x *NetworkInterface) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NetworkInterface.ProtoReflect.Descriptor instead. +func (*NetworkInterface) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{6} +} + +func (x *NetworkInterface) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *NetworkInterface) GetMacAddress() string { + if x != nil { + return x.MacAddress + } + return "" +} + +func (x *NetworkInterface) GetTapDevice() string { + if x != nil { + return x.TapDevice + } + return "" +} + +func (x *NetworkInterface) GetInterfaceType() string { + if x != nil { + return x.InterfaceType + } + return "" +} + +func (x *NetworkInterface) GetOptions() map[string]string { + if x != nil { + return x.Options + } + return nil +} + +func (x *NetworkInterface) GetIpv4Config() *IPv4Config { + if x != nil { + return x.Ipv4Config + } + return nil +} + +func (x *NetworkInterface) GetIpv6Config() *IPv6Config { + if x != nil { + return x.Ipv6Config + } + return nil +} + +func (x *NetworkInterface) GetMode() NetworkMode { + if x != nil { + return x.Mode + } + return NetworkMode_NETWORK_MODE_UNSPECIFIED +} + +func (x *NetworkInterface) GetRxRateLimit() *RateLimit { + if x != nil { + return x.RxRateLimit + } + return nil +} + +func (x *NetworkInterface) GetTxRateLimit() *RateLimit { + if x != nil { + return x.TxRateLimit + } + return nil +} + +// IPv4 network configuration +type IPv4Config struct { + state protoimpl.MessageState `protogen:"open.v1"` + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // IPv4 address (e.g., "10.100.1.2") + Netmask string `protobuf:"bytes,2,opt,name=netmask,proto3" json:"netmask,omitempty"` // Network mask (e.g., "255.255.255.0") + Gateway string `protobuf:"bytes,3,opt,name=gateway,proto3" json:"gateway,omitempty"` // Default gateway + DnsServers []string `protobuf:"bytes,4,rep,name=dns_servers,json=dnsServers,proto3" json:"dns_servers,omitempty"` // DNS servers + Dhcp bool `protobuf:"varint,5,opt,name=dhcp,proto3" json:"dhcp,omitempty"` // Use DHCP instead of static config + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *IPv4Config) Reset() { + *x = IPv4Config{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *IPv4Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IPv4Config) ProtoMessage() {} + +func (x *IPv4Config) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IPv4Config.ProtoReflect.Descriptor instead. +func (*IPv4Config) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{7} +} + +func (x *IPv4Config) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *IPv4Config) GetNetmask() string { + if x != nil { + return x.Netmask + } + return "" +} + +func (x *IPv4Config) GetGateway() string { + if x != nil { + return x.Gateway + } + return "" +} + +func (x *IPv4Config) GetDnsServers() []string { + if x != nil { + return x.DnsServers + } + return nil +} + +func (x *IPv4Config) GetDhcp() bool { + if x != nil { + return x.Dhcp + } + return false +} + +// IPv6 network configuration +type IPv6Config struct { + state protoimpl.MessageState `protogen:"open.v1"` + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // IPv6 address (e.g., "fd00::1:2") + PrefixLength int32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3" json:"prefix_length,omitempty"` // Prefix length (e.g., 64) + Gateway string `protobuf:"bytes,3,opt,name=gateway,proto3" json:"gateway,omitempty"` // Default gateway + DnsServers []string `protobuf:"bytes,4,rep,name=dns_servers,json=dnsServers,proto3" json:"dns_servers,omitempty"` // DNS servers (IPv6 addresses) + Slaac bool `protobuf:"varint,5,opt,name=slaac,proto3" json:"slaac,omitempty"` // Use SLAAC (Stateless Address Autoconfiguration) + PrivacyExtensions bool `protobuf:"varint,6,opt,name=privacy_extensions,json=privacyExtensions,proto3" json:"privacy_extensions,omitempty"` // Enable privacy extensions + LinkLocal string `protobuf:"bytes,7,opt,name=link_local,json=linkLocal,proto3" json:"link_local,omitempty"` // Link-local address (auto-generated if empty) + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *IPv6Config) Reset() { + *x = IPv6Config{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *IPv6Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IPv6Config) ProtoMessage() {} + +func (x *IPv6Config) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IPv6Config.ProtoReflect.Descriptor instead. +func (*IPv6Config) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{8} +} + +func (x *IPv6Config) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *IPv6Config) GetPrefixLength() int32 { + if x != nil { + return x.PrefixLength + } + return 0 +} + +func (x *IPv6Config) GetGateway() string { + if x != nil { + return x.Gateway + } + return "" +} + +func (x *IPv6Config) GetDnsServers() []string { + if x != nil { + return x.DnsServers + } + return nil +} + +func (x *IPv6Config) GetSlaac() bool { + if x != nil { + return x.Slaac + } + return false +} + +func (x *IPv6Config) GetPrivacyExtensions() bool { + if x != nil { + return x.PrivacyExtensions + } + return false +} + +func (x *IPv6Config) GetLinkLocal() string { + if x != nil { + return x.LinkLocal + } + return "" +} + +// Rate limiting configuration +type RateLimit struct { + state protoimpl.MessageState `protogen:"open.v1"` + Bandwidth int64 `protobuf:"varint,1,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"` // Bandwidth in bytes/second + RefillTime int64 `protobuf:"varint,2,opt,name=refill_time,json=refillTime,proto3" json:"refill_time,omitempty"` // Token bucket refill time in milliseconds + Burst int64 `protobuf:"varint,3,opt,name=burst,proto3" json:"burst,omitempty"` // Burst size in bytes + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RateLimit) Reset() { + *x = RateLimit{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RateLimit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RateLimit) ProtoMessage() {} + +func (x *RateLimit) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RateLimit.ProtoReflect.Descriptor instead. +func (*RateLimit) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{9} +} + +func (x *RateLimit) GetBandwidth() int64 { + if x != nil { + return x.Bandwidth + } + return 0 +} + +func (x *RateLimit) GetRefillTime() int64 { + if x != nil { + return x.RefillTime + } + return 0 +} + +func (x *RateLimit) GetBurst() int64 { + if x != nil { + return x.Burst + } + return 0 +} + +type ConsoleConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Whether console is enabled + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + // Console output destination (file path, pty, etc.) + Output string `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` + // Console input source (optional) + Input string `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` + // Console type (serial, virtio-console, etc.) + ConsoleType string `protobuf:"bytes,4,opt,name=console_type,json=consoleType,proto3" json:"console_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConsoleConfig) Reset() { + *x = ConsoleConfig{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConsoleConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConsoleConfig) ProtoMessage() {} + +func (x *ConsoleConfig) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConsoleConfig.ProtoReflect.Descriptor instead. +func (*ConsoleConfig) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{10} +} + +func (x *ConsoleConfig) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *ConsoleConfig) GetOutput() string { + if x != nil { + return x.Output + } + return "" +} + +func (x *ConsoleConfig) GetInput() string { + if x != nil { + return x.Input + } + return "" +} + +func (x *ConsoleConfig) GetConsoleType() string { + if x != nil { + return x.ConsoleType + } + return "" +} + +// Request/Response messages +type CreateVmRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Unique identifier for the VM (optional, will be generated if not provided) + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + // VM configuration + Config *VmConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` + // Customer identifier for billing and isolation + CustomerId string `protobuf:"bytes,3,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateVmRequest) Reset() { + *x = CreateVmRequest{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateVmRequest) ProtoMessage() {} + +func (x *CreateVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateVmRequest.ProtoReflect.Descriptor instead. +func (*CreateVmRequest) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{11} +} + +func (x *CreateVmRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *CreateVmRequest) GetConfig() *VmConfig { + if x != nil { + return x.Config + } + return nil +} + +func (x *CreateVmRequest) GetCustomerId() string { + if x != nil { + return x.CustomerId + } + return "" +} + +type CreateVmResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Assigned VM identifier + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + // Current VM state after creation + State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=metal.vmprovisioner.v1.VmState" json:"state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateVmResponse) Reset() { + *x = CreateVmResponse{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateVmResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateVmResponse) ProtoMessage() {} + +func (x *CreateVmResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateVmResponse.ProtoReflect.Descriptor instead. +func (*CreateVmResponse) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{12} +} + +func (x *CreateVmResponse) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *CreateVmResponse) GetState() VmState { + if x != nil { + return x.State + } + return VmState_VM_STATE_UNSPECIFIED +} + +type DeleteVmRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + // Whether to force deletion even if VM is running + Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteVmRequest) Reset() { + *x = DeleteVmRequest{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteVmRequest) ProtoMessage() {} + +func (x *DeleteVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteVmRequest.ProtoReflect.Descriptor instead. +func (*DeleteVmRequest) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{13} +} + +func (x *DeleteVmRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *DeleteVmRequest) GetForce() bool { + if x != nil { + return x.Force + } + return false +} + +type DeleteVmResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteVmResponse) Reset() { + *x = DeleteVmResponse{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteVmResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteVmResponse) ProtoMessage() {} + +func (x *DeleteVmResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteVmResponse.ProtoReflect.Descriptor instead. +func (*DeleteVmResponse) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{14} +} + +func (x *DeleteVmResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +type BootVmRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BootVmRequest) Reset() { + *x = BootVmRequest{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BootVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BootVmRequest) ProtoMessage() {} + +func (x *BootVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BootVmRequest.ProtoReflect.Descriptor instead. +func (*BootVmRequest) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{15} +} + +func (x *BootVmRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +type BootVmResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=metal.vmprovisioner.v1.VmState" json:"state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BootVmResponse) Reset() { + *x = BootVmResponse{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BootVmResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BootVmResponse) ProtoMessage() {} + +func (x *BootVmResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BootVmResponse.ProtoReflect.Descriptor instead. +func (*BootVmResponse) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{16} +} + +func (x *BootVmResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *BootVmResponse) GetState() VmState { + if x != nil { + return x.State + } + return VmState_VM_STATE_UNSPECIFIED +} + +type ShutdownVmRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + // Whether to force shutdown (vs graceful) + Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` + // Timeout for graceful shutdown (seconds) + TimeoutSeconds int32 `protobuf:"varint,3,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ShutdownVmRequest) Reset() { + *x = ShutdownVmRequest{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ShutdownVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShutdownVmRequest) ProtoMessage() {} + +func (x *ShutdownVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ShutdownVmRequest.ProtoReflect.Descriptor instead. +func (*ShutdownVmRequest) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{17} +} + +func (x *ShutdownVmRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *ShutdownVmRequest) GetForce() bool { + if x != nil { + return x.Force + } + return false +} + +func (x *ShutdownVmRequest) GetTimeoutSeconds() int32 { + if x != nil { + return x.TimeoutSeconds + } + return 0 +} + +type ShutdownVmResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=metal.vmprovisioner.v1.VmState" json:"state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ShutdownVmResponse) Reset() { + *x = ShutdownVmResponse{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ShutdownVmResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShutdownVmResponse) ProtoMessage() {} + +func (x *ShutdownVmResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ShutdownVmResponse.ProtoReflect.Descriptor instead. +func (*ShutdownVmResponse) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{18} +} + +func (x *ShutdownVmResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *ShutdownVmResponse) GetState() VmState { + if x != nil { + return x.State + } + return VmState_VM_STATE_UNSPECIFIED +} + +type PauseVmRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PauseVmRequest) Reset() { + *x = PauseVmRequest{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PauseVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PauseVmRequest) ProtoMessage() {} + +func (x *PauseVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PauseVmRequest.ProtoReflect.Descriptor instead. +func (*PauseVmRequest) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{19} +} + +func (x *PauseVmRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +type PauseVmResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=metal.vmprovisioner.v1.VmState" json:"state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PauseVmResponse) Reset() { + *x = PauseVmResponse{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PauseVmResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PauseVmResponse) ProtoMessage() {} + +func (x *PauseVmResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PauseVmResponse.ProtoReflect.Descriptor instead. +func (*PauseVmResponse) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{20} +} + +func (x *PauseVmResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *PauseVmResponse) GetState() VmState { + if x != nil { + return x.State + } + return VmState_VM_STATE_UNSPECIFIED +} + +type ResumeVmRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResumeVmRequest) Reset() { + *x = ResumeVmRequest{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResumeVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResumeVmRequest) ProtoMessage() {} + +func (x *ResumeVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResumeVmRequest.ProtoReflect.Descriptor instead. +func (*ResumeVmRequest) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{21} +} + +func (x *ResumeVmRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +type ResumeVmResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=metal.vmprovisioner.v1.VmState" json:"state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResumeVmResponse) Reset() { + *x = ResumeVmResponse{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResumeVmResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResumeVmResponse) ProtoMessage() {} + +func (x *ResumeVmResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResumeVmResponse.ProtoReflect.Descriptor instead. +func (*ResumeVmResponse) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{22} +} + +func (x *ResumeVmResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *ResumeVmResponse) GetState() VmState { + if x != nil { + return x.State + } + return VmState_VM_STATE_UNSPECIFIED +} + +type RebootVmRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + // Whether to force reboot (vs graceful) + Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RebootVmRequest) Reset() { + *x = RebootVmRequest{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RebootVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RebootVmRequest) ProtoMessage() {} + +func (x *RebootVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RebootVmRequest.ProtoReflect.Descriptor instead. +func (*RebootVmRequest) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{23} +} + +func (x *RebootVmRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *RebootVmRequest) GetForce() bool { + if x != nil { + return x.Force + } + return false +} + +type RebootVmResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=metal.vmprovisioner.v1.VmState" json:"state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RebootVmResponse) Reset() { + *x = RebootVmResponse{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RebootVmResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RebootVmResponse) ProtoMessage() {} + +func (x *RebootVmResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RebootVmResponse.ProtoReflect.Descriptor instead. +func (*RebootVmResponse) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{24} +} + +func (x *RebootVmResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *RebootVmResponse) GetState() VmState { + if x != nil { + return x.State + } + return VmState_VM_STATE_UNSPECIFIED +} + +type GetVmInfoRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetVmInfoRequest) Reset() { + *x = GetVmInfoRequest{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetVmInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetVmInfoRequest) ProtoMessage() {} + +func (x *GetVmInfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetVmInfoRequest.ProtoReflect.Descriptor instead. +func (*GetVmInfoRequest) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{25} +} + +func (x *GetVmInfoRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +type GetVmInfoResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + Config *VmConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` + State VmState `protobuf:"varint,3,opt,name=state,proto3,enum=metal.vmprovisioner.v1.VmState" json:"state,omitempty"` + Metrics *VmMetrics `protobuf:"bytes,4,opt,name=metrics,proto3" json:"metrics,omitempty"` + // Backend-specific information + BackendInfo map[string]string `protobuf:"bytes,5,rep,name=backend_info,json=backendInfo,proto3" json:"backend_info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Network information if available + NetworkInfo *VmNetworkInfo `protobuf:"bytes,6,opt,name=network_info,json=networkInfo,proto3" json:"network_info,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetVmInfoResponse) Reset() { + *x = GetVmInfoResponse{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetVmInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetVmInfoResponse) ProtoMessage() {} + +func (x *GetVmInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetVmInfoResponse.ProtoReflect.Descriptor instead. +func (*GetVmInfoResponse) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{26} +} + +func (x *GetVmInfoResponse) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *GetVmInfoResponse) GetConfig() *VmConfig { + if x != nil { + return x.Config + } + return nil +} + +func (x *GetVmInfoResponse) GetState() VmState { + if x != nil { + return x.State + } + return VmState_VM_STATE_UNSPECIFIED +} + +func (x *GetVmInfoResponse) GetMetrics() *VmMetrics { + if x != nil { + return x.Metrics + } + return nil +} + +func (x *GetVmInfoResponse) GetBackendInfo() map[string]string { + if x != nil { + return x.BackendInfo + } + return nil +} + +func (x *GetVmInfoResponse) GetNetworkInfo() *VmNetworkInfo { + if x != nil { + return x.NetworkInfo + } + return nil +} + +// Port mapping for VM network forwarding +type PortMapping struct { + state protoimpl.MessageState `protogen:"open.v1"` + ContainerPort int32 `protobuf:"varint,1,opt,name=container_port,json=containerPort,proto3" json:"container_port,omitempty"` // Port inside the VM + HostPort int32 `protobuf:"varint,2,opt,name=host_port,json=hostPort,proto3" json:"host_port,omitempty"` // Port on the host system + Protocol string `protobuf:"bytes,3,opt,name=protocol,proto3" json:"protocol,omitempty"` // Protocol (tcp, udp) + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PortMapping) Reset() { + *x = PortMapping{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PortMapping) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PortMapping) ProtoMessage() {} + +func (x *PortMapping) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PortMapping.ProtoReflect.Descriptor instead. +func (*PortMapping) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{27} +} + +func (x *PortMapping) GetContainerPort() int32 { + if x != nil { + return x.ContainerPort + } + return 0 +} + +func (x *PortMapping) GetHostPort() int32 { + if x != nil { + return x.HostPort + } + return 0 +} + +func (x *PortMapping) GetProtocol() string { + if x != nil { + return x.Protocol + } + return "" +} + +// Network information for a VM +type VmNetworkInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + IpAddress string `protobuf:"bytes,1,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"` + MacAddress string `protobuf:"bytes,2,opt,name=mac_address,json=macAddress,proto3" json:"mac_address,omitempty"` + TapDevice string `protobuf:"bytes,3,opt,name=tap_device,json=tapDevice,proto3" json:"tap_device,omitempty"` + NetworkNamespace string `protobuf:"bytes,4,opt,name=network_namespace,json=networkNamespace,proto3" json:"network_namespace,omitempty"` + Gateway string `protobuf:"bytes,5,opt,name=gateway,proto3" json:"gateway,omitempty"` + DnsServers []string `protobuf:"bytes,6,rep,name=dns_servers,json=dnsServers,proto3" json:"dns_servers,omitempty"` + PortMappings []*PortMapping `protobuf:"bytes,7,rep,name=port_mappings,json=portMappings,proto3" json:"port_mappings,omitempty"` // Port forwards from host to VM + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VmNetworkInfo) Reset() { + *x = VmNetworkInfo{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VmNetworkInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VmNetworkInfo) ProtoMessage() {} + +func (x *VmNetworkInfo) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VmNetworkInfo.ProtoReflect.Descriptor instead. +func (*VmNetworkInfo) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{28} +} + +func (x *VmNetworkInfo) GetIpAddress() string { + if x != nil { + return x.IpAddress + } + return "" +} + +func (x *VmNetworkInfo) GetMacAddress() string { + if x != nil { + return x.MacAddress + } + return "" +} + +func (x *VmNetworkInfo) GetTapDevice() string { + if x != nil { + return x.TapDevice + } + return "" +} + +func (x *VmNetworkInfo) GetNetworkNamespace() string { + if x != nil { + return x.NetworkNamespace + } + return "" +} + +func (x *VmNetworkInfo) GetGateway() string { + if x != nil { + return x.Gateway + } + return "" +} + +func (x *VmNetworkInfo) GetDnsServers() []string { + if x != nil { + return x.DnsServers + } + return nil +} + +func (x *VmNetworkInfo) GetPortMappings() []*PortMapping { + if x != nil { + return x.PortMappings + } + return nil +} + +type VmMetrics struct { + state protoimpl.MessageState `protogen:"open.v1"` + // CPU usage percentage (0-100) + CpuUsagePercent float64 `protobuf:"fixed64,1,opt,name=cpu_usage_percent,json=cpuUsagePercent,proto3" json:"cpu_usage_percent,omitempty"` + // Memory usage in bytes + MemoryUsageBytes int64 `protobuf:"varint,2,opt,name=memory_usage_bytes,json=memoryUsageBytes,proto3" json:"memory_usage_bytes,omitempty"` + // Network I/O statistics + NetworkStats *NetworkStats `protobuf:"bytes,3,opt,name=network_stats,json=networkStats,proto3" json:"network_stats,omitempty"` + // Storage I/O statistics + StorageStats *StorageStats `protobuf:"bytes,4,opt,name=storage_stats,json=storageStats,proto3" json:"storage_stats,omitempty"` + // VM uptime in seconds + UptimeSeconds int64 `protobuf:"varint,5,opt,name=uptime_seconds,json=uptimeSeconds,proto3" json:"uptime_seconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VmMetrics) Reset() { + *x = VmMetrics{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VmMetrics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VmMetrics) ProtoMessage() {} + +func (x *VmMetrics) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VmMetrics.ProtoReflect.Descriptor instead. +func (*VmMetrics) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{29} +} + +func (x *VmMetrics) GetCpuUsagePercent() float64 { + if x != nil { + return x.CpuUsagePercent + } + return 0 +} + +func (x *VmMetrics) GetMemoryUsageBytes() int64 { + if x != nil { + return x.MemoryUsageBytes + } + return 0 +} + +func (x *VmMetrics) GetNetworkStats() *NetworkStats { + if x != nil { + return x.NetworkStats + } + return nil +} + +func (x *VmMetrics) GetStorageStats() *StorageStats { + if x != nil { + return x.StorageStats + } + return nil +} + +func (x *VmMetrics) GetUptimeSeconds() int64 { + if x != nil { + return x.UptimeSeconds + } + return 0 +} + +type NetworkStats struct { + state protoimpl.MessageState `protogen:"open.v1"` + BytesReceived int64 `protobuf:"varint,1,opt,name=bytes_received,json=bytesReceived,proto3" json:"bytes_received,omitempty"` + BytesTransmitted int64 `protobuf:"varint,2,opt,name=bytes_transmitted,json=bytesTransmitted,proto3" json:"bytes_transmitted,omitempty"` + PacketsReceived int64 `protobuf:"varint,3,opt,name=packets_received,json=packetsReceived,proto3" json:"packets_received,omitempty"` + PacketsTransmitted int64 `protobuf:"varint,4,opt,name=packets_transmitted,json=packetsTransmitted,proto3" json:"packets_transmitted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NetworkStats) Reset() { + *x = NetworkStats{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NetworkStats) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetworkStats) ProtoMessage() {} + +func (x *NetworkStats) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NetworkStats.ProtoReflect.Descriptor instead. +func (*NetworkStats) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{30} +} + +func (x *NetworkStats) GetBytesReceived() int64 { + if x != nil { + return x.BytesReceived + } + return 0 +} + +func (x *NetworkStats) GetBytesTransmitted() int64 { + if x != nil { + return x.BytesTransmitted + } + return 0 +} + +func (x *NetworkStats) GetPacketsReceived() int64 { + if x != nil { + return x.PacketsReceived + } + return 0 +} + +func (x *NetworkStats) GetPacketsTransmitted() int64 { + if x != nil { + return x.PacketsTransmitted + } + return 0 +} + +type StorageStats struct { + state protoimpl.MessageState `protogen:"open.v1"` + BytesRead int64 `protobuf:"varint,1,opt,name=bytes_read,json=bytesRead,proto3" json:"bytes_read,omitempty"` + BytesWritten int64 `protobuf:"varint,2,opt,name=bytes_written,json=bytesWritten,proto3" json:"bytes_written,omitempty"` + ReadOperations int64 `protobuf:"varint,3,opt,name=read_operations,json=readOperations,proto3" json:"read_operations,omitempty"` + WriteOperations int64 `protobuf:"varint,4,opt,name=write_operations,json=writeOperations,proto3" json:"write_operations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StorageStats) Reset() { + *x = StorageStats{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StorageStats) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StorageStats) ProtoMessage() {} + +func (x *StorageStats) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StorageStats.ProtoReflect.Descriptor instead. +func (*StorageStats) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{31} +} + +func (x *StorageStats) GetBytesRead() int64 { + if x != nil { + return x.BytesRead + } + return 0 +} + +func (x *StorageStats) GetBytesWritten() int64 { + if x != nil { + return x.BytesWritten + } + return 0 +} + +func (x *StorageStats) GetReadOperations() int64 { + if x != nil { + return x.ReadOperations + } + return 0 +} + +func (x *StorageStats) GetWriteOperations() int64 { + if x != nil { + return x.WriteOperations + } + return 0 +} + +type ListVmsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Optional filter by state + StateFilter []VmState `protobuf:"varint,1,rep,packed,name=state_filter,json=stateFilter,proto3,enum=metal.vmprovisioner.v1.VmState" json:"state_filter,omitempty"` + // Pagination + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListVmsRequest) Reset() { + *x = ListVmsRequest{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListVmsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListVmsRequest) ProtoMessage() {} + +func (x *ListVmsRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListVmsRequest.ProtoReflect.Descriptor instead. +func (*ListVmsRequest) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{32} +} + +func (x *ListVmsRequest) GetStateFilter() []VmState { + if x != nil { + return x.StateFilter + } + return nil +} + +func (x *ListVmsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListVmsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +type ListVmsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Vms []*VmInfo `protobuf:"bytes,1,rep,name=vms,proto3" json:"vms,omitempty"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListVmsResponse) Reset() { + *x = ListVmsResponse{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListVmsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListVmsResponse) ProtoMessage() {} + +func (x *ListVmsResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListVmsResponse.ProtoReflect.Descriptor instead. +func (*ListVmsResponse) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{33} +} + +func (x *ListVmsResponse) GetVms() []*VmInfo { + if x != nil { + return x.Vms + } + return nil +} + +func (x *ListVmsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +func (x *ListVmsResponse) GetTotalCount() int32 { + if x != nil { + return x.TotalCount + } + return 0 +} + +type VmInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=metal.vmprovisioner.v1.VmState" json:"state,omitempty"` + // Basic config info (subset of full config) + VcpuCount int32 `protobuf:"varint,3,opt,name=vcpu_count,json=vcpuCount,proto3" json:"vcpu_count,omitempty"` + MemorySizeBytes int64 `protobuf:"varint,4,opt,name=memory_size_bytes,json=memorySizeBytes,proto3" json:"memory_size_bytes,omitempty"` + // Creation and modification timestamps + CreatedTimestamp int64 `protobuf:"varint,5,opt,name=created_timestamp,json=createdTimestamp,proto3" json:"created_timestamp,omitempty"` + ModifiedTimestamp int64 `protobuf:"varint,6,opt,name=modified_timestamp,json=modifiedTimestamp,proto3" json:"modified_timestamp,omitempty"` + // Metadata + Metadata map[string]string `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Customer identifier + CustomerId string `protobuf:"bytes,8,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VmInfo) Reset() { + *x = VmInfo{} + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VmInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VmInfo) ProtoMessage() {} + +func (x *VmInfo) ProtoReflect() protoreflect.Message { + mi := &file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VmInfo.ProtoReflect.Descriptor instead. +func (*VmInfo) Descriptor() ([]byte, []int) { + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP(), []int{34} +} + +func (x *VmInfo) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *VmInfo) GetState() VmState { + if x != nil { + return x.State + } + return VmState_VM_STATE_UNSPECIFIED +} + +func (x *VmInfo) GetVcpuCount() int32 { + if x != nil { + return x.VcpuCount + } + return 0 +} + +func (x *VmInfo) GetMemorySizeBytes() int64 { + if x != nil { + return x.MemorySizeBytes + } + return 0 +} + +func (x *VmInfo) GetCreatedTimestamp() int64 { + if x != nil { + return x.CreatedTimestamp + } + return 0 +} + +func (x *VmInfo) GetModifiedTimestamp() int64 { + if x != nil { + return x.ModifiedTimestamp + } + return 0 +} + +func (x *VmInfo) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *VmInfo) GetCustomerId() string { + if x != nil { + return x.CustomerId + } + return "" +} + +var File_proto_metal_vmprovisioner_v1_vmprovisioner_proto protoreflect.FileDescriptor + +const file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDesc = "" + + "\n" + + "0proto/metal/vmprovisioner/v1/vmprovisioner.proto\x12\x16metal.vmprovisioner.v1\"\x84\x04\n" + + "\bVmConfig\x123\n" + + "\x03cpu\x18\x01 \x01(\v2!.metal.vmprovisioner.v1.CpuConfigR\x03cpu\x12<\n" + + "\x06memory\x18\x02 \x01(\v2$.metal.vmprovisioner.v1.MemoryConfigR\x06memory\x126\n" + + "\x04boot\x18\x03 \x01(\v2\".metal.vmprovisioner.v1.BootConfigR\x04boot\x12?\n" + + "\astorage\x18\x04 \x03(\v2%.metal.vmprovisioner.v1.StorageDeviceR\astorage\x12B\n" + + "\anetwork\x18\x05 \x03(\v2(.metal.vmprovisioner.v1.NetworkInterfaceR\anetwork\x12?\n" + + "\aconsole\x18\x06 \x01(\v2%.metal.vmprovisioner.v1.ConsoleConfigR\aconsole\x12J\n" + + "\bmetadata\x18\a \x03(\v2..metal.vmprovisioner.v1.VmConfig.MetadataEntryR\bmetadata\x1a;\n" + + "\rMetadataEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x9b\x02\n" + + "\tCpuConfig\x12\x1d\n" + + "\n" + + "vcpu_count\x18\x01 \x01(\x05R\tvcpuCount\x12$\n" + + "\x0emax_vcpu_count\x18\x02 \x01(\x05R\fmaxVcpuCount\x12?\n" + + "\btopology\x18\x03 \x01(\v2#.metal.vmprovisioner.v1.CpuTopologyR\btopology\x12K\n" + + "\bfeatures\x18\x04 \x03(\v2/.metal.vmprovisioner.v1.CpuConfig.FeaturesEntryR\bfeatures\x1a;\n" + + "\rFeaturesEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"{\n" + + "\vCpuTopology\x12\x18\n" + + "\asockets\x18\x01 \x01(\x05R\asockets\x12(\n" + + "\x10cores_per_socket\x18\x02 \x01(\x05R\x0ecoresPerSocket\x12(\n" + + "\x10threads_per_core\x18\x03 \x01(\x05R\x0ethreadsPerCore\"\x85\x02\n" + + "\fMemoryConfig\x12\x1d\n" + + "\n" + + "size_bytes\x18\x01 \x01(\x03R\tsizeBytes\x12'\n" + + "\x0fhotplug_enabled\x18\x02 \x01(\bR\x0ehotplugEnabled\x12$\n" + + "\x0emax_size_bytes\x18\x03 \x01(\x03R\fmaxSizeBytes\x12K\n" + + "\abacking\x18\x04 \x03(\v21.metal.vmprovisioner.v1.MemoryConfig.BackingEntryR\abacking\x1a:\n" + + "\fBackingEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x87\x02\n" + + "\n" + + "BootConfig\x12\x1f\n" + + "\vkernel_path\x18\x01 \x01(\tR\n" + + "kernelPath\x12\x1f\n" + + "\vinitrd_path\x18\x02 \x01(\tR\n" + + "initrdPath\x12\x1f\n" + + "\vkernel_args\x18\x03 \x01(\tR\n" + + "kernelArgs\x12V\n" + + "\fboot_options\x18\x04 \x03(\v23.metal.vmprovisioner.v1.BootConfig.BootOptionsEntryR\vbootOptions\x1a>\n" + + "\x10BootOptionsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xa7\x02\n" + + "\rStorageDevice\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04path\x18\x02 \x01(\tR\x04path\x12\x1b\n" + + "\tread_only\x18\x03 \x01(\bR\breadOnly\x12$\n" + + "\x0eis_root_device\x18\x04 \x01(\bR\fisRootDevice\x12%\n" + + "\x0einterface_type\x18\x05 \x01(\tR\rinterfaceType\x12L\n" + + "\aoptions\x18\x06 \x03(\v22.metal.vmprovisioner.v1.StorageDevice.OptionsEntryR\aoptions\x1a:\n" + + "\fOptionsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xe7\x04\n" + + "\x10NetworkInterface\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" + + "\vmac_address\x18\x02 \x01(\tR\n" + + "macAddress\x12\x1d\n" + + "\n" + + "tap_device\x18\x03 \x01(\tR\ttapDevice\x12%\n" + + "\x0einterface_type\x18\x04 \x01(\tR\rinterfaceType\x12O\n" + + "\aoptions\x18\x05 \x03(\v25.metal.vmprovisioner.v1.NetworkInterface.OptionsEntryR\aoptions\x12C\n" + + "\vipv4_config\x18\x06 \x01(\v2\".metal.vmprovisioner.v1.IPv4ConfigR\n" + + "ipv4Config\x12C\n" + + "\vipv6_config\x18\a \x01(\v2\".metal.vmprovisioner.v1.IPv6ConfigR\n" + + "ipv6Config\x127\n" + + "\x04mode\x18\b \x01(\x0e2#.metal.vmprovisioner.v1.NetworkModeR\x04mode\x12E\n" + + "\rrx_rate_limit\x18\n" + + " \x01(\v2!.metal.vmprovisioner.v1.RateLimitR\vrxRateLimit\x12E\n" + + "\rtx_rate_limit\x18\v \x01(\v2!.metal.vmprovisioner.v1.RateLimitR\vtxRateLimit\x1a:\n" + + "\fOptionsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x8f\x01\n" + + "\n" + + "IPv4Config\x12\x18\n" + + "\aaddress\x18\x01 \x01(\tR\aaddress\x12\x18\n" + + "\anetmask\x18\x02 \x01(\tR\anetmask\x12\x18\n" + + "\agateway\x18\x03 \x01(\tR\agateway\x12\x1f\n" + + "\vdns_servers\x18\x04 \x03(\tR\n" + + "dnsServers\x12\x12\n" + + "\x04dhcp\x18\x05 \x01(\bR\x04dhcp\"\xea\x01\n" + + "\n" + + "IPv6Config\x12\x18\n" + + "\aaddress\x18\x01 \x01(\tR\aaddress\x12#\n" + + "\rprefix_length\x18\x02 \x01(\x05R\fprefixLength\x12\x18\n" + + "\agateway\x18\x03 \x01(\tR\agateway\x12\x1f\n" + + "\vdns_servers\x18\x04 \x03(\tR\n" + + "dnsServers\x12\x14\n" + + "\x05slaac\x18\x05 \x01(\bR\x05slaac\x12-\n" + + "\x12privacy_extensions\x18\x06 \x01(\bR\x11privacyExtensions\x12\x1d\n" + + "\n" + + "link_local\x18\a \x01(\tR\tlinkLocal\"`\n" + + "\tRateLimit\x12\x1c\n" + + "\tbandwidth\x18\x01 \x01(\x03R\tbandwidth\x12\x1f\n" + + "\vrefill_time\x18\x02 \x01(\x03R\n" + + "refillTime\x12\x14\n" + + "\x05burst\x18\x03 \x01(\x03R\x05burst\"z\n" + + "\rConsoleConfig\x12\x18\n" + + "\aenabled\x18\x01 \x01(\bR\aenabled\x12\x16\n" + + "\x06output\x18\x02 \x01(\tR\x06output\x12\x14\n" + + "\x05input\x18\x03 \x01(\tR\x05input\x12!\n" + + "\fconsole_type\x18\x04 \x01(\tR\vconsoleType\"\x81\x01\n" + + "\x0fCreateVmRequest\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x128\n" + + "\x06config\x18\x02 \x01(\v2 .metal.vmprovisioner.v1.VmConfigR\x06config\x12\x1f\n" + + "\vcustomer_id\x18\x03 \x01(\tR\n" + + "customerId\"^\n" + + "\x10CreateVmResponse\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x125\n" + + "\x05state\x18\x02 \x01(\x0e2\x1f.metal.vmprovisioner.v1.VmStateR\x05state\"<\n" + + "\x0fDeleteVmRequest\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12\x14\n" + + "\x05force\x18\x02 \x01(\bR\x05force\",\n" + + "\x10DeleteVmResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\"$\n" + + "\rBootVmRequest\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\"a\n" + + "\x0eBootVmResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x125\n" + + "\x05state\x18\x02 \x01(\x0e2\x1f.metal.vmprovisioner.v1.VmStateR\x05state\"g\n" + + "\x11ShutdownVmRequest\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12\x14\n" + + "\x05force\x18\x02 \x01(\bR\x05force\x12'\n" + + "\x0ftimeout_seconds\x18\x03 \x01(\x05R\x0etimeoutSeconds\"e\n" + + "\x12ShutdownVmResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x125\n" + + "\x05state\x18\x02 \x01(\x0e2\x1f.metal.vmprovisioner.v1.VmStateR\x05state\"%\n" + + "\x0ePauseVmRequest\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\"b\n" + + "\x0fPauseVmResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x125\n" + + "\x05state\x18\x02 \x01(\x0e2\x1f.metal.vmprovisioner.v1.VmStateR\x05state\"&\n" + + "\x0fResumeVmRequest\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\"c\n" + + "\x10ResumeVmResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x125\n" + + "\x05state\x18\x02 \x01(\x0e2\x1f.metal.vmprovisioner.v1.VmStateR\x05state\"<\n" + + "\x0fRebootVmRequest\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12\x14\n" + + "\x05force\x18\x02 \x01(\bR\x05force\"c\n" + + "\x10RebootVmResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x125\n" + + "\x05state\x18\x02 \x01(\x0e2\x1f.metal.vmprovisioner.v1.VmStateR\x05state\"'\n" + + "\x10GetVmInfoRequest\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\"\xbf\x03\n" + + "\x11GetVmInfoResponse\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x128\n" + + "\x06config\x18\x02 \x01(\v2 .metal.vmprovisioner.v1.VmConfigR\x06config\x125\n" + + "\x05state\x18\x03 \x01(\x0e2\x1f.metal.vmprovisioner.v1.VmStateR\x05state\x12;\n" + + "\ametrics\x18\x04 \x01(\v2!.metal.vmprovisioner.v1.VmMetricsR\ametrics\x12]\n" + + "\fbackend_info\x18\x05 \x03(\v2:.metal.vmprovisioner.v1.GetVmInfoResponse.BackendInfoEntryR\vbackendInfo\x12H\n" + + "\fnetwork_info\x18\x06 \x01(\v2%.metal.vmprovisioner.v1.VmNetworkInfoR\vnetworkInfo\x1a>\n" + + "\x10BackendInfoEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"m\n" + + "\vPortMapping\x12%\n" + + "\x0econtainer_port\x18\x01 \x01(\x05R\rcontainerPort\x12\x1b\n" + + "\thost_port\x18\x02 \x01(\x05R\bhostPort\x12\x1a\n" + + "\bprotocol\x18\x03 \x01(\tR\bprotocol\"\xa0\x02\n" + + "\rVmNetworkInfo\x12\x1d\n" + + "\n" + + "ip_address\x18\x01 \x01(\tR\tipAddress\x12\x1f\n" + + "\vmac_address\x18\x02 \x01(\tR\n" + + "macAddress\x12\x1d\n" + + "\n" + + "tap_device\x18\x03 \x01(\tR\ttapDevice\x12+\n" + + "\x11network_namespace\x18\x04 \x01(\tR\x10networkNamespace\x12\x18\n" + + "\agateway\x18\x05 \x01(\tR\agateway\x12\x1f\n" + + "\vdns_servers\x18\x06 \x03(\tR\n" + + "dnsServers\x12H\n" + + "\rport_mappings\x18\a \x03(\v2#.metal.vmprovisioner.v1.PortMappingR\fportMappings\"\xa2\x02\n" + + "\tVmMetrics\x12*\n" + + "\x11cpu_usage_percent\x18\x01 \x01(\x01R\x0fcpuUsagePercent\x12,\n" + + "\x12memory_usage_bytes\x18\x02 \x01(\x03R\x10memoryUsageBytes\x12I\n" + + "\rnetwork_stats\x18\x03 \x01(\v2$.metal.vmprovisioner.v1.NetworkStatsR\fnetworkStats\x12I\n" + + "\rstorage_stats\x18\x04 \x01(\v2$.metal.vmprovisioner.v1.StorageStatsR\fstorageStats\x12%\n" + + "\x0euptime_seconds\x18\x05 \x01(\x03R\ruptimeSeconds\"\xbe\x01\n" + + "\fNetworkStats\x12%\n" + + "\x0ebytes_received\x18\x01 \x01(\x03R\rbytesReceived\x12+\n" + + "\x11bytes_transmitted\x18\x02 \x01(\x03R\x10bytesTransmitted\x12)\n" + + "\x10packets_received\x18\x03 \x01(\x03R\x0fpacketsReceived\x12/\n" + + "\x13packets_transmitted\x18\x04 \x01(\x03R\x12packetsTransmitted\"\xa6\x01\n" + + "\fStorageStats\x12\x1d\n" + + "\n" + + "bytes_read\x18\x01 \x01(\x03R\tbytesRead\x12#\n" + + "\rbytes_written\x18\x02 \x01(\x03R\fbytesWritten\x12'\n" + + "\x0fread_operations\x18\x03 \x01(\x03R\x0ereadOperations\x12)\n" + + "\x10write_operations\x18\x04 \x01(\x03R\x0fwriteOperations\"\x90\x01\n" + + "\x0eListVmsRequest\x12B\n" + + "\fstate_filter\x18\x01 \x03(\x0e2\x1f.metal.vmprovisioner.v1.VmStateR\vstateFilter\x12\x1b\n" + + "\tpage_size\x18\x02 \x01(\x05R\bpageSize\x12\x1d\n" + + "\n" + + "page_token\x18\x03 \x01(\tR\tpageToken\"\x8c\x01\n" + + "\x0fListVmsResponse\x120\n" + + "\x03vms\x18\x01 \x03(\v2\x1e.metal.vmprovisioner.v1.VmInfoR\x03vms\x12&\n" + + "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12\x1f\n" + + "\vtotal_count\x18\x03 \x01(\x05R\n" + + "totalCount\"\xa3\x03\n" + + "\x06VmInfo\x12\x13\n" + + "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x125\n" + + "\x05state\x18\x02 \x01(\x0e2\x1f.metal.vmprovisioner.v1.VmStateR\x05state\x12\x1d\n" + + "\n" + + "vcpu_count\x18\x03 \x01(\x05R\tvcpuCount\x12*\n" + + "\x11memory_size_bytes\x18\x04 \x01(\x03R\x0fmemorySizeBytes\x12+\n" + + "\x11created_timestamp\x18\x05 \x01(\x03R\x10createdTimestamp\x12-\n" + + "\x12modified_timestamp\x18\x06 \x01(\x03R\x11modifiedTimestamp\x12H\n" + + "\bmetadata\x18\a \x03(\v2,.metal.vmprovisioner.v1.VmInfo.MetadataEntryR\bmetadata\x12\x1f\n" + + "\vcustomer_id\x18\b \x01(\tR\n" + + "customerId\x1a;\n" + + "\rMetadataEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01*{\n" + + "\aVmState\x12\x18\n" + + "\x14VM_STATE_UNSPECIFIED\x10\x00\x12\x14\n" + + "\x10VM_STATE_CREATED\x10\x01\x12\x14\n" + + "\x10VM_STATE_RUNNING\x10\x02\x12\x13\n" + + "\x0fVM_STATE_PAUSED\x10\x03\x12\x15\n" + + "\x11VM_STATE_SHUTDOWN\x10\x04*\x80\x01\n" + + "\vNetworkMode\x12\x1c\n" + + "\x18NETWORK_MODE_UNSPECIFIED\x10\x00\x12\x1b\n" + + "\x17NETWORK_MODE_DUAL_STACK\x10\x01\x12\x1a\n" + + "\x16NETWORK_MODE_IPV4_ONLY\x10\x02\x12\x1a\n" + + "\x16NETWORK_MODE_IPV6_ONLY\x10\x032\xdf\x06\n" + + "\tVmService\x12]\n" + + "\bCreateVm\x12'.metal.vmprovisioner.v1.CreateVmRequest\x1a(.metal.vmprovisioner.v1.CreateVmResponse\x12]\n" + + "\bDeleteVm\x12'.metal.vmprovisioner.v1.DeleteVmRequest\x1a(.metal.vmprovisioner.v1.DeleteVmResponse\x12W\n" + + "\x06BootVm\x12%.metal.vmprovisioner.v1.BootVmRequest\x1a&.metal.vmprovisioner.v1.BootVmResponse\x12c\n" + + "\n" + + "ShutdownVm\x12).metal.vmprovisioner.v1.ShutdownVmRequest\x1a*.metal.vmprovisioner.v1.ShutdownVmResponse\x12Z\n" + + "\aPauseVm\x12&.metal.vmprovisioner.v1.PauseVmRequest\x1a'.metal.vmprovisioner.v1.PauseVmResponse\x12]\n" + + "\bResumeVm\x12'.metal.vmprovisioner.v1.ResumeVmRequest\x1a(.metal.vmprovisioner.v1.ResumeVmResponse\x12]\n" + + "\bRebootVm\x12'.metal.vmprovisioner.v1.RebootVmRequest\x1a(.metal.vmprovisioner.v1.RebootVmResponse\x12`\n" + + "\tGetVmInfo\x12(.metal.vmprovisioner.v1.GetVmInfoRequest\x1a).metal.vmprovisioner.v1.GetVmInfoResponse\x12Z\n" + + "\aListVms\x12&.metal.vmprovisioner.v1.ListVmsRequest\x1a'.metal.vmprovisioner.v1.ListVmsResponseBNZLgithub.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1;vmprovisionerv1b\x06proto3" + +var ( + file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescOnce sync.Once + file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescData []byte +) + +func file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescGZIP() []byte { + file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescOnce.Do(func() { + file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDesc), len(file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDesc))) + }) + return file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDescData +} + +var file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes = make([]protoimpl.MessageInfo, 43) +var file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_goTypes = []any{ + (VmState)(0), // 0: metal.vmprovisioner.v1.VmState + (NetworkMode)(0), // 1: metal.vmprovisioner.v1.NetworkMode + (*VmConfig)(nil), // 2: metal.vmprovisioner.v1.VmConfig + (*CpuConfig)(nil), // 3: metal.vmprovisioner.v1.CpuConfig + (*CpuTopology)(nil), // 4: metal.vmprovisioner.v1.CpuTopology + (*MemoryConfig)(nil), // 5: metal.vmprovisioner.v1.MemoryConfig + (*BootConfig)(nil), // 6: metal.vmprovisioner.v1.BootConfig + (*StorageDevice)(nil), // 7: metal.vmprovisioner.v1.StorageDevice + (*NetworkInterface)(nil), // 8: metal.vmprovisioner.v1.NetworkInterface + (*IPv4Config)(nil), // 9: metal.vmprovisioner.v1.IPv4Config + (*IPv6Config)(nil), // 10: metal.vmprovisioner.v1.IPv6Config + (*RateLimit)(nil), // 11: metal.vmprovisioner.v1.RateLimit + (*ConsoleConfig)(nil), // 12: metal.vmprovisioner.v1.ConsoleConfig + (*CreateVmRequest)(nil), // 13: metal.vmprovisioner.v1.CreateVmRequest + (*CreateVmResponse)(nil), // 14: metal.vmprovisioner.v1.CreateVmResponse + (*DeleteVmRequest)(nil), // 15: metal.vmprovisioner.v1.DeleteVmRequest + (*DeleteVmResponse)(nil), // 16: metal.vmprovisioner.v1.DeleteVmResponse + (*BootVmRequest)(nil), // 17: metal.vmprovisioner.v1.BootVmRequest + (*BootVmResponse)(nil), // 18: metal.vmprovisioner.v1.BootVmResponse + (*ShutdownVmRequest)(nil), // 19: metal.vmprovisioner.v1.ShutdownVmRequest + (*ShutdownVmResponse)(nil), // 20: metal.vmprovisioner.v1.ShutdownVmResponse + (*PauseVmRequest)(nil), // 21: metal.vmprovisioner.v1.PauseVmRequest + (*PauseVmResponse)(nil), // 22: metal.vmprovisioner.v1.PauseVmResponse + (*ResumeVmRequest)(nil), // 23: metal.vmprovisioner.v1.ResumeVmRequest + (*ResumeVmResponse)(nil), // 24: metal.vmprovisioner.v1.ResumeVmResponse + (*RebootVmRequest)(nil), // 25: metal.vmprovisioner.v1.RebootVmRequest + (*RebootVmResponse)(nil), // 26: metal.vmprovisioner.v1.RebootVmResponse + (*GetVmInfoRequest)(nil), // 27: metal.vmprovisioner.v1.GetVmInfoRequest + (*GetVmInfoResponse)(nil), // 28: metal.vmprovisioner.v1.GetVmInfoResponse + (*PortMapping)(nil), // 29: metal.vmprovisioner.v1.PortMapping + (*VmNetworkInfo)(nil), // 30: metal.vmprovisioner.v1.VmNetworkInfo + (*VmMetrics)(nil), // 31: metal.vmprovisioner.v1.VmMetrics + (*NetworkStats)(nil), // 32: metal.vmprovisioner.v1.NetworkStats + (*StorageStats)(nil), // 33: metal.vmprovisioner.v1.StorageStats + (*ListVmsRequest)(nil), // 34: metal.vmprovisioner.v1.ListVmsRequest + (*ListVmsResponse)(nil), // 35: metal.vmprovisioner.v1.ListVmsResponse + (*VmInfo)(nil), // 36: metal.vmprovisioner.v1.VmInfo + nil, // 37: metal.vmprovisioner.v1.VmConfig.MetadataEntry + nil, // 38: metal.vmprovisioner.v1.CpuConfig.FeaturesEntry + nil, // 39: metal.vmprovisioner.v1.MemoryConfig.BackingEntry + nil, // 40: metal.vmprovisioner.v1.BootConfig.BootOptionsEntry + nil, // 41: metal.vmprovisioner.v1.StorageDevice.OptionsEntry + nil, // 42: metal.vmprovisioner.v1.NetworkInterface.OptionsEntry + nil, // 43: metal.vmprovisioner.v1.GetVmInfoResponse.BackendInfoEntry + nil, // 44: metal.vmprovisioner.v1.VmInfo.MetadataEntry +} +var file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_depIdxs = []int32{ + 3, // 0: metal.vmprovisioner.v1.VmConfig.cpu:type_name -> metal.vmprovisioner.v1.CpuConfig + 5, // 1: metal.vmprovisioner.v1.VmConfig.memory:type_name -> metal.vmprovisioner.v1.MemoryConfig + 6, // 2: metal.vmprovisioner.v1.VmConfig.boot:type_name -> metal.vmprovisioner.v1.BootConfig + 7, // 3: metal.vmprovisioner.v1.VmConfig.storage:type_name -> metal.vmprovisioner.v1.StorageDevice + 8, // 4: metal.vmprovisioner.v1.VmConfig.network:type_name -> metal.vmprovisioner.v1.NetworkInterface + 12, // 5: metal.vmprovisioner.v1.VmConfig.console:type_name -> metal.vmprovisioner.v1.ConsoleConfig + 37, // 6: metal.vmprovisioner.v1.VmConfig.metadata:type_name -> metal.vmprovisioner.v1.VmConfig.MetadataEntry + 4, // 7: metal.vmprovisioner.v1.CpuConfig.topology:type_name -> metal.vmprovisioner.v1.CpuTopology + 38, // 8: metal.vmprovisioner.v1.CpuConfig.features:type_name -> metal.vmprovisioner.v1.CpuConfig.FeaturesEntry + 39, // 9: metal.vmprovisioner.v1.MemoryConfig.backing:type_name -> metal.vmprovisioner.v1.MemoryConfig.BackingEntry + 40, // 10: metal.vmprovisioner.v1.BootConfig.boot_options:type_name -> metal.vmprovisioner.v1.BootConfig.BootOptionsEntry + 41, // 11: metal.vmprovisioner.v1.StorageDevice.options:type_name -> metal.vmprovisioner.v1.StorageDevice.OptionsEntry + 42, // 12: metal.vmprovisioner.v1.NetworkInterface.options:type_name -> metal.vmprovisioner.v1.NetworkInterface.OptionsEntry + 9, // 13: metal.vmprovisioner.v1.NetworkInterface.ipv4_config:type_name -> metal.vmprovisioner.v1.IPv4Config + 10, // 14: metal.vmprovisioner.v1.NetworkInterface.ipv6_config:type_name -> metal.vmprovisioner.v1.IPv6Config + 1, // 15: metal.vmprovisioner.v1.NetworkInterface.mode:type_name -> metal.vmprovisioner.v1.NetworkMode + 11, // 16: metal.vmprovisioner.v1.NetworkInterface.rx_rate_limit:type_name -> metal.vmprovisioner.v1.RateLimit + 11, // 17: metal.vmprovisioner.v1.NetworkInterface.tx_rate_limit:type_name -> metal.vmprovisioner.v1.RateLimit + 2, // 18: metal.vmprovisioner.v1.CreateVmRequest.config:type_name -> metal.vmprovisioner.v1.VmConfig + 0, // 19: metal.vmprovisioner.v1.CreateVmResponse.state:type_name -> metal.vmprovisioner.v1.VmState + 0, // 20: metal.vmprovisioner.v1.BootVmResponse.state:type_name -> metal.vmprovisioner.v1.VmState + 0, // 21: metal.vmprovisioner.v1.ShutdownVmResponse.state:type_name -> metal.vmprovisioner.v1.VmState + 0, // 22: metal.vmprovisioner.v1.PauseVmResponse.state:type_name -> metal.vmprovisioner.v1.VmState + 0, // 23: metal.vmprovisioner.v1.ResumeVmResponse.state:type_name -> metal.vmprovisioner.v1.VmState + 0, // 24: metal.vmprovisioner.v1.RebootVmResponse.state:type_name -> metal.vmprovisioner.v1.VmState + 2, // 25: metal.vmprovisioner.v1.GetVmInfoResponse.config:type_name -> metal.vmprovisioner.v1.VmConfig + 0, // 26: metal.vmprovisioner.v1.GetVmInfoResponse.state:type_name -> metal.vmprovisioner.v1.VmState + 31, // 27: metal.vmprovisioner.v1.GetVmInfoResponse.metrics:type_name -> metal.vmprovisioner.v1.VmMetrics + 43, // 28: metal.vmprovisioner.v1.GetVmInfoResponse.backend_info:type_name -> metal.vmprovisioner.v1.GetVmInfoResponse.BackendInfoEntry + 30, // 29: metal.vmprovisioner.v1.GetVmInfoResponse.network_info:type_name -> metal.vmprovisioner.v1.VmNetworkInfo + 29, // 30: metal.vmprovisioner.v1.VmNetworkInfo.port_mappings:type_name -> metal.vmprovisioner.v1.PortMapping + 32, // 31: metal.vmprovisioner.v1.VmMetrics.network_stats:type_name -> metal.vmprovisioner.v1.NetworkStats + 33, // 32: metal.vmprovisioner.v1.VmMetrics.storage_stats:type_name -> metal.vmprovisioner.v1.StorageStats + 0, // 33: metal.vmprovisioner.v1.ListVmsRequest.state_filter:type_name -> metal.vmprovisioner.v1.VmState + 36, // 34: metal.vmprovisioner.v1.ListVmsResponse.vms:type_name -> metal.vmprovisioner.v1.VmInfo + 0, // 35: metal.vmprovisioner.v1.VmInfo.state:type_name -> metal.vmprovisioner.v1.VmState + 44, // 36: metal.vmprovisioner.v1.VmInfo.metadata:type_name -> metal.vmprovisioner.v1.VmInfo.MetadataEntry + 13, // 37: metal.vmprovisioner.v1.VmService.CreateVm:input_type -> metal.vmprovisioner.v1.CreateVmRequest + 15, // 38: metal.vmprovisioner.v1.VmService.DeleteVm:input_type -> metal.vmprovisioner.v1.DeleteVmRequest + 17, // 39: metal.vmprovisioner.v1.VmService.BootVm:input_type -> metal.vmprovisioner.v1.BootVmRequest + 19, // 40: metal.vmprovisioner.v1.VmService.ShutdownVm:input_type -> metal.vmprovisioner.v1.ShutdownVmRequest + 21, // 41: metal.vmprovisioner.v1.VmService.PauseVm:input_type -> metal.vmprovisioner.v1.PauseVmRequest + 23, // 42: metal.vmprovisioner.v1.VmService.ResumeVm:input_type -> metal.vmprovisioner.v1.ResumeVmRequest + 25, // 43: metal.vmprovisioner.v1.VmService.RebootVm:input_type -> metal.vmprovisioner.v1.RebootVmRequest + 27, // 44: metal.vmprovisioner.v1.VmService.GetVmInfo:input_type -> metal.vmprovisioner.v1.GetVmInfoRequest + 34, // 45: metal.vmprovisioner.v1.VmService.ListVms:input_type -> metal.vmprovisioner.v1.ListVmsRequest + 14, // 46: metal.vmprovisioner.v1.VmService.CreateVm:output_type -> metal.vmprovisioner.v1.CreateVmResponse + 16, // 47: metal.vmprovisioner.v1.VmService.DeleteVm:output_type -> metal.vmprovisioner.v1.DeleteVmResponse + 18, // 48: metal.vmprovisioner.v1.VmService.BootVm:output_type -> metal.vmprovisioner.v1.BootVmResponse + 20, // 49: metal.vmprovisioner.v1.VmService.ShutdownVm:output_type -> metal.vmprovisioner.v1.ShutdownVmResponse + 22, // 50: metal.vmprovisioner.v1.VmService.PauseVm:output_type -> metal.vmprovisioner.v1.PauseVmResponse + 24, // 51: metal.vmprovisioner.v1.VmService.ResumeVm:output_type -> metal.vmprovisioner.v1.ResumeVmResponse + 26, // 52: metal.vmprovisioner.v1.VmService.RebootVm:output_type -> metal.vmprovisioner.v1.RebootVmResponse + 28, // 53: metal.vmprovisioner.v1.VmService.GetVmInfo:output_type -> metal.vmprovisioner.v1.GetVmInfoResponse + 35, // 54: metal.vmprovisioner.v1.VmService.ListVms:output_type -> metal.vmprovisioner.v1.ListVmsResponse + 46, // [46:55] is the sub-list for method output_type + 37, // [37:46] is the sub-list for method input_type + 37, // [37:37] is the sub-list for extension type_name + 37, // [37:37] is the sub-list for extension extendee + 0, // [0:37] is the sub-list for field type_name +} + +func init() { file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_init() } +func file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_init() { + if File_proto_metal_vmprovisioner_v1_vmprovisioner_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDesc), len(file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_rawDesc)), + NumEnums: 2, + NumMessages: 43, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_goTypes, + DependencyIndexes: file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_depIdxs, + EnumInfos: file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_enumTypes, + MessageInfos: file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_msgTypes, + }.Build() + File_proto_metal_vmprovisioner_v1_vmprovisioner_proto = out.File + file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_goTypes = nil + file_proto_metal_vmprovisioner_v1_vmprovisioner_proto_depIdxs = nil +} diff --git a/go/gen/proto/metal/vmprovisioner/v1/vmprovisionerv1connect/vmprovisioner.connect.go b/go/gen/proto/metal/vmprovisioner/v1/vmprovisionerv1connect/vmprovisioner.connect.go new file mode 100644 index 0000000000..a77657ec28 --- /dev/null +++ b/go/gen/proto/metal/vmprovisioner/v1/vmprovisionerv1connect/vmprovisioner.connect.go @@ -0,0 +1,362 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: proto/metal/vmprovisioner/v1/vmprovisioner.proto + +package vmprovisionerv1connect + +import ( + connect "connectrpc.com/connect" + context "context" + errors "errors" + v1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // VmServiceName is the fully-qualified name of the VmService service. + VmServiceName = "metal.vmprovisioner.v1.VmService" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // VmServiceCreateVmProcedure is the fully-qualified name of the VmService's CreateVm RPC. + VmServiceCreateVmProcedure = "/metal.vmprovisioner.v1.VmService/CreateVm" + // VmServiceDeleteVmProcedure is the fully-qualified name of the VmService's DeleteVm RPC. + VmServiceDeleteVmProcedure = "/metal.vmprovisioner.v1.VmService/DeleteVm" + // VmServiceBootVmProcedure is the fully-qualified name of the VmService's BootVm RPC. + VmServiceBootVmProcedure = "/metal.vmprovisioner.v1.VmService/BootVm" + // VmServiceShutdownVmProcedure is the fully-qualified name of the VmService's ShutdownVm RPC. + VmServiceShutdownVmProcedure = "/metal.vmprovisioner.v1.VmService/ShutdownVm" + // VmServicePauseVmProcedure is the fully-qualified name of the VmService's PauseVm RPC. + VmServicePauseVmProcedure = "/metal.vmprovisioner.v1.VmService/PauseVm" + // VmServiceResumeVmProcedure is the fully-qualified name of the VmService's ResumeVm RPC. + VmServiceResumeVmProcedure = "/metal.vmprovisioner.v1.VmService/ResumeVm" + // VmServiceRebootVmProcedure is the fully-qualified name of the VmService's RebootVm RPC. + VmServiceRebootVmProcedure = "/metal.vmprovisioner.v1.VmService/RebootVm" + // VmServiceGetVmInfoProcedure is the fully-qualified name of the VmService's GetVmInfo RPC. + VmServiceGetVmInfoProcedure = "/metal.vmprovisioner.v1.VmService/GetVmInfo" + // VmServiceListVmsProcedure is the fully-qualified name of the VmService's ListVms RPC. + VmServiceListVmsProcedure = "/metal.vmprovisioner.v1.VmService/ListVms" +) + +// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. +var ( + vmServiceServiceDescriptor = v1.File_proto_metal_vmprovisioner_v1_vmprovisioner_proto.Services().ByName("VmService") + vmServiceCreateVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("CreateVm") + vmServiceDeleteVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("DeleteVm") + vmServiceBootVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("BootVm") + vmServiceShutdownVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("ShutdownVm") + vmServicePauseVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("PauseVm") + vmServiceResumeVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("ResumeVm") + vmServiceRebootVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("RebootVm") + vmServiceGetVmInfoMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("GetVmInfo") + vmServiceListVmsMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("ListVms") +) + +// VmServiceClient is a client for the metal.vmprovisioner.v1.VmService service. +type VmServiceClient interface { + // CreateVm creates a new virtual machine instance + CreateVm(context.Context, *connect.Request[v1.CreateVmRequest]) (*connect.Response[v1.CreateVmResponse], error) + // DeleteVm removes a virtual machine instance + DeleteVm(context.Context, *connect.Request[v1.DeleteVmRequest]) (*connect.Response[v1.DeleteVmResponse], error) + // BootVm starts a created virtual machine + BootVm(context.Context, *connect.Request[v1.BootVmRequest]) (*connect.Response[v1.BootVmResponse], error) + // ShutdownVm gracefully stops a running virtual machine + ShutdownVm(context.Context, *connect.Request[v1.ShutdownVmRequest]) (*connect.Response[v1.ShutdownVmResponse], error) + // PauseVm pauses a running virtual machine + PauseVm(context.Context, *connect.Request[v1.PauseVmRequest]) (*connect.Response[v1.PauseVmResponse], error) + // ResumeVm resumes a paused virtual machine + ResumeVm(context.Context, *connect.Request[v1.ResumeVmRequest]) (*connect.Response[v1.ResumeVmResponse], error) + // RebootVm restarts a running virtual machine + RebootVm(context.Context, *connect.Request[v1.RebootVmRequest]) (*connect.Response[v1.RebootVmResponse], error) + // GetVmInfo retrieves virtual machine status and configuration + GetVmInfo(context.Context, *connect.Request[v1.GetVmInfoRequest]) (*connect.Response[v1.GetVmInfoResponse], error) + // ListVms lists all virtual machines managed by this service + ListVms(context.Context, *connect.Request[v1.ListVmsRequest]) (*connect.Response[v1.ListVmsResponse], error) +} + +// NewVmServiceClient constructs a client for the metal.vmprovisioner.v1.VmService service. By +// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, +// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the +// connect.WithGRPC() or connect.WithGRPCWeb() options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewVmServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) VmServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + return &vmServiceClient{ + createVm: connect.NewClient[v1.CreateVmRequest, v1.CreateVmResponse]( + httpClient, + baseURL+VmServiceCreateVmProcedure, + connect.WithSchema(vmServiceCreateVmMethodDescriptor), + connect.WithClientOptions(opts...), + ), + deleteVm: connect.NewClient[v1.DeleteVmRequest, v1.DeleteVmResponse]( + httpClient, + baseURL+VmServiceDeleteVmProcedure, + connect.WithSchema(vmServiceDeleteVmMethodDescriptor), + connect.WithClientOptions(opts...), + ), + bootVm: connect.NewClient[v1.BootVmRequest, v1.BootVmResponse]( + httpClient, + baseURL+VmServiceBootVmProcedure, + connect.WithSchema(vmServiceBootVmMethodDescriptor), + connect.WithClientOptions(opts...), + ), + shutdownVm: connect.NewClient[v1.ShutdownVmRequest, v1.ShutdownVmResponse]( + httpClient, + baseURL+VmServiceShutdownVmProcedure, + connect.WithSchema(vmServiceShutdownVmMethodDescriptor), + connect.WithClientOptions(opts...), + ), + pauseVm: connect.NewClient[v1.PauseVmRequest, v1.PauseVmResponse]( + httpClient, + baseURL+VmServicePauseVmProcedure, + connect.WithSchema(vmServicePauseVmMethodDescriptor), + connect.WithClientOptions(opts...), + ), + resumeVm: connect.NewClient[v1.ResumeVmRequest, v1.ResumeVmResponse]( + httpClient, + baseURL+VmServiceResumeVmProcedure, + connect.WithSchema(vmServiceResumeVmMethodDescriptor), + connect.WithClientOptions(opts...), + ), + rebootVm: connect.NewClient[v1.RebootVmRequest, v1.RebootVmResponse]( + httpClient, + baseURL+VmServiceRebootVmProcedure, + connect.WithSchema(vmServiceRebootVmMethodDescriptor), + connect.WithClientOptions(opts...), + ), + getVmInfo: connect.NewClient[v1.GetVmInfoRequest, v1.GetVmInfoResponse]( + httpClient, + baseURL+VmServiceGetVmInfoProcedure, + connect.WithSchema(vmServiceGetVmInfoMethodDescriptor), + connect.WithClientOptions(opts...), + ), + listVms: connect.NewClient[v1.ListVmsRequest, v1.ListVmsResponse]( + httpClient, + baseURL+VmServiceListVmsProcedure, + connect.WithSchema(vmServiceListVmsMethodDescriptor), + connect.WithClientOptions(opts...), + ), + } +} + +// vmServiceClient implements VmServiceClient. +type vmServiceClient struct { + createVm *connect.Client[v1.CreateVmRequest, v1.CreateVmResponse] + deleteVm *connect.Client[v1.DeleteVmRequest, v1.DeleteVmResponse] + bootVm *connect.Client[v1.BootVmRequest, v1.BootVmResponse] + shutdownVm *connect.Client[v1.ShutdownVmRequest, v1.ShutdownVmResponse] + pauseVm *connect.Client[v1.PauseVmRequest, v1.PauseVmResponse] + resumeVm *connect.Client[v1.ResumeVmRequest, v1.ResumeVmResponse] + rebootVm *connect.Client[v1.RebootVmRequest, v1.RebootVmResponse] + getVmInfo *connect.Client[v1.GetVmInfoRequest, v1.GetVmInfoResponse] + listVms *connect.Client[v1.ListVmsRequest, v1.ListVmsResponse] +} + +// CreateVm calls metal.vmprovisioner.v1.VmService.CreateVm. +func (c *vmServiceClient) CreateVm(ctx context.Context, req *connect.Request[v1.CreateVmRequest]) (*connect.Response[v1.CreateVmResponse], error) { + return c.createVm.CallUnary(ctx, req) +} + +// DeleteVm calls metal.vmprovisioner.v1.VmService.DeleteVm. +func (c *vmServiceClient) DeleteVm(ctx context.Context, req *connect.Request[v1.DeleteVmRequest]) (*connect.Response[v1.DeleteVmResponse], error) { + return c.deleteVm.CallUnary(ctx, req) +} + +// BootVm calls metal.vmprovisioner.v1.VmService.BootVm. +func (c *vmServiceClient) BootVm(ctx context.Context, req *connect.Request[v1.BootVmRequest]) (*connect.Response[v1.BootVmResponse], error) { + return c.bootVm.CallUnary(ctx, req) +} + +// ShutdownVm calls metal.vmprovisioner.v1.VmService.ShutdownVm. +func (c *vmServiceClient) ShutdownVm(ctx context.Context, req *connect.Request[v1.ShutdownVmRequest]) (*connect.Response[v1.ShutdownVmResponse], error) { + return c.shutdownVm.CallUnary(ctx, req) +} + +// PauseVm calls metal.vmprovisioner.v1.VmService.PauseVm. +func (c *vmServiceClient) PauseVm(ctx context.Context, req *connect.Request[v1.PauseVmRequest]) (*connect.Response[v1.PauseVmResponse], error) { + return c.pauseVm.CallUnary(ctx, req) +} + +// ResumeVm calls metal.vmprovisioner.v1.VmService.ResumeVm. +func (c *vmServiceClient) ResumeVm(ctx context.Context, req *connect.Request[v1.ResumeVmRequest]) (*connect.Response[v1.ResumeVmResponse], error) { + return c.resumeVm.CallUnary(ctx, req) +} + +// RebootVm calls metal.vmprovisioner.v1.VmService.RebootVm. +func (c *vmServiceClient) RebootVm(ctx context.Context, req *connect.Request[v1.RebootVmRequest]) (*connect.Response[v1.RebootVmResponse], error) { + return c.rebootVm.CallUnary(ctx, req) +} + +// GetVmInfo calls metal.vmprovisioner.v1.VmService.GetVmInfo. +func (c *vmServiceClient) GetVmInfo(ctx context.Context, req *connect.Request[v1.GetVmInfoRequest]) (*connect.Response[v1.GetVmInfoResponse], error) { + return c.getVmInfo.CallUnary(ctx, req) +} + +// ListVms calls metal.vmprovisioner.v1.VmService.ListVms. +func (c *vmServiceClient) ListVms(ctx context.Context, req *connect.Request[v1.ListVmsRequest]) (*connect.Response[v1.ListVmsResponse], error) { + return c.listVms.CallUnary(ctx, req) +} + +// VmServiceHandler is an implementation of the metal.vmprovisioner.v1.VmService service. +type VmServiceHandler interface { + // CreateVm creates a new virtual machine instance + CreateVm(context.Context, *connect.Request[v1.CreateVmRequest]) (*connect.Response[v1.CreateVmResponse], error) + // DeleteVm removes a virtual machine instance + DeleteVm(context.Context, *connect.Request[v1.DeleteVmRequest]) (*connect.Response[v1.DeleteVmResponse], error) + // BootVm starts a created virtual machine + BootVm(context.Context, *connect.Request[v1.BootVmRequest]) (*connect.Response[v1.BootVmResponse], error) + // ShutdownVm gracefully stops a running virtual machine + ShutdownVm(context.Context, *connect.Request[v1.ShutdownVmRequest]) (*connect.Response[v1.ShutdownVmResponse], error) + // PauseVm pauses a running virtual machine + PauseVm(context.Context, *connect.Request[v1.PauseVmRequest]) (*connect.Response[v1.PauseVmResponse], error) + // ResumeVm resumes a paused virtual machine + ResumeVm(context.Context, *connect.Request[v1.ResumeVmRequest]) (*connect.Response[v1.ResumeVmResponse], error) + // RebootVm restarts a running virtual machine + RebootVm(context.Context, *connect.Request[v1.RebootVmRequest]) (*connect.Response[v1.RebootVmResponse], error) + // GetVmInfo retrieves virtual machine status and configuration + GetVmInfo(context.Context, *connect.Request[v1.GetVmInfoRequest]) (*connect.Response[v1.GetVmInfoResponse], error) + // ListVms lists all virtual machines managed by this service + ListVms(context.Context, *connect.Request[v1.ListVmsRequest]) (*connect.Response[v1.ListVmsResponse], error) +} + +// NewVmServiceHandler builds an HTTP handler from the service implementation. It returns the path +// on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewVmServiceHandler(svc VmServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + vmServiceCreateVmHandler := connect.NewUnaryHandler( + VmServiceCreateVmProcedure, + svc.CreateVm, + connect.WithSchema(vmServiceCreateVmMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + vmServiceDeleteVmHandler := connect.NewUnaryHandler( + VmServiceDeleteVmProcedure, + svc.DeleteVm, + connect.WithSchema(vmServiceDeleteVmMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + vmServiceBootVmHandler := connect.NewUnaryHandler( + VmServiceBootVmProcedure, + svc.BootVm, + connect.WithSchema(vmServiceBootVmMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + vmServiceShutdownVmHandler := connect.NewUnaryHandler( + VmServiceShutdownVmProcedure, + svc.ShutdownVm, + connect.WithSchema(vmServiceShutdownVmMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + vmServicePauseVmHandler := connect.NewUnaryHandler( + VmServicePauseVmProcedure, + svc.PauseVm, + connect.WithSchema(vmServicePauseVmMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + vmServiceResumeVmHandler := connect.NewUnaryHandler( + VmServiceResumeVmProcedure, + svc.ResumeVm, + connect.WithSchema(vmServiceResumeVmMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + vmServiceRebootVmHandler := connect.NewUnaryHandler( + VmServiceRebootVmProcedure, + svc.RebootVm, + connect.WithSchema(vmServiceRebootVmMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + vmServiceGetVmInfoHandler := connect.NewUnaryHandler( + VmServiceGetVmInfoProcedure, + svc.GetVmInfo, + connect.WithSchema(vmServiceGetVmInfoMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + vmServiceListVmsHandler := connect.NewUnaryHandler( + VmServiceListVmsProcedure, + svc.ListVms, + connect.WithSchema(vmServiceListVmsMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + return "/metal.vmprovisioner.v1.VmService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case VmServiceCreateVmProcedure: + vmServiceCreateVmHandler.ServeHTTP(w, r) + case VmServiceDeleteVmProcedure: + vmServiceDeleteVmHandler.ServeHTTP(w, r) + case VmServiceBootVmProcedure: + vmServiceBootVmHandler.ServeHTTP(w, r) + case VmServiceShutdownVmProcedure: + vmServiceShutdownVmHandler.ServeHTTP(w, r) + case VmServicePauseVmProcedure: + vmServicePauseVmHandler.ServeHTTP(w, r) + case VmServiceResumeVmProcedure: + vmServiceResumeVmHandler.ServeHTTP(w, r) + case VmServiceRebootVmProcedure: + vmServiceRebootVmHandler.ServeHTTP(w, r) + case VmServiceGetVmInfoProcedure: + vmServiceGetVmInfoHandler.ServeHTTP(w, r) + case VmServiceListVmsProcedure: + vmServiceListVmsHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedVmServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedVmServiceHandler struct{} + +func (UnimplementedVmServiceHandler) CreateVm(context.Context, *connect.Request[v1.CreateVmRequest]) (*connect.Response[v1.CreateVmResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metal.vmprovisioner.v1.VmService.CreateVm is not implemented")) +} + +func (UnimplementedVmServiceHandler) DeleteVm(context.Context, *connect.Request[v1.DeleteVmRequest]) (*connect.Response[v1.DeleteVmResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metal.vmprovisioner.v1.VmService.DeleteVm is not implemented")) +} + +func (UnimplementedVmServiceHandler) BootVm(context.Context, *connect.Request[v1.BootVmRequest]) (*connect.Response[v1.BootVmResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metal.vmprovisioner.v1.VmService.BootVm is not implemented")) +} + +func (UnimplementedVmServiceHandler) ShutdownVm(context.Context, *connect.Request[v1.ShutdownVmRequest]) (*connect.Response[v1.ShutdownVmResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metal.vmprovisioner.v1.VmService.ShutdownVm is not implemented")) +} + +func (UnimplementedVmServiceHandler) PauseVm(context.Context, *connect.Request[v1.PauseVmRequest]) (*connect.Response[v1.PauseVmResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metal.vmprovisioner.v1.VmService.PauseVm is not implemented")) +} + +func (UnimplementedVmServiceHandler) ResumeVm(context.Context, *connect.Request[v1.ResumeVmRequest]) (*connect.Response[v1.ResumeVmResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metal.vmprovisioner.v1.VmService.ResumeVm is not implemented")) +} + +func (UnimplementedVmServiceHandler) RebootVm(context.Context, *connect.Request[v1.RebootVmRequest]) (*connect.Response[v1.RebootVmResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metal.vmprovisioner.v1.VmService.RebootVm is not implemented")) +} + +func (UnimplementedVmServiceHandler) GetVmInfo(context.Context, *connect.Request[v1.GetVmInfoRequest]) (*connect.Response[v1.GetVmInfoResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metal.vmprovisioner.v1.VmService.GetVmInfo is not implemented")) +} + +func (UnimplementedVmServiceHandler) ListVms(context.Context, *connect.Request[v1.ListVmsRequest]) (*connect.Response[v1.ListVmsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metal.vmprovisioner.v1.VmService.ListVms is not implemented")) +} diff --git a/go/go.mod b/go/go.mod index 466db389bf..35fab039bf 100644 --- a/go/go.mod +++ b/go/go.mod @@ -1,6 +1,6 @@ module github.com/unkeyed/unkey/go -go 1.24.0 +go 1.24.4 require ( connectrpc.com/connect v1.18.1 @@ -28,26 +28,29 @@ require ( github.com/shirou/gopsutil/v4 v4.25.5 github.com/sqlc-dev/sqlc v1.28.0 github.com/stretchr/testify v1.10.0 + github.com/unkeyed/unkey/go/deploy/assetmanagerd v0.0.0-20250709084132-0dd195e4c51b + github.com/unkeyed/unkey/go/deploy/billaged v0.0.0-20250709084132-0dd195e4c51b + github.com/unkeyed/unkey/go/deploy/builderd v0.0.0-20250709084132-0dd195e4c51b github.com/urfave/cli/v3 v3.3.3 go.opentelemetry.io/contrib/bridges/otelslog v0.11.0 go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 go.opentelemetry.io/contrib/processors/minsev v0.9.0 - go.opentelemetry.io/otel v1.36.0 + go.opentelemetry.io/otel v1.37.0 go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.12.2 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.36.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0 - go.opentelemetry.io/otel/metric v1.36.0 - go.opentelemetry.io/otel/sdk v1.36.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.37.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0 + go.opentelemetry.io/otel/metric v1.37.0 + go.opentelemetry.io/otel/sdk v1.37.0 go.opentelemetry.io/otel/sdk/log v0.12.2 - go.opentelemetry.io/otel/sdk/metric v1.36.0 - go.opentelemetry.io/otel/trace v1.36.0 - golang.org/x/net v0.40.0 - golang.org/x/text v0.25.0 + go.opentelemetry.io/otel/sdk/metric v1.37.0 + go.opentelemetry.io/otel/trace v1.37.0 + golang.org/x/net v0.41.0 + golang.org/x/text v0.26.0 google.golang.org/protobuf v1.36.6 ) require ( - cel.dev/expr v0.20.0 // indirect + cel.dev/expr v0.23.0 // indirect dario.cat/mergo v1.0.2 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect @@ -110,7 +113,7 @@ require ( github.com/google/cel-go v0.22.1 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect @@ -151,7 +154,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.64.0 // indirect + github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.7 // indirect @@ -178,21 +181,21 @@ require ( github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect go.opentelemetry.io/otel/log v0.12.2 // indirect go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.38.0 // indirect + golang.org/x/crypto v0.39.0 // indirect golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect - golang.org/x/mod v0.24.0 // indirect - golang.org/x/sync v0.14.0 // indirect + golang.org/x/mod v0.25.0 // indirect + golang.org/x/sync v0.15.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/tools v0.31.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect - google.golang.org/grpc v1.72.2 // indirect + golang.org/x/tools v0.33.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/grpc v1.73.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go/go.sum b/go/go.sum index 818d615f88..beb54a8d1c 100644 --- a/go/go.sum +++ b/go/go.sum @@ -1,5 +1,5 @@ -cel.dev/expr v0.20.0 h1:OunBvVCfvpWlt4dN7zg3FM6TDkzOePe1+foGJ9AXeeI= -cel.dev/expr v0.20.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= +cel.dev/expr v0.23.0 h1:wUb94w6OYQS4uXraxo9U+wUAs9jT47Xvl4iPgAwM2ss= +cel.dev/expr v0.23.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= connectrpc.com/connect v1.18.1 h1:PAg7CjSAGvscaf6YZKUefjoih5Z/qYkyaTrBW8xvYPw= connectrpc.com/connect v1.18.1/go.mod h1:0292hj1rnx8oFrStN7cB4jjVBeqs+Yx5yDIC2prWDO8= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= @@ -192,8 +192,8 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaU github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= @@ -327,8 +327,8 @@ github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= -github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/redis/go-redis/v9 v9.9.0 h1:URbPQ4xVQSQhZ27WMQVmZSo3uT3pL+4IdHVcYq2nVfM= @@ -386,6 +386,12 @@ github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfj github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/unkeyed/unkey/go/deploy/assetmanagerd v0.0.0-20250709084132-0dd195e4c51b h1:102XGZQrY3viWW78AQ/piW0rwSPSMljGmz6QgiNLYrw= +github.com/unkeyed/unkey/go/deploy/assetmanagerd v0.0.0-20250709084132-0dd195e4c51b/go.mod h1:0FGpQCOhGyvLQyCawTdYnLOY/1/mtPSSWndCwgaMnkc= +github.com/unkeyed/unkey/go/deploy/billaged v0.0.0-20250709084132-0dd195e4c51b h1:xrwqIkZSBoeHEG633k9gFneN3WcZbOTVSaxs+TgknLk= +github.com/unkeyed/unkey/go/deploy/billaged v0.0.0-20250709084132-0dd195e4c51b/go.mod h1:E88GqmQBLAmuRWX8bRG7Pf56Cfmut6YQApUpFVe7PuQ= +github.com/unkeyed/unkey/go/deploy/builderd v0.0.0-20250709084132-0dd195e4c51b h1:nyFQrGeZyvt5Nbcz5n9YDzUC4S2gezRoIWWKrwdLCik= +github.com/unkeyed/unkey/go/deploy/builderd v0.0.0-20250709084132-0dd195e4c51b/go.mod h1:yEwRt1cVfgrHF09ZynWIWV2MSj0tIGysTuLGBJR5TTM= github.com/urfave/cli/v3 v3.3.3 h1:byCBaVdIXuLPIDm5CYZRVG6NvT7tv1ECqdU4YzlEa3I= github.com/urfave/cli/v3 v3.3.3/go.mod h1:FJSKtM/9AiiTOJL4fJ6TbMUkxBXn7GO9guZqoZtpYpo= github.com/vmware-labs/yaml-jsonpath v0.3.2 h1:/5QKeCBGdsInyDCyVNLbXyilb61MXGi9NP674f9Hobk= @@ -424,30 +430,30 @@ go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 h1:RyrtJzu5MAmIcbRrwg75b+ go.opentelemetry.io/contrib/bridges/prometheus v0.61.0/go.mod h1:tirr4p9NXbzjlbruiRGp53IzlYrDk5CO2fdHj0sSSaY= go.opentelemetry.io/contrib/processors/minsev v0.9.0 h1:eKlDcNp+GSygGk6PMJJyEdej+E1HteUy+KsY2YzaLbM= go.opentelemetry.io/contrib/processors/minsev v0.9.0/go.mod h1:p8UCIy0r8hjrVD1Hb/4IUDSIpiZmlJl5DhCZOYgMWc4= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.12.2 h1:tPLwQlXbJ8NSOfZc4OkgU5h2A38M4c9kfHSVc4PFQGs= go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.12.2/go.mod h1:QTnxBwT/1rBIgAG1goq6xMydfYOBKU6KTiYF4fp5zL8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.36.0 h1:gAU726w9J8fwr4qRDqu1GYMNNs4gXrU+Pv20/N1UpB4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.36.0/go.mod h1:RboSDkp7N292rgu+T0MgVt2qgFGu6qa1RpZDOtpL76w= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0 h1:nRVXXvf78e00EwY6Wp0YII8ww2JVWshZ20HfTlE11AM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0/go.mod h1:r49hO7CgrxY9Voaj3Xe8pANWtr0Oq916d0XAmOoCZAQ= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.37.0 h1:9PgnL3QNlj10uGxExowIDIZu66aVBwWhXmbOp1pa6RA= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.37.0/go.mod h1:0ineDcLELf6JmKfuo0wvvhAVMuxWFYvkTin2iV4ydPQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0 h1:bDMKF3RUSxshZ5OjOTi8rsHGaPKsAt76FaqgvIUySLc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0/go.mod h1:dDT67G/IkA46Mr2l9Uj7HsQVwsjASyV9SjGofsiUZDA= go.opentelemetry.io/otel/log v0.12.2 h1:yob9JVHn2ZY24byZeaXpTVoPS6l+UrrxmxmPKohXTwc= go.opentelemetry.io/otel/log v0.12.2/go.mod h1:ShIItIxSYxufUMt+1H5a2wbckGli3/iCfuEbVZi/98E= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= go.opentelemetry.io/otel/sdk/log v0.12.2 h1:yNoETvTByVKi7wHvYS6HMcZrN5hFLD7I++1xIZ/k6W0= go.opentelemetry.io/otel/sdk/log v0.12.2/go.mod h1:DcpdmUXHJgSqN/dh+XMWa7Vf89u9ap0/AAk/XGLnEzY= go.opentelemetry.io/otel/sdk/log/logtest v0.0.0-20250521073539-a85ae98dcedc h1:uqxdywfHqqCl6LmZzI3pUnXT1RGFYyUgxj0AkWPFxi0= go.opentelemetry.io/otel/sdk/log/logtest v0.0.0-20250521073539-a85ae98dcedc/go.mod h1:TY/N/FT7dmFrP/r5ym3g0yysP1DefqGpAZr4f82P0dE= -go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= -go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -471,15 +477,15 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= 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.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -487,15 +493,15 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= 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-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= 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= @@ -517,8 +523,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.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.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -526,18 +532,18 @@ golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtn 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-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= -golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= +golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= +golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= 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/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/go/deploy/metald/proto/vmprovisioner/v1/vm.proto b/go/proto/metal/vmprovisioner/v1/vmprovisioner.proto similarity index 98% rename from go/deploy/metald/proto/vmprovisioner/v1/vm.proto rename to go/proto/metal/vmprovisioner/v1/vmprovisioner.proto index 27983ed2c0..b39908adba 100644 --- a/go/deploy/metald/proto/vmprovisioner/v1/vm.proto +++ b/go/proto/metal/vmprovisioner/v1/vmprovisioner.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package vmprovisioner.v1; +package metal.vmprovisioner.v1; -option go_package = "metald/gen/vmprovisioner/v1;vmprovisionerv1"; +option go_package = "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1;vmprovisionerv1"; // VmService provides unified VM management across different hypervisor backends service VmService { @@ -387,4 +387,4 @@ message VmInfo { // Customer identifier string customer_id = 8; -} +} \ No newline at end of file From 0de77f5a26e4a594623fdbcdfc575049e2e5573d Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 12:10:02 +0200 Subject: [PATCH 02/20] feat: workflow calls metald to create and boot a vm --- go/apps/ctrl/run.go | 3 +- .../ctrl/services/version/deploy_workflow.go | 358 ++++++++++++------ 2 files changed, 247 insertions(+), 114 deletions(-) diff --git a/go/apps/ctrl/run.go b/go/apps/ctrl/run.go index 8ea9b829c9..2f23aef4b8 100644 --- a/go/apps/ctrl/run.go +++ b/go/apps/ctrl/run.go @@ -103,7 +103,8 @@ func Run(ctx context.Context, cfg Config) error { builderService := builder.NewMockService() // Register deployment workflow with Hydra worker - deployWorkflow := version.NewDeployWorkflow(database, logger, builderService) + // TODO: Replace nil with actual metald client when available + deployWorkflow := version.NewDeployWorkflow(database, logger, builderService, nil) err = hydra.RegisterWorkflow(hydraWorker, deployWorkflow) if err != nil { return fmt.Errorf("unable to register deployment workflow: %w", err) diff --git a/go/apps/ctrl/services/version/deploy_workflow.go b/go/apps/ctrl/services/version/deploy_workflow.go index 29c50374d0..d5408d21f8 100644 --- a/go/apps/ctrl/services/version/deploy_workflow.go +++ b/go/apps/ctrl/services/version/deploy_workflow.go @@ -6,6 +6,9 @@ import ( "fmt" "time" + "connectrpc.com/connect" + vmprovisionerv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" + "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1/vmprovisionerv1connect" "github.com/unkeyed/unkey/go/pkg/builder" "github.com/unkeyed/unkey/go/pkg/db" "github.com/unkeyed/unkey/go/pkg/hydra" @@ -18,14 +21,16 @@ type DeployWorkflow struct { db db.Database logger logging.Logger builderService builder.Service + metaldClient vmprovisionerv1connect.VmServiceClient } // NewDeployWorkflow creates a new deploy workflow instance -func NewDeployWorkflow(database db.Database, logger logging.Logger, builderService builder.Service) *DeployWorkflow { +func NewDeployWorkflow(database db.Database, logger logging.Logger, builderService builder.Service, metaldClient vmprovisionerv1connect.VmServiceClient) *DeployWorkflow { return &DeployWorkflow{ db: database, logger: logger, builderService: builderService, + metaldClient: metaldClient, } } @@ -140,129 +145,204 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro return err } - // Step 7: Wait for build completion with polling - buildResult, err := hydra.Step(ctx, "wait-for-completion", func(stepCtx context.Context) (*BuildResult, error) { - w.logger.Info("waiting for build completion", "build_id", buildID) + // Wait for build completion with polling (max 150 attempts = 5 minutes) + var buildResult *BuildResult + lastStatus := "" - ticker := time.NewTicker(2 * time.Second) - defer ticker.Stop() - - lastStatus := "" - - for { - select { - case <-stepCtx.Done(): - return nil, stepCtx.Err() - case <-ticker.C: - buildStatus, statusErr := w.builderService.GetBuildStatus(stepCtx, buildID) - if statusErr != nil { - w.logger.Error("failed to get build status", "build_id", buildID, "error", statusErr) - continue - } - - currentStatus := string(buildStatus.Status) + for attempt := 1; attempt <= 150; attempt++ { + currentBuildStatus, err := hydra.Step(ctx, fmt.Sprintf("check-build-status-%d", attempt), func(stepCtx context.Context) (*builder.BuildInfo, error) { + buildStatus, statusErr := w.builderService.GetBuildStatus(stepCtx, buildID) + if statusErr != nil { + return nil, fmt.Errorf("failed to get build status: %w", statusErr) + } - // Only update if status changed - if currentStatus == lastStatus { - continue - } + w.logger.Info("build status check", "build_id", buildID, "status", string(buildStatus.Status), "attempt", attempt) + return buildStatus, nil + }) + if err != nil { + w.logger.Error("failed to check build status", "error", err, "build_id", buildID, "attempt", attempt) + return err + } - w.logger.Info("build status update", "build_id", buildID, "status", currentStatus) - lastStatus = currentStatus - - _, err = hydra.Step(ctx, "update-build-status", func(updateCtx context.Context) (*struct{}, error) { - now := time.Now().UnixMilli() - - switch buildStatus.Status { - case builder.BuildStatusQueued: - // Build is queued, no update needed yet - // Continue polling without database update - - case builder.BuildStatusRunning: - runningErr := db.Query.UpdateBuildStatus(updateCtx, w.db.RW(), db.UpdateBuildStatusParams{ - ID: buildID, - Status: db.BuildsStatusRunning, - Now: sql.NullInt64{Valid: true, Int64: now}, - }) - if runningErr != nil { - return nil, fmt.Errorf("failed to update build status to running: %w", runningErr) - } - - case builder.BuildStatusSuccess: - successErr := db.Query.UpdateBuildSucceeded(updateCtx, w.db.RW(), db.UpdateBuildSucceededParams{ - ID: buildID, - Now: sql.NullInt64{Valid: true, Int64: now}, - }) - if successErr != nil { - return nil, fmt.Errorf("failed to update build status to succeeded: %w", successErr) - } - - case builder.BuildStatusFailed: - failedErr := db.Query.UpdateBuildFailed(updateCtx, w.db.RW(), db.UpdateBuildFailedParams{ - ID: buildID, - ErrorMessage: sql.NullString{String: buildStatus.ErrorMsg, Valid: buildStatus.ErrorMsg != ""}, - Now: sql.NullInt64{Valid: true, Int64: now}, - }) - if failedErr != nil { - return nil, fmt.Errorf("failed to update build status to failed: %w", failedErr) - } - - // Also update version status to failed - versionErr := db.Query.UpdateVersionStatus(updateCtx, w.db.RW(), db.UpdateVersionStatusParams{ - ID: req.VersionID, - Status: db.VersionsStatusFailed, - Now: sql.NullInt64{Valid: true, Int64: now}, - }) - if versionErr != nil { - return nil, fmt.Errorf("failed to update version status to failed: %w", versionErr) - } - } + currentStatus := string(currentBuildStatus.Status) - return &struct{}{}, nil - }) - if err != nil { - w.logger.Error("failed to update build status", "error", err, "status", currentStatus) - if buildStatus.Status != builder.BuildStatusFailed { - continue // For non-failed states, continue polling - } - } + // Skip database update if status hasn't changed + if currentStatus == lastStatus { + // Status unchanged, continue to build completion check + } else { + _, err = hydra.Step(ctx, fmt.Sprintf("update-build-status-%d", attempt), func(updateCtx context.Context) (*struct{}, error) { + now := time.Now().UnixMilli() - // Return appropriate result based on final status - switch buildStatus.Status { + switch currentBuildStatus.Status { case builder.BuildStatusQueued: - // Continue polling, build is still queued - continue + // Build is queued, no update needed yet case builder.BuildStatusRunning: - // Continue polling, build is still running - continue + runningErr := db.Query.UpdateBuildStatus(updateCtx, w.db.RW(), db.UpdateBuildStatusParams{ + ID: buildID, + Status: db.BuildsStatusRunning, + Now: sql.NullInt64{Valid: true, Int64: now}, + }) + if runningErr != nil { + return nil, fmt.Errorf("failed to update build status to running: %w", runningErr) + } case builder.BuildStatusSuccess: - return &BuildResult{ - BuildID: buildID, - Status: "succeeded", - ErrorMsg: "", - }, nil + successErr := db.Query.UpdateBuildSucceeded(updateCtx, w.db.RW(), db.UpdateBuildSucceededParams{ + ID: buildID, + Now: sql.NullInt64{Valid: true, Int64: now}, + }) + if successErr != nil { + return nil, fmt.Errorf("failed to update build status to succeeded: %w", successErr) + } case builder.BuildStatusFailed: - return &BuildResult{ - BuildID: buildID, - Status: "failed", - ErrorMsg: buildStatus.ErrorMsg, - }, fmt.Errorf("build failed: %s", buildStatus.ErrorMsg) + failedErr := db.Query.UpdateBuildFailed(updateCtx, w.db.RW(), db.UpdateBuildFailedParams{ + ID: buildID, + ErrorMessage: sql.NullString{String: currentBuildStatus.ErrorMsg, Valid: currentBuildStatus.ErrorMsg != ""}, + Now: sql.NullInt64{Valid: true, Int64: now}, + }) + if failedErr != nil { + return nil, fmt.Errorf("failed to update build status to failed: %w", failedErr) + } + + // Also update version status to failed + versionErr := db.Query.UpdateVersionStatus(updateCtx, w.db.RW(), db.UpdateVersionStatusParams{ + ID: req.VersionID, + Status: db.VersionsStatusFailed, + Now: sql.NullInt64{Valid: true, Int64: now}, + }) + if versionErr != nil { + return nil, fmt.Errorf("failed to update version status to failed: %w", versionErr) + } } + + return &struct{}{}, nil + }) + if err != nil { + w.logger.Error("failed to update build status", "error", err, "status", currentStatus, "attempt", attempt) + return err + } + lastStatus = currentStatus + } + + // Check if build is complete + switch currentBuildStatus.Status { + case builder.BuildStatusSuccess: + buildResult = &BuildResult{ + BuildID: buildID, + Status: "succeeded", + ErrorMsg: "", + } + goto buildComplete + + case builder.BuildStatusFailed: + buildResult = &BuildResult{ + BuildID: buildID, + Status: "failed", + ErrorMsg: currentBuildStatus.ErrorMsg, + } + goto buildComplete + + default: + // Still building, sleep before next attempt + err = hydra.Sleep(ctx, 2*time.Second) + if err != nil { + w.logger.Error("failed to sleep between build checks", "error", err, "attempt", attempt) + return err } } - }) - if err != nil { - w.logger.Error("build failed", "error", err, "build_id", buildID) - return err } - // Step 8: Deploy if build succeeded + // If we reach here, we exceeded max attempts + return fmt.Errorf("build polling timed out after 150 attempts (5 minutes)") + +buildComplete: + + // Handle build failure + if buildResult.Status == "failed" { + w.logger.Error("build failed", "build_id", buildID, "error", buildResult.ErrorMsg) + return fmt.Errorf("build failed: %s", buildResult.ErrorMsg) + } + + // Deploy if build succeeded if buildResult.Status == "succeeded" { - // Step 8b: Update version status to deploying + // Create VM first + createResult, err := hydra.Step(ctx, "create-vm", func(stepCtx context.Context) (*vmprovisionerv1.CreateVmResponse, error) { + w.logger.Info("creating VM for deployment", "version_id", req.VersionID, "docker_image", req.DockerImage) + + // Hardcoded VM configuration (TemplateStandard + ForDockerImage): + vmConfig := &vmprovisionerv1.VmConfig{ + Cpu: &vmprovisionerv1.CpuConfig{ + VcpuCount: 2, + MaxVcpuCount: 4, + }, + Memory: &vmprovisionerv1.MemoryConfig{ + SizeBytes: 2 * 1024 * 1024 * 1024, // 2GB + MaxSizeBytes: 8 * 1024 * 1024 * 1024, // 8GB + HotplugEnabled: true, + }, + Boot: &vmprovisionerv1.BootConfig{ + KernelPath: "/opt/vm-assets/vmlinux", + KernelArgs: "console=ttyS0 reboot=k panic=1 pci=off", + }, + Storage: []*vmprovisionerv1.StorageDevice{{ + Id: "rootfs", + Path: "/opt/vm-assets/rootfs.ext4", + ReadOnly: false, + IsRootDevice: true, + InterfaceType: "virtio-blk", + Options: map[string]string{ + "docker_image": req.DockerImage, + "auto_build": "true", + }, + }}, + Network: []*vmprovisionerv1.NetworkInterface{{ + Id: "eth0", + InterfaceType: "virtio-net", + Mode: vmprovisionerv1.NetworkMode_NETWORK_MODE_DUAL_STACK, + Ipv4Config: &vmprovisionerv1.IPv4Config{ + Dhcp: true, + }, + Ipv6Config: &vmprovisionerv1.IPv6Config{ + Slaac: true, + PrivacyExtensions: true, + }, + }}, + Console: &vmprovisionerv1.ConsoleConfig{ + Enabled: true, + Output: "/tmp/standard-vm-console.log", + ConsoleType: "serial", + }, + Metadata: map[string]string{ + "template": "standard", + "purpose": "general", + "docker_image": req.DockerImage, + "runtime": "docker", + "version_id": req.VersionID, + "workspace_id": req.WorkspaceID, + "project_id": req.ProjectID, + "created_by": "deploy-workflow", + }, + } + + resp, createErr := w.metaldClient.CreateVm(stepCtx, connect.NewRequest(&vmprovisionerv1.CreateVmRequest{ + Config: vmConfig, + })) + if createErr != nil { + return nil, fmt.Errorf("failed to create VM: %w", createErr) + } + + w.logger.Info("VM created successfully", "vm_id", resp.Msg.VmId, "state", resp.Msg.State.String()) + return resp.Msg, nil + }) + if err != nil { + w.logger.Error("VM creation failed", "error", err, "version_id", req.VersionID) + return err + } + + // Update version status to deploying (after successful VM creation) _, err = hydra.Step(ctx, "update-version-deploying", func(stepCtx context.Context) (*struct{}, error) { w.logger.Info("starting deployment", "version_id", req.VersionID) @@ -281,18 +361,70 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro return err } - // Step 8c: Simulate deployment process - _, err = hydra.Step(ctx, "simulate-deployment", func(stepCtx context.Context) (*struct{}, error) { - // Simulate deployment process (in real implementation, this would orchestrate actual deployment) - time.Sleep(3 * time.Second) - return &struct{}{}, nil + // Check VM readiness (max 30 attempts = 30 seconds) + for attempt := 1; attempt <= 30; attempt++ { + vmInfo, err := hydra.Step(ctx, fmt.Sprintf("check-vm-status-%d", attempt), func(stepCtx context.Context) (*vmprovisionerv1.GetVmInfoResponse, error) { + resp, getErr := w.metaldClient.GetVmInfo(stepCtx, connect.NewRequest(&vmprovisionerv1.GetVmInfoRequest{ + VmId: createResult.VmId, + })) + if getErr != nil { + return nil, fmt.Errorf("failed to get VM info: %w", getErr) + } + + w.logger.Info("VM status check", "vm_id", createResult.VmId, "state", resp.Msg.State.String(), "attempt", attempt) + return resp.Msg, nil + }) + if err != nil { + w.logger.Error("failed to check VM status", "error", err, "vm_id", createResult.VmId, "attempt", attempt) + return err + } + + // Check if VM is ready for boot + if vmInfo.State == vmprovisionerv1.VmState_VM_STATE_CREATED || + vmInfo.State == vmprovisionerv1.VmState_VM_STATE_RUNNING { + w.logger.Info("VM is ready", "vm_id", createResult.VmId, "state", vmInfo.State.String()) + goto vmReady + } + + // Sleep before next attempt (except on last attempt) + if attempt < 30 { + err = hydra.Sleep(ctx, 1*time.Second) + if err != nil { + w.logger.Error("failed to sleep between VM checks", "error", err, "attempt", attempt) + return err + } + } + } + + // If we reach here, VM never became ready + return fmt.Errorf("VM polling timed out after 30 attempts (30 seconds)") + +vmReady: + + // Boot VM + _, err = hydra.Step(ctx, "boot-vm", func(stepCtx context.Context) (*vmprovisionerv1.BootVmResponse, error) { + w.logger.Info("booting VM", "vm_id", createResult.VmId) + + resp, bootErr := w.metaldClient.BootVm(stepCtx, connect.NewRequest(&vmprovisionerv1.BootVmRequest{ + VmId: createResult.VmId, + })) + if bootErr != nil { + return nil, fmt.Errorf("failed to boot VM: %w", bootErr) + } + + if !resp.Msg.Success { + return nil, fmt.Errorf("VM boot was not successful, state: %s", resp.Msg.State.String()) + } + + w.logger.Info("VM booted successfully", "vm_id", createResult.VmId, "state", resp.Msg.State.String()) + return resp.Msg, nil }) if err != nil { - w.logger.Error("deployment simulation failed", "error", err, "version_id", req.VersionID) + w.logger.Error("VM boot failed", "error", err, "vm_id", createResult.VmId) return err } - // Step 8d: Generate completion timestamp + // Generate completion timestamp completionTime, err := hydra.Step(ctx, "generate-completion-timestamp", func(stepCtx context.Context) (int64, error) { return time.Now().UnixMilli(), nil }) @@ -301,7 +433,7 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro return err } - // Step 8e: Update version status to active + // Update version status to active _, err = hydra.Step(ctx, "update-version-active", func(stepCtx context.Context) (*DeploymentResult, error) { activeErr := db.Query.UpdateVersionStatus(stepCtx, w.db.RW(), db.UpdateVersionStatusParams{ ID: req.VersionID, From 60747e72c8d3751147f0a565e447c6334cfd995d Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 13:54:10 +0200 Subject: [PATCH 03/20] feat: use spire for tls --- go/apps/ctrl/config.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/go/apps/ctrl/config.go b/go/apps/ctrl/config.go index 0483abad82..253cb668b9 100644 --- a/go/apps/ctrl/config.go +++ b/go/apps/ctrl/config.go @@ -39,6 +39,12 @@ type Config struct { // AuthToken is the authentication token for control plane API access AuthToken string + // MetaldAddress is the full URL of the metald service for VM operations (e.g., "https://metald.example.com:8080") + MetaldAddress string + + // SPIFFESocketPath is the path to the SPIFFE agent socket for mTLS authentication + SPIFFESocketPath string + Clock clock.Clock } From 6bdf99b89652c5bdc5795ca5c7628d894952903f Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 14:05:18 +0200 Subject: [PATCH 04/20] chore: remove old protos --- go/apps/ctrl/run.go | 25 +- go/cmd/ctrl/main.go | 17 +- .../assetmanagerd/proto/asset/v1/asset.pb.go | 2148 --------- .../asset/v1/assetv1connect/asset.connect.go | 405 -- .../billaged/proto/billing/v1/billing.pb.go | 754 ---- .../v1/billingv1connect/billing.connect.go | 233 - .../builderd/proto/builder/v1/builder.pb.go | 3829 ----------------- .../v1/builderv1connect/builder.connect.go | 338 -- .../metald/proto/vmprovisioner/v1/vm.pb.go | 2864 ------------ .../v1/vmprovisionerv1connect/vm.connect.go | 362 -- go/go.mod | 9 + go/go.sum | 6 + 12 files changed, 54 insertions(+), 10936 deletions(-) delete mode 100644 go/gen/deploy/assetmanagerd/proto/asset/v1/asset.pb.go delete mode 100644 go/gen/deploy/assetmanagerd/proto/asset/v1/assetv1connect/asset.connect.go delete mode 100644 go/gen/deploy/billaged/proto/billing/v1/billing.pb.go delete mode 100644 go/gen/deploy/billaged/proto/billing/v1/billingv1connect/billing.connect.go delete mode 100644 go/gen/deploy/builderd/proto/builder/v1/builder.pb.go delete mode 100644 go/gen/deploy/builderd/proto/builder/v1/builderv1connect/builder.connect.go delete mode 100644 go/gen/deploy/metald/proto/vmprovisioner/v1/vm.pb.go delete mode 100644 go/gen/deploy/metald/proto/vmprovisioner/v1/vmprovisionerv1connect/vm.connect.go diff --git a/go/apps/ctrl/run.go b/go/apps/ctrl/run.go index 2f23aef4b8..ed9ba5b193 100644 --- a/go/apps/ctrl/run.go +++ b/go/apps/ctrl/run.go @@ -10,7 +10,9 @@ import ( "github.com/unkeyed/unkey/go/apps/ctrl/services/ctrl" "github.com/unkeyed/unkey/go/apps/ctrl/services/version" + deployTLS "github.com/unkeyed/unkey/go/deploy/pkg/tls" "github.com/unkeyed/unkey/go/gen/proto/ctrl/v1/ctrlv1connect" + "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1/vmprovisionerv1connect" "github.com/unkeyed/unkey/go/pkg/builder" "github.com/unkeyed/unkey/go/pkg/db" "github.com/unkeyed/unkey/go/pkg/hydra" @@ -102,9 +104,28 @@ func Run(ctx context.Context, cfg Config) error { // Create the mock builder service for demo builderService := builder.NewMockService() + // Create metald client for VM operations with SPIRE authentication + tlsConfig := deployTLS.Config{ + Mode: deployTLS.ModeSPIFFE, + SPIFFESocketPath: cfg.SPIFFESocketPath, + } + + tlsProvider, err := deployTLS.NewProvider(ctx, tlsConfig) + if err != nil { + return fmt.Errorf("failed to create TLS provider for metald: %w", err) + } + + httpClient := tlsProvider.HTTPClient() + httpClient.Timeout = 30 * time.Second + + metaldClient := vmprovisionerv1connect.NewVmServiceClient( + httpClient, + cfg.MetaldAddress, + ) + logger.Info("metald client configured with SPIRE authentication", "address", cfg.MetaldAddress, "spiffe_socket", cfg.SPIFFESocketPath) + // Register deployment workflow with Hydra worker - // TODO: Replace nil with actual metald client when available - deployWorkflow := version.NewDeployWorkflow(database, logger, builderService, nil) + deployWorkflow := version.NewDeployWorkflow(database, logger, builderService, metaldClient) err = hydra.RegisterWorkflow(hydraWorker, deployWorkflow) if err != nil { return fmt.Errorf("unable to register deployment workflow: %w", err) diff --git a/go/cmd/ctrl/main.go b/go/cmd/ctrl/main.go index 02fa163a9f..0c379e5a1c 100644 --- a/go/cmd/ctrl/main.go +++ b/go/cmd/ctrl/main.go @@ -112,6 +112,19 @@ var Cmd = &cli.Command{ Sources: cli.EnvVars("UNKEY_AUTH_TOKEN"), Required: false, }, + &cli.StringFlag{ + Name: "metald-address", + Usage: "Full URL of the metald service for VM operations. Required for deployments. Example: https://metald.example.com:8080", + Sources: cli.EnvVars("UNKEY_METALD_ADDRESS"), + Required: true, + }, + &cli.StringFlag{ + Name: "spiffe-socket-path", + Usage: "Path to SPIFFE agent socket for mTLS authentication. Default: /var/lib/spire/agent/agent.sock", + Sources: cli.EnvVars("UNKEY_SPIFFE_SOCKET_PATH"), + Value: "/var/lib/spire/agent/agent.sock", + Required: false, + }, }, Action: action, @@ -155,7 +168,9 @@ func action(ctx context.Context, cmd *cli.Command) error { TLSConfig: tlsConfig, // Control Plane Specific - AuthToken: cmd.String("auth-token"), + AuthToken: cmd.String("auth-token"), + MetaldAddress: cmd.String("metald-address"), + SPIFFESocketPath: cmd.String("spiffe-socket-path"), // Common Clock: clock.New(), diff --git a/go/gen/deploy/assetmanagerd/proto/asset/v1/asset.pb.go b/go/gen/deploy/assetmanagerd/proto/asset/v1/asset.pb.go deleted file mode 100644 index 9b179d165f..0000000000 --- a/go/gen/deploy/assetmanagerd/proto/asset/v1/asset.pb.go +++ /dev/null @@ -1,2148 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.6 -// protoc (unknown) -// source: deploy/assetmanagerd/proto/asset/v1/asset.proto - -package assetv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -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 AssetType int32 - -const ( - AssetType_ASSET_TYPE_UNSPECIFIED AssetType = 0 - AssetType_ASSET_TYPE_KERNEL AssetType = 1 - AssetType_ASSET_TYPE_ROOTFS AssetType = 2 - AssetType_ASSET_TYPE_INITRD AssetType = 3 - AssetType_ASSET_TYPE_DISK_IMAGE AssetType = 4 -) - -// Enum value maps for AssetType. -var ( - AssetType_name = map[int32]string{ - 0: "ASSET_TYPE_UNSPECIFIED", - 1: "ASSET_TYPE_KERNEL", - 2: "ASSET_TYPE_ROOTFS", - 3: "ASSET_TYPE_INITRD", - 4: "ASSET_TYPE_DISK_IMAGE", - } - AssetType_value = map[string]int32{ - "ASSET_TYPE_UNSPECIFIED": 0, - "ASSET_TYPE_KERNEL": 1, - "ASSET_TYPE_ROOTFS": 2, - "ASSET_TYPE_INITRD": 3, - "ASSET_TYPE_DISK_IMAGE": 4, - } -) - -func (x AssetType) Enum() *AssetType { - p := new(AssetType) - *p = x - return p -} - -func (x AssetType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (AssetType) Descriptor() protoreflect.EnumDescriptor { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes[0].Descriptor() -} - -func (AssetType) Type() protoreflect.EnumType { - return &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes[0] -} - -func (x AssetType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use AssetType.Descriptor instead. -func (AssetType) EnumDescriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{0} -} - -type AssetStatus int32 - -const ( - AssetStatus_ASSET_STATUS_UNSPECIFIED AssetStatus = 0 - AssetStatus_ASSET_STATUS_UPLOADING AssetStatus = 1 - AssetStatus_ASSET_STATUS_AVAILABLE AssetStatus = 2 - AssetStatus_ASSET_STATUS_DELETING AssetStatus = 3 - AssetStatus_ASSET_STATUS_ERROR AssetStatus = 4 -) - -// Enum value maps for AssetStatus. -var ( - AssetStatus_name = map[int32]string{ - 0: "ASSET_STATUS_UNSPECIFIED", - 1: "ASSET_STATUS_UPLOADING", - 2: "ASSET_STATUS_AVAILABLE", - 3: "ASSET_STATUS_DELETING", - 4: "ASSET_STATUS_ERROR", - } - AssetStatus_value = map[string]int32{ - "ASSET_STATUS_UNSPECIFIED": 0, - "ASSET_STATUS_UPLOADING": 1, - "ASSET_STATUS_AVAILABLE": 2, - "ASSET_STATUS_DELETING": 3, - "ASSET_STATUS_ERROR": 4, - } -) - -func (x AssetStatus) Enum() *AssetStatus { - p := new(AssetStatus) - *p = x - return p -} - -func (x AssetStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (AssetStatus) Descriptor() protoreflect.EnumDescriptor { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes[1].Descriptor() -} - -func (AssetStatus) Type() protoreflect.EnumType { - return &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes[1] -} - -func (x AssetStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use AssetStatus.Descriptor instead. -func (AssetStatus) EnumDescriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{1} -} - -type StorageBackend int32 - -const ( - StorageBackend_STORAGE_BACKEND_UNSPECIFIED StorageBackend = 0 - StorageBackend_STORAGE_BACKEND_LOCAL StorageBackend = 1 - StorageBackend_STORAGE_BACKEND_S3 StorageBackend = 2 - StorageBackend_STORAGE_BACKEND_HTTP StorageBackend = 3 - StorageBackend_STORAGE_BACKEND_NFS StorageBackend = 4 -) - -// Enum value maps for StorageBackend. -var ( - StorageBackend_name = map[int32]string{ - 0: "STORAGE_BACKEND_UNSPECIFIED", - 1: "STORAGE_BACKEND_LOCAL", - 2: "STORAGE_BACKEND_S3", - 3: "STORAGE_BACKEND_HTTP", - 4: "STORAGE_BACKEND_NFS", - } - StorageBackend_value = map[string]int32{ - "STORAGE_BACKEND_UNSPECIFIED": 0, - "STORAGE_BACKEND_LOCAL": 1, - "STORAGE_BACKEND_S3": 2, - "STORAGE_BACKEND_HTTP": 3, - "STORAGE_BACKEND_NFS": 4, - } -) - -func (x StorageBackend) Enum() *StorageBackend { - p := new(StorageBackend) - *p = x - return p -} - -func (x StorageBackend) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (StorageBackend) Descriptor() protoreflect.EnumDescriptor { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes[2].Descriptor() -} - -func (StorageBackend) Type() protoreflect.EnumType { - return &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes[2] -} - -func (x StorageBackend) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use StorageBackend.Descriptor instead. -func (StorageBackend) EnumDescriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{2} -} - -type Asset struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Type AssetType `protobuf:"varint,3,opt,name=type,proto3,enum=asset.v1.AssetType" json:"type,omitempty"` - Status AssetStatus `protobuf:"varint,4,opt,name=status,proto3,enum=asset.v1.AssetStatus" json:"status,omitempty"` - // Storage information - Backend StorageBackend `protobuf:"varint,5,opt,name=backend,proto3,enum=asset.v1.StorageBackend" json:"backend,omitempty"` - Location string `protobuf:"bytes,6,opt,name=location,proto3" json:"location,omitempty"` // Path or URL depending on backend - SizeBytes int64 `protobuf:"varint,7,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` - Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` // SHA256 - // Metadata - Labels map[string]string `protobuf:"bytes,9,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - CreatedBy string `protobuf:"bytes,10,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"` // e.g., "builderd", "manual" - CreatedAt int64 `protobuf:"varint,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Unix timestamp - LastAccessedAt int64 `protobuf:"varint,12,opt,name=last_accessed_at,json=lastAccessedAt,proto3" json:"last_accessed_at,omitempty"` - // Reference counting for GC - ReferenceCount int32 `protobuf:"varint,13,opt,name=reference_count,json=referenceCount,proto3" json:"reference_count,omitempty"` - // Build information (if created by builderd) - BuildId string `protobuf:"bytes,14,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` - SourceImage string `protobuf:"bytes,15,opt,name=source_image,json=sourceImage,proto3" json:"source_image,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *Asset) Reset() { - *x = Asset{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Asset) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Asset) ProtoMessage() {} - -func (x *Asset) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Asset.ProtoReflect.Descriptor instead. -func (*Asset) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{0} -} - -func (x *Asset) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Asset) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Asset) GetType() AssetType { - if x != nil { - return x.Type - } - return AssetType_ASSET_TYPE_UNSPECIFIED -} - -func (x *Asset) GetStatus() AssetStatus { - if x != nil { - return x.Status - } - return AssetStatus_ASSET_STATUS_UNSPECIFIED -} - -func (x *Asset) GetBackend() StorageBackend { - if x != nil { - return x.Backend - } - return StorageBackend_STORAGE_BACKEND_UNSPECIFIED -} - -func (x *Asset) GetLocation() string { - if x != nil { - return x.Location - } - return "" -} - -func (x *Asset) GetSizeBytes() int64 { - if x != nil { - return x.SizeBytes - } - return 0 -} - -func (x *Asset) GetChecksum() string { - if x != nil { - return x.Checksum - } - return "" -} - -func (x *Asset) GetLabels() map[string]string { - if x != nil { - return x.Labels - } - return nil -} - -func (x *Asset) GetCreatedBy() string { - if x != nil { - return x.CreatedBy - } - return "" -} - -func (x *Asset) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *Asset) GetLastAccessedAt() int64 { - if x != nil { - return x.LastAccessedAt - } - return 0 -} - -func (x *Asset) GetReferenceCount() int32 { - if x != nil { - return x.ReferenceCount - } - return 0 -} - -func (x *Asset) GetBuildId() string { - if x != nil { - return x.BuildId - } - return "" -} - -func (x *Asset) GetSourceImage() string { - if x != nil { - return x.SourceImage - } - return "" -} - -type UploadAssetRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Data: - // - // *UploadAssetRequest_Metadata - // *UploadAssetRequest_Chunk - Data isUploadAssetRequest_Data `protobuf_oneof:"data"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UploadAssetRequest) Reset() { - *x = UploadAssetRequest{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UploadAssetRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UploadAssetRequest) ProtoMessage() {} - -func (x *UploadAssetRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UploadAssetRequest.ProtoReflect.Descriptor instead. -func (*UploadAssetRequest) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{1} -} - -func (x *UploadAssetRequest) GetData() isUploadAssetRequest_Data { - if x != nil { - return x.Data - } - return nil -} - -func (x *UploadAssetRequest) GetMetadata() *UploadAssetMetadata { - if x != nil { - if x, ok := x.Data.(*UploadAssetRequest_Metadata); ok { - return x.Metadata - } - } - return nil -} - -func (x *UploadAssetRequest) GetChunk() []byte { - if x != nil { - if x, ok := x.Data.(*UploadAssetRequest_Chunk); ok { - return x.Chunk - } - } - return nil -} - -type isUploadAssetRequest_Data interface { - isUploadAssetRequest_Data() -} - -type UploadAssetRequest_Metadata struct { - Metadata *UploadAssetMetadata `protobuf:"bytes,1,opt,name=metadata,proto3,oneof"` -} - -type UploadAssetRequest_Chunk struct { - Chunk []byte `protobuf:"bytes,2,opt,name=chunk,proto3,oneof"` -} - -func (*UploadAssetRequest_Metadata) isUploadAssetRequest_Data() {} - -func (*UploadAssetRequest_Chunk) isUploadAssetRequest_Data() {} - -type UploadAssetMetadata struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Type AssetType `protobuf:"varint,2,opt,name=type,proto3,enum=asset.v1.AssetType" json:"type,omitempty"` - SizeBytes int64 `protobuf:"varint,3,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` - Labels map[string]string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - CreatedBy string `protobuf:"bytes,5,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"` - BuildId string `protobuf:"bytes,6,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` - SourceImage string `protobuf:"bytes,7,opt,name=source_image,json=sourceImage,proto3" json:"source_image,omitempty"` - Id string `protobuf:"bytes,8,opt,name=id,proto3" json:"id,omitempty"` // Optional: specific asset ID to use - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UploadAssetMetadata) Reset() { - *x = UploadAssetMetadata{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UploadAssetMetadata) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UploadAssetMetadata) ProtoMessage() {} - -func (x *UploadAssetMetadata) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UploadAssetMetadata.ProtoReflect.Descriptor instead. -func (*UploadAssetMetadata) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{2} -} - -func (x *UploadAssetMetadata) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *UploadAssetMetadata) GetType() AssetType { - if x != nil { - return x.Type - } - return AssetType_ASSET_TYPE_UNSPECIFIED -} - -func (x *UploadAssetMetadata) GetSizeBytes() int64 { - if x != nil { - return x.SizeBytes - } - return 0 -} - -func (x *UploadAssetMetadata) GetLabels() map[string]string { - if x != nil { - return x.Labels - } - return nil -} - -func (x *UploadAssetMetadata) GetCreatedBy() string { - if x != nil { - return x.CreatedBy - } - return "" -} - -func (x *UploadAssetMetadata) GetBuildId() string { - if x != nil { - return x.BuildId - } - return "" -} - -func (x *UploadAssetMetadata) GetSourceImage() string { - if x != nil { - return x.SourceImage - } - return "" -} - -func (x *UploadAssetMetadata) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type UploadAssetResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Asset *Asset `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UploadAssetResponse) Reset() { - *x = UploadAssetResponse{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UploadAssetResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UploadAssetResponse) ProtoMessage() {} - -func (x *UploadAssetResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UploadAssetResponse.ProtoReflect.Descriptor instead. -func (*UploadAssetResponse) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{3} -} - -func (x *UploadAssetResponse) GetAsset() *Asset { - if x != nil { - return x.Asset - } - return nil -} - -type RegisterAssetRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Type AssetType `protobuf:"varint,2,opt,name=type,proto3,enum=asset.v1.AssetType" json:"type,omitempty"` - Backend StorageBackend `protobuf:"varint,3,opt,name=backend,proto3,enum=asset.v1.StorageBackend" json:"backend,omitempty"` - Location string `protobuf:"bytes,4,opt,name=location,proto3" json:"location,omitempty"` - SizeBytes int64 `protobuf:"varint,5,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` - Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` - Labels map[string]string `protobuf:"bytes,7,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - CreatedBy string `protobuf:"bytes,8,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"` - // Optional build information - BuildId string `protobuf:"bytes,9,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` - SourceImage string `protobuf:"bytes,10,opt,name=source_image,json=sourceImage,proto3" json:"source_image,omitempty"` - // Optional: specific asset ID to use (if not provided, one will be generated) - Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RegisterAssetRequest) Reset() { - *x = RegisterAssetRequest{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RegisterAssetRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RegisterAssetRequest) ProtoMessage() {} - -func (x *RegisterAssetRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RegisterAssetRequest.ProtoReflect.Descriptor instead. -func (*RegisterAssetRequest) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{4} -} - -func (x *RegisterAssetRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *RegisterAssetRequest) GetType() AssetType { - if x != nil { - return x.Type - } - return AssetType_ASSET_TYPE_UNSPECIFIED -} - -func (x *RegisterAssetRequest) GetBackend() StorageBackend { - if x != nil { - return x.Backend - } - return StorageBackend_STORAGE_BACKEND_UNSPECIFIED -} - -func (x *RegisterAssetRequest) GetLocation() string { - if x != nil { - return x.Location - } - return "" -} - -func (x *RegisterAssetRequest) GetSizeBytes() int64 { - if x != nil { - return x.SizeBytes - } - return 0 -} - -func (x *RegisterAssetRequest) GetChecksum() string { - if x != nil { - return x.Checksum - } - return "" -} - -func (x *RegisterAssetRequest) GetLabels() map[string]string { - if x != nil { - return x.Labels - } - return nil -} - -func (x *RegisterAssetRequest) GetCreatedBy() string { - if x != nil { - return x.CreatedBy - } - return "" -} - -func (x *RegisterAssetRequest) GetBuildId() string { - if x != nil { - return x.BuildId - } - return "" -} - -func (x *RegisterAssetRequest) GetSourceImage() string { - if x != nil { - return x.SourceImage - } - return "" -} - -func (x *RegisterAssetRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type RegisterAssetResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Asset *Asset `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RegisterAssetResponse) Reset() { - *x = RegisterAssetResponse{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RegisterAssetResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RegisterAssetResponse) ProtoMessage() {} - -func (x *RegisterAssetResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RegisterAssetResponse.ProtoReflect.Descriptor instead. -func (*RegisterAssetResponse) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{5} -} - -func (x *RegisterAssetResponse) GetAsset() *Asset { - if x != nil { - return x.Asset - } - return nil -} - -type GetAssetRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // If true, ensures asset is available locally (downloads if needed) - EnsureLocal bool `protobuf:"varint,2,opt,name=ensure_local,json=ensureLocal,proto3" json:"ensure_local,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetAssetRequest) Reset() { - *x = GetAssetRequest{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetAssetRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetAssetRequest) ProtoMessage() {} - -func (x *GetAssetRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetAssetRequest.ProtoReflect.Descriptor instead. -func (*GetAssetRequest) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{6} -} - -func (x *GetAssetRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *GetAssetRequest) GetEnsureLocal() bool { - if x != nil { - return x.EnsureLocal - } - return false -} - -type GetAssetResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Asset *Asset `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"` - // Local path if ensure_local was true - LocalPath string `protobuf:"bytes,2,opt,name=local_path,json=localPath,proto3" json:"local_path,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetAssetResponse) Reset() { - *x = GetAssetResponse{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetAssetResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetAssetResponse) ProtoMessage() {} - -func (x *GetAssetResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetAssetResponse.ProtoReflect.Descriptor instead. -func (*GetAssetResponse) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{7} -} - -func (x *GetAssetResponse) GetAsset() *Asset { - if x != nil { - return x.Asset - } - return nil -} - -func (x *GetAssetResponse) GetLocalPath() string { - if x != nil { - return x.LocalPath - } - return "" -} - -type ListAssetsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Filter by type - Type AssetType `protobuf:"varint,1,opt,name=type,proto3,enum=asset.v1.AssetType" json:"type,omitempty"` - // Filter by status - Status AssetStatus `protobuf:"varint,2,opt,name=status,proto3,enum=asset.v1.AssetStatus" json:"status,omitempty"` - // Filter by labels (all must match) - LabelSelector map[string]string `protobuf:"bytes,3,rep,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Pagination - PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListAssetsRequest) Reset() { - *x = ListAssetsRequest{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListAssetsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListAssetsRequest) ProtoMessage() {} - -func (x *ListAssetsRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListAssetsRequest.ProtoReflect.Descriptor instead. -func (*ListAssetsRequest) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{8} -} - -func (x *ListAssetsRequest) GetType() AssetType { - if x != nil { - return x.Type - } - return AssetType_ASSET_TYPE_UNSPECIFIED -} - -func (x *ListAssetsRequest) GetStatus() AssetStatus { - if x != nil { - return x.Status - } - return AssetStatus_ASSET_STATUS_UNSPECIFIED -} - -func (x *ListAssetsRequest) GetLabelSelector() map[string]string { - if x != nil { - return x.LabelSelector - } - return nil -} - -func (x *ListAssetsRequest) GetPageSize() int32 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *ListAssetsRequest) GetPageToken() string { - if x != nil { - return x.PageToken - } - return "" -} - -type ListAssetsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Assets []*Asset `protobuf:"bytes,1,rep,name=assets,proto3" json:"assets,omitempty"` - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListAssetsResponse) Reset() { - *x = ListAssetsResponse{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListAssetsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListAssetsResponse) ProtoMessage() {} - -func (x *ListAssetsResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListAssetsResponse.ProtoReflect.Descriptor instead. -func (*ListAssetsResponse) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{9} -} - -func (x *ListAssetsResponse) GetAssets() []*Asset { - if x != nil { - return x.Assets - } - return nil -} - -func (x *ListAssetsResponse) GetNextPageToken() string { - if x != nil { - return x.NextPageToken - } - return "" -} - -type AcquireAssetRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - AssetId string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` - AcquiredBy string `protobuf:"bytes,2,opt,name=acquired_by,json=acquiredBy,proto3" json:"acquired_by,omitempty"` // e.g., "vm-123" - TtlSeconds int64 `protobuf:"varint,3,opt,name=ttl_seconds,json=ttlSeconds,proto3" json:"ttl_seconds,omitempty"` // Optional auto-release after TTL - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AcquireAssetRequest) Reset() { - *x = AcquireAssetRequest{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AcquireAssetRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AcquireAssetRequest) ProtoMessage() {} - -func (x *AcquireAssetRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AcquireAssetRequest.ProtoReflect.Descriptor instead. -func (*AcquireAssetRequest) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{10} -} - -func (x *AcquireAssetRequest) GetAssetId() string { - if x != nil { - return x.AssetId - } - return "" -} - -func (x *AcquireAssetRequest) GetAcquiredBy() string { - if x != nil { - return x.AcquiredBy - } - return "" -} - -func (x *AcquireAssetRequest) GetTtlSeconds() int64 { - if x != nil { - return x.TtlSeconds - } - return 0 -} - -type AcquireAssetResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Asset *Asset `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"` - LeaseId string `protobuf:"bytes,2,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` // Use this for release - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AcquireAssetResponse) Reset() { - *x = AcquireAssetResponse{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AcquireAssetResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AcquireAssetResponse) ProtoMessage() {} - -func (x *AcquireAssetResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AcquireAssetResponse.ProtoReflect.Descriptor instead. -func (*AcquireAssetResponse) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{11} -} - -func (x *AcquireAssetResponse) GetAsset() *Asset { - if x != nil { - return x.Asset - } - return nil -} - -func (x *AcquireAssetResponse) GetLeaseId() string { - if x != nil { - return x.LeaseId - } - return "" -} - -type ReleaseAssetRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReleaseAssetRequest) Reset() { - *x = ReleaseAssetRequest{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReleaseAssetRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReleaseAssetRequest) ProtoMessage() {} - -func (x *ReleaseAssetRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReleaseAssetRequest.ProtoReflect.Descriptor instead. -func (*ReleaseAssetRequest) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{12} -} - -func (x *ReleaseAssetRequest) GetLeaseId() string { - if x != nil { - return x.LeaseId - } - return "" -} - -type ReleaseAssetResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Asset *Asset `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReleaseAssetResponse) Reset() { - *x = ReleaseAssetResponse{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReleaseAssetResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReleaseAssetResponse) ProtoMessage() {} - -func (x *ReleaseAssetResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReleaseAssetResponse.ProtoReflect.Descriptor instead. -func (*ReleaseAssetResponse) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{13} -} - -func (x *ReleaseAssetResponse) GetAsset() *Asset { - if x != nil { - return x.Asset - } - return nil -} - -type DeleteAssetRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` // Delete even if ref count > 0 - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteAssetRequest) Reset() { - *x = DeleteAssetRequest{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteAssetRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteAssetRequest) ProtoMessage() {} - -func (x *DeleteAssetRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteAssetRequest.ProtoReflect.Descriptor instead. -func (*DeleteAssetRequest) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{14} -} - -func (x *DeleteAssetRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *DeleteAssetRequest) GetForce() bool { - if x != nil { - return x.Force - } - return false -} - -type DeleteAssetResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Deleted bool `protobuf:"varint,1,opt,name=deleted,proto3" json:"deleted,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteAssetResponse) Reset() { - *x = DeleteAssetResponse{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteAssetResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteAssetResponse) ProtoMessage() {} - -func (x *DeleteAssetResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[15] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteAssetResponse.ProtoReflect.Descriptor instead. -func (*DeleteAssetResponse) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{15} -} - -func (x *DeleteAssetResponse) GetDeleted() bool { - if x != nil { - return x.Deleted - } - return false -} - -func (x *DeleteAssetResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -type GarbageCollectRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Delete assets not accessed in this many seconds - MaxAgeSeconds int64 `protobuf:"varint,1,opt,name=max_age_seconds,json=maxAgeSeconds,proto3" json:"max_age_seconds,omitempty"` - // Delete assets with 0 references - DeleteUnreferenced bool `protobuf:"varint,2,opt,name=delete_unreferenced,json=deleteUnreferenced,proto3" json:"delete_unreferenced,omitempty"` - // Dry run - just return what would be deleted - DryRun bool `protobuf:"varint,3,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GarbageCollectRequest) Reset() { - *x = GarbageCollectRequest{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GarbageCollectRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GarbageCollectRequest) ProtoMessage() {} - -func (x *GarbageCollectRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GarbageCollectRequest.ProtoReflect.Descriptor instead. -func (*GarbageCollectRequest) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{16} -} - -func (x *GarbageCollectRequest) GetMaxAgeSeconds() int64 { - if x != nil { - return x.MaxAgeSeconds - } - return 0 -} - -func (x *GarbageCollectRequest) GetDeleteUnreferenced() bool { - if x != nil { - return x.DeleteUnreferenced - } - return false -} - -func (x *GarbageCollectRequest) GetDryRun() bool { - if x != nil { - return x.DryRun - } - return false -} - -type GarbageCollectResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - DeletedAssets []*Asset `protobuf:"bytes,1,rep,name=deleted_assets,json=deletedAssets,proto3" json:"deleted_assets,omitempty"` - BytesFreed int64 `protobuf:"varint,2,opt,name=bytes_freed,json=bytesFreed,proto3" json:"bytes_freed,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GarbageCollectResponse) Reset() { - *x = GarbageCollectResponse{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GarbageCollectResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GarbageCollectResponse) ProtoMessage() {} - -func (x *GarbageCollectResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[17] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GarbageCollectResponse.ProtoReflect.Descriptor instead. -func (*GarbageCollectResponse) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{17} -} - -func (x *GarbageCollectResponse) GetDeletedAssets() []*Asset { - if x != nil { - return x.DeletedAssets - } - return nil -} - -func (x *GarbageCollectResponse) GetBytesFreed() int64 { - if x != nil { - return x.BytesFreed - } - return 0 -} - -type PrepareAssetsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - AssetIds []string `protobuf:"bytes,1,rep,name=asset_ids,json=assetIds,proto3" json:"asset_ids,omitempty"` - TargetPath string `protobuf:"bytes,2,opt,name=target_path,json=targetPath,proto3" json:"target_path,omitempty"` // e.g., jailer chroot path - PreparedFor string `protobuf:"bytes,3,opt,name=prepared_for,json=preparedFor,proto3" json:"prepared_for,omitempty"` // e.g., "vm-123" - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PrepareAssetsRequest) Reset() { - *x = PrepareAssetsRequest{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PrepareAssetsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PrepareAssetsRequest) ProtoMessage() {} - -func (x *PrepareAssetsRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[18] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PrepareAssetsRequest.ProtoReflect.Descriptor instead. -func (*PrepareAssetsRequest) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{18} -} - -func (x *PrepareAssetsRequest) GetAssetIds() []string { - if x != nil { - return x.AssetIds - } - return nil -} - -func (x *PrepareAssetsRequest) GetTargetPath() string { - if x != nil { - return x.TargetPath - } - return "" -} - -func (x *PrepareAssetsRequest) GetPreparedFor() string { - if x != nil { - return x.PreparedFor - } - return "" -} - -type PrepareAssetsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - AssetPaths map[string]string `protobuf:"bytes,1,rep,name=asset_paths,json=assetPaths,proto3" json:"asset_paths,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // asset_id -> local path - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PrepareAssetsResponse) Reset() { - *x = PrepareAssetsResponse{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PrepareAssetsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PrepareAssetsResponse) ProtoMessage() {} - -func (x *PrepareAssetsResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[19] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PrepareAssetsResponse.ProtoReflect.Descriptor instead. -func (*PrepareAssetsResponse) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{19} -} - -func (x *PrepareAssetsResponse) GetAssetPaths() map[string]string { - if x != nil { - return x.AssetPaths - } - return nil -} - -// QueryAssetsRequest is similar to ListAssetsRequest but with build options -type QueryAssetsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Filter by type - Type AssetType `protobuf:"varint,1,opt,name=type,proto3,enum=asset.v1.AssetType" json:"type,omitempty"` - // Filter by status - Status AssetStatus `protobuf:"varint,2,opt,name=status,proto3,enum=asset.v1.AssetStatus" json:"status,omitempty"` - // Filter by labels (all must match) - LabelSelector map[string]string `protobuf:"bytes,3,rep,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Pagination - PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // Build options - if asset not found and these are set, trigger build - BuildOptions *BuildOptions `protobuf:"bytes,6,opt,name=build_options,json=buildOptions,proto3" json:"build_options,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *QueryAssetsRequest) Reset() { - *x = QueryAssetsRequest{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *QueryAssetsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryAssetsRequest) ProtoMessage() {} - -func (x *QueryAssetsRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use QueryAssetsRequest.ProtoReflect.Descriptor instead. -func (*QueryAssetsRequest) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{20} -} - -func (x *QueryAssetsRequest) GetType() AssetType { - if x != nil { - return x.Type - } - return AssetType_ASSET_TYPE_UNSPECIFIED -} - -func (x *QueryAssetsRequest) GetStatus() AssetStatus { - if x != nil { - return x.Status - } - return AssetStatus_ASSET_STATUS_UNSPECIFIED -} - -func (x *QueryAssetsRequest) GetLabelSelector() map[string]string { - if x != nil { - return x.LabelSelector - } - return nil -} - -func (x *QueryAssetsRequest) GetPageSize() int32 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *QueryAssetsRequest) GetPageToken() string { - if x != nil { - return x.PageToken - } - return "" -} - -func (x *QueryAssetsRequest) GetBuildOptions() *BuildOptions { - if x != nil { - return x.BuildOptions - } - return nil -} - -// BuildOptions controls automatic asset creation -type BuildOptions struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Enable automatic building if assets don't exist - EnableAutoBuild bool `protobuf:"varint,1,opt,name=enable_auto_build,json=enableAutoBuild,proto3" json:"enable_auto_build,omitempty"` - // Wait for build completion before returning - WaitForCompletion bool `protobuf:"varint,2,opt,name=wait_for_completion,json=waitForCompletion,proto3" json:"wait_for_completion,omitempty"` - // Timeout for build operation (seconds) - BuildTimeoutSeconds int32 `protobuf:"varint,3,opt,name=build_timeout_seconds,json=buildTimeoutSeconds,proto3" json:"build_timeout_seconds,omitempty"` - // Additional labels to add to the built asset - BuildLabels map[string]string `protobuf:"bytes,4,rep,name=build_labels,json=buildLabels,proto3" json:"build_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Tenant context for build authorization - TenantId string `protobuf:"bytes,5,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - // Suggested asset ID to use when registering the built asset - // This allows the caller to know the asset ID before it's built - SuggestedAssetId string `protobuf:"bytes,6,opt,name=suggested_asset_id,json=suggestedAssetId,proto3" json:"suggested_asset_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BuildOptions) Reset() { - *x = BuildOptions{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BuildOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BuildOptions) ProtoMessage() {} - -func (x *BuildOptions) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[21] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BuildOptions.ProtoReflect.Descriptor instead. -func (*BuildOptions) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{21} -} - -func (x *BuildOptions) GetEnableAutoBuild() bool { - if x != nil { - return x.EnableAutoBuild - } - return false -} - -func (x *BuildOptions) GetWaitForCompletion() bool { - if x != nil { - return x.WaitForCompletion - } - return false -} - -func (x *BuildOptions) GetBuildTimeoutSeconds() int32 { - if x != nil { - return x.BuildTimeoutSeconds - } - return 0 -} - -func (x *BuildOptions) GetBuildLabels() map[string]string { - if x != nil { - return x.BuildLabels - } - return nil -} - -func (x *BuildOptions) GetTenantId() string { - if x != nil { - return x.TenantId - } - return "" -} - -func (x *BuildOptions) GetSuggestedAssetId() string { - if x != nil { - return x.SuggestedAssetId - } - return "" -} - -// QueryAssetsResponse includes build information if builds were triggered -type QueryAssetsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Assets []*Asset `protobuf:"bytes,1,rep,name=assets,proto3" json:"assets,omitempty"` - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - // Information about any builds that were triggered - TriggeredBuilds []*BuildInfo `protobuf:"bytes,3,rep,name=triggered_builds,json=triggeredBuilds,proto3" json:"triggered_builds,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *QueryAssetsResponse) Reset() { - *x = QueryAssetsResponse{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *QueryAssetsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryAssetsResponse) ProtoMessage() {} - -func (x *QueryAssetsResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[22] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use QueryAssetsResponse.ProtoReflect.Descriptor instead. -func (*QueryAssetsResponse) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{22} -} - -func (x *QueryAssetsResponse) GetAssets() []*Asset { - if x != nil { - return x.Assets - } - return nil -} - -func (x *QueryAssetsResponse) GetNextPageToken() string { - if x != nil { - return x.NextPageToken - } - return "" -} - -func (x *QueryAssetsResponse) GetTriggeredBuilds() []*BuildInfo { - if x != nil { - return x.TriggeredBuilds - } - return nil -} - -// BuildInfo provides information about triggered builds -type BuildInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` - DockerImage string `protobuf:"bytes,2,opt,name=docker_image,json=dockerImage,proto3" json:"docker_image,omitempty"` - Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` // "pending", "building", "completed", "failed" - ErrorMessage string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` - AssetId string `protobuf:"bytes,5,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` // Asset ID if build completed and asset was registered - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BuildInfo) Reset() { - *x = BuildInfo{} - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BuildInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BuildInfo) ProtoMessage() {} - -func (x *BuildInfo) ProtoReflect() protoreflect.Message { - mi := &file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[23] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BuildInfo.ProtoReflect.Descriptor instead. -func (*BuildInfo) Descriptor() ([]byte, []int) { - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP(), []int{23} -} - -func (x *BuildInfo) GetBuildId() string { - if x != nil { - return x.BuildId - } - return "" -} - -func (x *BuildInfo) GetDockerImage() string { - if x != nil { - return x.DockerImage - } - return "" -} - -func (x *BuildInfo) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -func (x *BuildInfo) GetErrorMessage() string { - if x != nil { - return x.ErrorMessage - } - return "" -} - -func (x *BuildInfo) GetAssetId() string { - if x != nil { - return x.AssetId - } - return "" -} - -var File_deploy_assetmanagerd_proto_asset_v1_asset_proto protoreflect.FileDescriptor - -const file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDesc = "" + - "\n" + - "/deploy/assetmanagerd/proto/asset/v1/asset.proto\x12\basset.v1\"\xcd\x04\n" + - "\x05Asset\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + - "\x04name\x18\x02 \x01(\tR\x04name\x12'\n" + - "\x04type\x18\x03 \x01(\x0e2\x13.asset.v1.AssetTypeR\x04type\x12-\n" + - "\x06status\x18\x04 \x01(\x0e2\x15.asset.v1.AssetStatusR\x06status\x122\n" + - "\abackend\x18\x05 \x01(\x0e2\x18.asset.v1.StorageBackendR\abackend\x12\x1a\n" + - "\blocation\x18\x06 \x01(\tR\blocation\x12\x1d\n" + - "\n" + - "size_bytes\x18\a \x01(\x03R\tsizeBytes\x12\x1a\n" + - "\bchecksum\x18\b \x01(\tR\bchecksum\x123\n" + - "\x06labels\x18\t \x03(\v2\x1b.asset.v1.Asset.LabelsEntryR\x06labels\x12\x1d\n" + - "\n" + - "created_by\x18\n" + - " \x01(\tR\tcreatedBy\x12\x1d\n" + - "\n" + - "created_at\x18\v \x01(\x03R\tcreatedAt\x12(\n" + - "\x10last_accessed_at\x18\f \x01(\x03R\x0elastAccessedAt\x12'\n" + - "\x0freference_count\x18\r \x01(\x05R\x0ereferenceCount\x12\x19\n" + - "\bbuild_id\x18\x0e \x01(\tR\abuildId\x12!\n" + - "\fsource_image\x18\x0f \x01(\tR\vsourceImage\x1a9\n" + - "\vLabelsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"q\n" + - "\x12UploadAssetRequest\x12;\n" + - "\bmetadata\x18\x01 \x01(\v2\x1d.asset.v1.UploadAssetMetadataH\x00R\bmetadata\x12\x16\n" + - "\x05chunk\x18\x02 \x01(\fH\x00R\x05chunkB\x06\n" + - "\x04data\"\xdc\x02\n" + - "\x13UploadAssetMetadata\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12'\n" + - "\x04type\x18\x02 \x01(\x0e2\x13.asset.v1.AssetTypeR\x04type\x12\x1d\n" + - "\n" + - "size_bytes\x18\x03 \x01(\x03R\tsizeBytes\x12A\n" + - "\x06labels\x18\x04 \x03(\v2).asset.v1.UploadAssetMetadata.LabelsEntryR\x06labels\x12\x1d\n" + - "\n" + - "created_by\x18\x05 \x01(\tR\tcreatedBy\x12\x19\n" + - "\bbuild_id\x18\x06 \x01(\tR\abuildId\x12!\n" + - "\fsource_image\x18\a \x01(\tR\vsourceImage\x12\x0e\n" + - "\x02id\x18\b \x01(\tR\x02id\x1a9\n" + - "\vLabelsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"<\n" + - "\x13UploadAssetResponse\x12%\n" + - "\x05asset\x18\x01 \x01(\v2\x0f.asset.v1.AssetR\x05asset\"\xca\x03\n" + - "\x14RegisterAssetRequest\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12'\n" + - "\x04type\x18\x02 \x01(\x0e2\x13.asset.v1.AssetTypeR\x04type\x122\n" + - "\abackend\x18\x03 \x01(\x0e2\x18.asset.v1.StorageBackendR\abackend\x12\x1a\n" + - "\blocation\x18\x04 \x01(\tR\blocation\x12\x1d\n" + - "\n" + - "size_bytes\x18\x05 \x01(\x03R\tsizeBytes\x12\x1a\n" + - "\bchecksum\x18\x06 \x01(\tR\bchecksum\x12B\n" + - "\x06labels\x18\a \x03(\v2*.asset.v1.RegisterAssetRequest.LabelsEntryR\x06labels\x12\x1d\n" + - "\n" + - "created_by\x18\b \x01(\tR\tcreatedBy\x12\x19\n" + - "\bbuild_id\x18\t \x01(\tR\abuildId\x12!\n" + - "\fsource_image\x18\n" + - " \x01(\tR\vsourceImage\x12\x0e\n" + - "\x02id\x18\v \x01(\tR\x02id\x1a9\n" + - "\vLabelsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\">\n" + - "\x15RegisterAssetResponse\x12%\n" + - "\x05asset\x18\x01 \x01(\v2\x0f.asset.v1.AssetR\x05asset\"D\n" + - "\x0fGetAssetRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12!\n" + - "\fensure_local\x18\x02 \x01(\bR\vensureLocal\"X\n" + - "\x10GetAssetResponse\x12%\n" + - "\x05asset\x18\x01 \x01(\v2\x0f.asset.v1.AssetR\x05asset\x12\x1d\n" + - "\n" + - "local_path\x18\x02 \x01(\tR\tlocalPath\"\xc0\x02\n" + - "\x11ListAssetsRequest\x12'\n" + - "\x04type\x18\x01 \x01(\x0e2\x13.asset.v1.AssetTypeR\x04type\x12-\n" + - "\x06status\x18\x02 \x01(\x0e2\x15.asset.v1.AssetStatusR\x06status\x12U\n" + - "\x0elabel_selector\x18\x03 \x03(\v2..asset.v1.ListAssetsRequest.LabelSelectorEntryR\rlabelSelector\x12\x1b\n" + - "\tpage_size\x18\x04 \x01(\x05R\bpageSize\x12\x1d\n" + - "\n" + - "page_token\x18\x05 \x01(\tR\tpageToken\x1a@\n" + - "\x12LabelSelectorEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"e\n" + - "\x12ListAssetsResponse\x12'\n" + - "\x06assets\x18\x01 \x03(\v2\x0f.asset.v1.AssetR\x06assets\x12&\n" + - "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"r\n" + - "\x13AcquireAssetRequest\x12\x19\n" + - "\basset_id\x18\x01 \x01(\tR\aassetId\x12\x1f\n" + - "\vacquired_by\x18\x02 \x01(\tR\n" + - "acquiredBy\x12\x1f\n" + - "\vttl_seconds\x18\x03 \x01(\x03R\n" + - "ttlSeconds\"X\n" + - "\x14AcquireAssetResponse\x12%\n" + - "\x05asset\x18\x01 \x01(\v2\x0f.asset.v1.AssetR\x05asset\x12\x19\n" + - "\blease_id\x18\x02 \x01(\tR\aleaseId\"0\n" + - "\x13ReleaseAssetRequest\x12\x19\n" + - "\blease_id\x18\x01 \x01(\tR\aleaseId\"=\n" + - "\x14ReleaseAssetResponse\x12%\n" + - "\x05asset\x18\x01 \x01(\v2\x0f.asset.v1.AssetR\x05asset\":\n" + - "\x12DeleteAssetRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + - "\x05force\x18\x02 \x01(\bR\x05force\"I\n" + - "\x13DeleteAssetResponse\x12\x18\n" + - "\adeleted\x18\x01 \x01(\bR\adeleted\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\"\x89\x01\n" + - "\x15GarbageCollectRequest\x12&\n" + - "\x0fmax_age_seconds\x18\x01 \x01(\x03R\rmaxAgeSeconds\x12/\n" + - "\x13delete_unreferenced\x18\x02 \x01(\bR\x12deleteUnreferenced\x12\x17\n" + - "\adry_run\x18\x03 \x01(\bR\x06dryRun\"q\n" + - "\x16GarbageCollectResponse\x126\n" + - "\x0edeleted_assets\x18\x01 \x03(\v2\x0f.asset.v1.AssetR\rdeletedAssets\x12\x1f\n" + - "\vbytes_freed\x18\x02 \x01(\x03R\n" + - "bytesFreed\"w\n" + - "\x14PrepareAssetsRequest\x12\x1b\n" + - "\tasset_ids\x18\x01 \x03(\tR\bassetIds\x12\x1f\n" + - "\vtarget_path\x18\x02 \x01(\tR\n" + - "targetPath\x12!\n" + - "\fprepared_for\x18\x03 \x01(\tR\vpreparedFor\"\xa8\x01\n" + - "\x15PrepareAssetsResponse\x12P\n" + - "\vasset_paths\x18\x01 \x03(\v2/.asset.v1.PrepareAssetsResponse.AssetPathsEntryR\n" + - "assetPaths\x1a=\n" + - "\x0fAssetPathsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xff\x02\n" + - "\x12QueryAssetsRequest\x12'\n" + - "\x04type\x18\x01 \x01(\x0e2\x13.asset.v1.AssetTypeR\x04type\x12-\n" + - "\x06status\x18\x02 \x01(\x0e2\x15.asset.v1.AssetStatusR\x06status\x12V\n" + - "\x0elabel_selector\x18\x03 \x03(\v2/.asset.v1.QueryAssetsRequest.LabelSelectorEntryR\rlabelSelector\x12\x1b\n" + - "\tpage_size\x18\x04 \x01(\x05R\bpageSize\x12\x1d\n" + - "\n" + - "page_token\x18\x05 \x01(\tR\tpageToken\x12;\n" + - "\rbuild_options\x18\x06 \x01(\v2\x16.asset.v1.BuildOptionsR\fbuildOptions\x1a@\n" + - "\x12LabelSelectorEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xf5\x02\n" + - "\fBuildOptions\x12*\n" + - "\x11enable_auto_build\x18\x01 \x01(\bR\x0fenableAutoBuild\x12.\n" + - "\x13wait_for_completion\x18\x02 \x01(\bR\x11waitForCompletion\x122\n" + - "\x15build_timeout_seconds\x18\x03 \x01(\x05R\x13buildTimeoutSeconds\x12J\n" + - "\fbuild_labels\x18\x04 \x03(\v2'.asset.v1.BuildOptions.BuildLabelsEntryR\vbuildLabels\x12\x1b\n" + - "\ttenant_id\x18\x05 \x01(\tR\btenantId\x12,\n" + - "\x12suggested_asset_id\x18\x06 \x01(\tR\x10suggestedAssetId\x1a>\n" + - "\x10BuildLabelsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xa6\x01\n" + - "\x13QueryAssetsResponse\x12'\n" + - "\x06assets\x18\x01 \x03(\v2\x0f.asset.v1.AssetR\x06assets\x12&\n" + - "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12>\n" + - "\x10triggered_builds\x18\x03 \x03(\v2\x13.asset.v1.BuildInfoR\x0ftriggeredBuilds\"\xa1\x01\n" + - "\tBuildInfo\x12\x19\n" + - "\bbuild_id\x18\x01 \x01(\tR\abuildId\x12!\n" + - "\fdocker_image\x18\x02 \x01(\tR\vdockerImage\x12\x16\n" + - "\x06status\x18\x03 \x01(\tR\x06status\x12#\n" + - "\rerror_message\x18\x04 \x01(\tR\ferrorMessage\x12\x19\n" + - "\basset_id\x18\x05 \x01(\tR\aassetId*\x87\x01\n" + - "\tAssetType\x12\x1a\n" + - "\x16ASSET_TYPE_UNSPECIFIED\x10\x00\x12\x15\n" + - "\x11ASSET_TYPE_KERNEL\x10\x01\x12\x15\n" + - "\x11ASSET_TYPE_ROOTFS\x10\x02\x12\x15\n" + - "\x11ASSET_TYPE_INITRD\x10\x03\x12\x19\n" + - "\x15ASSET_TYPE_DISK_IMAGE\x10\x04*\x96\x01\n" + - "\vAssetStatus\x12\x1c\n" + - "\x18ASSET_STATUS_UNSPECIFIED\x10\x00\x12\x1a\n" + - "\x16ASSET_STATUS_UPLOADING\x10\x01\x12\x1a\n" + - "\x16ASSET_STATUS_AVAILABLE\x10\x02\x12\x19\n" + - "\x15ASSET_STATUS_DELETING\x10\x03\x12\x16\n" + - "\x12ASSET_STATUS_ERROR\x10\x04*\x97\x01\n" + - "\x0eStorageBackend\x12\x1f\n" + - "\x1bSTORAGE_BACKEND_UNSPECIFIED\x10\x00\x12\x19\n" + - "\x15STORAGE_BACKEND_LOCAL\x10\x01\x12\x16\n" + - "\x12STORAGE_BACKEND_S3\x10\x02\x12\x18\n" + - "\x14STORAGE_BACKEND_HTTP\x10\x03\x12\x17\n" + - "\x13STORAGE_BACKEND_NFS\x10\x042\x9e\x06\n" + - "\x13AssetManagerService\x12L\n" + - "\vUploadAsset\x12\x1c.asset.v1.UploadAssetRequest\x1a\x1d.asset.v1.UploadAssetResponse(\x01\x12P\n" + - "\rRegisterAsset\x12\x1e.asset.v1.RegisterAssetRequest\x1a\x1f.asset.v1.RegisterAssetResponse\x12A\n" + - "\bGetAsset\x12\x19.asset.v1.GetAssetRequest\x1a\x1a.asset.v1.GetAssetResponse\x12G\n" + - "\n" + - "ListAssets\x12\x1b.asset.v1.ListAssetsRequest\x1a\x1c.asset.v1.ListAssetsResponse\x12M\n" + - "\fAcquireAsset\x12\x1d.asset.v1.AcquireAssetRequest\x1a\x1e.asset.v1.AcquireAssetResponse\x12M\n" + - "\fReleaseAsset\x12\x1d.asset.v1.ReleaseAssetRequest\x1a\x1e.asset.v1.ReleaseAssetResponse\x12J\n" + - "\vDeleteAsset\x12\x1c.asset.v1.DeleteAssetRequest\x1a\x1d.asset.v1.DeleteAssetResponse\x12S\n" + - "\x0eGarbageCollect\x12\x1f.asset.v1.GarbageCollectRequest\x1a .asset.v1.GarbageCollectResponse\x12P\n" + - "\rPrepareAssets\x12\x1e.asset.v1.PrepareAssetsRequest\x1a\x1f.asset.v1.PrepareAssetsResponse\x12J\n" + - "\vQueryAssets\x12\x1c.asset.v1.QueryAssetsRequest\x1a\x1d.asset.v1.QueryAssetsResponseBGZEgithub.com/unkeyed/unkey/go/deploy/assetmanagerd/gen/asset/v1;assetv1b\x06proto3" - -var ( - file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescOnce sync.Once - file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescData []byte -) - -func file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescGZIP() []byte { - file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescOnce.Do(func() { - file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDesc), len(file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDesc))) - }) - return file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDescData -} - -var file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes = make([]protoimpl.MessageInfo, 31) -var file_deploy_assetmanagerd_proto_asset_v1_asset_proto_goTypes = []any{ - (AssetType)(0), // 0: asset.v1.AssetType - (AssetStatus)(0), // 1: asset.v1.AssetStatus - (StorageBackend)(0), // 2: asset.v1.StorageBackend - (*Asset)(nil), // 3: asset.v1.Asset - (*UploadAssetRequest)(nil), // 4: asset.v1.UploadAssetRequest - (*UploadAssetMetadata)(nil), // 5: asset.v1.UploadAssetMetadata - (*UploadAssetResponse)(nil), // 6: asset.v1.UploadAssetResponse - (*RegisterAssetRequest)(nil), // 7: asset.v1.RegisterAssetRequest - (*RegisterAssetResponse)(nil), // 8: asset.v1.RegisterAssetResponse - (*GetAssetRequest)(nil), // 9: asset.v1.GetAssetRequest - (*GetAssetResponse)(nil), // 10: asset.v1.GetAssetResponse - (*ListAssetsRequest)(nil), // 11: asset.v1.ListAssetsRequest - (*ListAssetsResponse)(nil), // 12: asset.v1.ListAssetsResponse - (*AcquireAssetRequest)(nil), // 13: asset.v1.AcquireAssetRequest - (*AcquireAssetResponse)(nil), // 14: asset.v1.AcquireAssetResponse - (*ReleaseAssetRequest)(nil), // 15: asset.v1.ReleaseAssetRequest - (*ReleaseAssetResponse)(nil), // 16: asset.v1.ReleaseAssetResponse - (*DeleteAssetRequest)(nil), // 17: asset.v1.DeleteAssetRequest - (*DeleteAssetResponse)(nil), // 18: asset.v1.DeleteAssetResponse - (*GarbageCollectRequest)(nil), // 19: asset.v1.GarbageCollectRequest - (*GarbageCollectResponse)(nil), // 20: asset.v1.GarbageCollectResponse - (*PrepareAssetsRequest)(nil), // 21: asset.v1.PrepareAssetsRequest - (*PrepareAssetsResponse)(nil), // 22: asset.v1.PrepareAssetsResponse - (*QueryAssetsRequest)(nil), // 23: asset.v1.QueryAssetsRequest - (*BuildOptions)(nil), // 24: asset.v1.BuildOptions - (*QueryAssetsResponse)(nil), // 25: asset.v1.QueryAssetsResponse - (*BuildInfo)(nil), // 26: asset.v1.BuildInfo - nil, // 27: asset.v1.Asset.LabelsEntry - nil, // 28: asset.v1.UploadAssetMetadata.LabelsEntry - nil, // 29: asset.v1.RegisterAssetRequest.LabelsEntry - nil, // 30: asset.v1.ListAssetsRequest.LabelSelectorEntry - nil, // 31: asset.v1.PrepareAssetsResponse.AssetPathsEntry - nil, // 32: asset.v1.QueryAssetsRequest.LabelSelectorEntry - nil, // 33: asset.v1.BuildOptions.BuildLabelsEntry -} -var file_deploy_assetmanagerd_proto_asset_v1_asset_proto_depIdxs = []int32{ - 0, // 0: asset.v1.Asset.type:type_name -> asset.v1.AssetType - 1, // 1: asset.v1.Asset.status:type_name -> asset.v1.AssetStatus - 2, // 2: asset.v1.Asset.backend:type_name -> asset.v1.StorageBackend - 27, // 3: asset.v1.Asset.labels:type_name -> asset.v1.Asset.LabelsEntry - 5, // 4: asset.v1.UploadAssetRequest.metadata:type_name -> asset.v1.UploadAssetMetadata - 0, // 5: asset.v1.UploadAssetMetadata.type:type_name -> asset.v1.AssetType - 28, // 6: asset.v1.UploadAssetMetadata.labels:type_name -> asset.v1.UploadAssetMetadata.LabelsEntry - 3, // 7: asset.v1.UploadAssetResponse.asset:type_name -> asset.v1.Asset - 0, // 8: asset.v1.RegisterAssetRequest.type:type_name -> asset.v1.AssetType - 2, // 9: asset.v1.RegisterAssetRequest.backend:type_name -> asset.v1.StorageBackend - 29, // 10: asset.v1.RegisterAssetRequest.labels:type_name -> asset.v1.RegisterAssetRequest.LabelsEntry - 3, // 11: asset.v1.RegisterAssetResponse.asset:type_name -> asset.v1.Asset - 3, // 12: asset.v1.GetAssetResponse.asset:type_name -> asset.v1.Asset - 0, // 13: asset.v1.ListAssetsRequest.type:type_name -> asset.v1.AssetType - 1, // 14: asset.v1.ListAssetsRequest.status:type_name -> asset.v1.AssetStatus - 30, // 15: asset.v1.ListAssetsRequest.label_selector:type_name -> asset.v1.ListAssetsRequest.LabelSelectorEntry - 3, // 16: asset.v1.ListAssetsResponse.assets:type_name -> asset.v1.Asset - 3, // 17: asset.v1.AcquireAssetResponse.asset:type_name -> asset.v1.Asset - 3, // 18: asset.v1.ReleaseAssetResponse.asset:type_name -> asset.v1.Asset - 3, // 19: asset.v1.GarbageCollectResponse.deleted_assets:type_name -> asset.v1.Asset - 31, // 20: asset.v1.PrepareAssetsResponse.asset_paths:type_name -> asset.v1.PrepareAssetsResponse.AssetPathsEntry - 0, // 21: asset.v1.QueryAssetsRequest.type:type_name -> asset.v1.AssetType - 1, // 22: asset.v1.QueryAssetsRequest.status:type_name -> asset.v1.AssetStatus - 32, // 23: asset.v1.QueryAssetsRequest.label_selector:type_name -> asset.v1.QueryAssetsRequest.LabelSelectorEntry - 24, // 24: asset.v1.QueryAssetsRequest.build_options:type_name -> asset.v1.BuildOptions - 33, // 25: asset.v1.BuildOptions.build_labels:type_name -> asset.v1.BuildOptions.BuildLabelsEntry - 3, // 26: asset.v1.QueryAssetsResponse.assets:type_name -> asset.v1.Asset - 26, // 27: asset.v1.QueryAssetsResponse.triggered_builds:type_name -> asset.v1.BuildInfo - 4, // 28: asset.v1.AssetManagerService.UploadAsset:input_type -> asset.v1.UploadAssetRequest - 7, // 29: asset.v1.AssetManagerService.RegisterAsset:input_type -> asset.v1.RegisterAssetRequest - 9, // 30: asset.v1.AssetManagerService.GetAsset:input_type -> asset.v1.GetAssetRequest - 11, // 31: asset.v1.AssetManagerService.ListAssets:input_type -> asset.v1.ListAssetsRequest - 13, // 32: asset.v1.AssetManagerService.AcquireAsset:input_type -> asset.v1.AcquireAssetRequest - 15, // 33: asset.v1.AssetManagerService.ReleaseAsset:input_type -> asset.v1.ReleaseAssetRequest - 17, // 34: asset.v1.AssetManagerService.DeleteAsset:input_type -> asset.v1.DeleteAssetRequest - 19, // 35: asset.v1.AssetManagerService.GarbageCollect:input_type -> asset.v1.GarbageCollectRequest - 21, // 36: asset.v1.AssetManagerService.PrepareAssets:input_type -> asset.v1.PrepareAssetsRequest - 23, // 37: asset.v1.AssetManagerService.QueryAssets:input_type -> asset.v1.QueryAssetsRequest - 6, // 38: asset.v1.AssetManagerService.UploadAsset:output_type -> asset.v1.UploadAssetResponse - 8, // 39: asset.v1.AssetManagerService.RegisterAsset:output_type -> asset.v1.RegisterAssetResponse - 10, // 40: asset.v1.AssetManagerService.GetAsset:output_type -> asset.v1.GetAssetResponse - 12, // 41: asset.v1.AssetManagerService.ListAssets:output_type -> asset.v1.ListAssetsResponse - 14, // 42: asset.v1.AssetManagerService.AcquireAsset:output_type -> asset.v1.AcquireAssetResponse - 16, // 43: asset.v1.AssetManagerService.ReleaseAsset:output_type -> asset.v1.ReleaseAssetResponse - 18, // 44: asset.v1.AssetManagerService.DeleteAsset:output_type -> asset.v1.DeleteAssetResponse - 20, // 45: asset.v1.AssetManagerService.GarbageCollect:output_type -> asset.v1.GarbageCollectResponse - 22, // 46: asset.v1.AssetManagerService.PrepareAssets:output_type -> asset.v1.PrepareAssetsResponse - 25, // 47: asset.v1.AssetManagerService.QueryAssets:output_type -> asset.v1.QueryAssetsResponse - 38, // [38:48] is the sub-list for method output_type - 28, // [28:38] is the sub-list for method input_type - 28, // [28:28] is the sub-list for extension type_name - 28, // [28:28] is the sub-list for extension extendee - 0, // [0:28] is the sub-list for field type_name -} - -func init() { file_deploy_assetmanagerd_proto_asset_v1_asset_proto_init() } -func file_deploy_assetmanagerd_proto_asset_v1_asset_proto_init() { - if File_deploy_assetmanagerd_proto_asset_v1_asset_proto != nil { - return - } - file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes[1].OneofWrappers = []any{ - (*UploadAssetRequest_Metadata)(nil), - (*UploadAssetRequest_Chunk)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDesc), len(file_deploy_assetmanagerd_proto_asset_v1_asset_proto_rawDesc)), - NumEnums: 3, - NumMessages: 31, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_deploy_assetmanagerd_proto_asset_v1_asset_proto_goTypes, - DependencyIndexes: file_deploy_assetmanagerd_proto_asset_v1_asset_proto_depIdxs, - EnumInfos: file_deploy_assetmanagerd_proto_asset_v1_asset_proto_enumTypes, - MessageInfos: file_deploy_assetmanagerd_proto_asset_v1_asset_proto_msgTypes, - }.Build() - File_deploy_assetmanagerd_proto_asset_v1_asset_proto = out.File - file_deploy_assetmanagerd_proto_asset_v1_asset_proto_goTypes = nil - file_deploy_assetmanagerd_proto_asset_v1_asset_proto_depIdxs = nil -} diff --git a/go/gen/deploy/assetmanagerd/proto/asset/v1/assetv1connect/asset.connect.go b/go/gen/deploy/assetmanagerd/proto/asset/v1/assetv1connect/asset.connect.go deleted file mode 100644 index 238815eff1..0000000000 --- a/go/gen/deploy/assetmanagerd/proto/asset/v1/assetv1connect/asset.connect.go +++ /dev/null @@ -1,405 +0,0 @@ -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: deploy/assetmanagerd/proto/asset/v1/asset.proto - -package assetv1connect - -import ( - connect "connectrpc.com/connect" - context "context" - errors "errors" - v1 "github.com/unkeyed/unkey/go/deploy/assetmanagerd/gen/asset/v1" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect.IsAtLeastVersion1_13_0 - -const ( - // AssetManagerServiceName is the fully-qualified name of the AssetManagerService service. - AssetManagerServiceName = "asset.v1.AssetManagerService" -) - -// These constants are the fully-qualified names of the RPCs defined in this package. They're -// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. -// -// Note that these are different from the fully-qualified method names used by -// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to -// reflection-formatted method names, remove the leading slash and convert the remaining slash to a -// period. -const ( - // AssetManagerServiceUploadAssetProcedure is the fully-qualified name of the AssetManagerService's - // UploadAsset RPC. - AssetManagerServiceUploadAssetProcedure = "/asset.v1.AssetManagerService/UploadAsset" - // AssetManagerServiceRegisterAssetProcedure is the fully-qualified name of the - // AssetManagerService's RegisterAsset RPC. - AssetManagerServiceRegisterAssetProcedure = "/asset.v1.AssetManagerService/RegisterAsset" - // AssetManagerServiceGetAssetProcedure is the fully-qualified name of the AssetManagerService's - // GetAsset RPC. - AssetManagerServiceGetAssetProcedure = "/asset.v1.AssetManagerService/GetAsset" - // AssetManagerServiceListAssetsProcedure is the fully-qualified name of the AssetManagerService's - // ListAssets RPC. - AssetManagerServiceListAssetsProcedure = "/asset.v1.AssetManagerService/ListAssets" - // AssetManagerServiceAcquireAssetProcedure is the fully-qualified name of the AssetManagerService's - // AcquireAsset RPC. - AssetManagerServiceAcquireAssetProcedure = "/asset.v1.AssetManagerService/AcquireAsset" - // AssetManagerServiceReleaseAssetProcedure is the fully-qualified name of the AssetManagerService's - // ReleaseAsset RPC. - AssetManagerServiceReleaseAssetProcedure = "/asset.v1.AssetManagerService/ReleaseAsset" - // AssetManagerServiceDeleteAssetProcedure is the fully-qualified name of the AssetManagerService's - // DeleteAsset RPC. - AssetManagerServiceDeleteAssetProcedure = "/asset.v1.AssetManagerService/DeleteAsset" - // AssetManagerServiceGarbageCollectProcedure is the fully-qualified name of the - // AssetManagerService's GarbageCollect RPC. - AssetManagerServiceGarbageCollectProcedure = "/asset.v1.AssetManagerService/GarbageCollect" - // AssetManagerServicePrepareAssetsProcedure is the fully-qualified name of the - // AssetManagerService's PrepareAssets RPC. - AssetManagerServicePrepareAssetsProcedure = "/asset.v1.AssetManagerService/PrepareAssets" - // AssetManagerServiceQueryAssetsProcedure is the fully-qualified name of the AssetManagerService's - // QueryAssets RPC. - AssetManagerServiceQueryAssetsProcedure = "/asset.v1.AssetManagerService/QueryAssets" -) - -// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. -var ( - assetManagerServiceServiceDescriptor = v1.File_deploy_assetmanagerd_proto_asset_v1_asset_proto.Services().ByName("AssetManagerService") - assetManagerServiceUploadAssetMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("UploadAsset") - assetManagerServiceRegisterAssetMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("RegisterAsset") - assetManagerServiceGetAssetMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("GetAsset") - assetManagerServiceListAssetsMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("ListAssets") - assetManagerServiceAcquireAssetMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("AcquireAsset") - assetManagerServiceReleaseAssetMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("ReleaseAsset") - assetManagerServiceDeleteAssetMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("DeleteAsset") - assetManagerServiceGarbageCollectMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("GarbageCollect") - assetManagerServicePrepareAssetsMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("PrepareAssets") - assetManagerServiceQueryAssetsMethodDescriptor = assetManagerServiceServiceDescriptor.Methods().ByName("QueryAssets") -) - -// AssetManagerServiceClient is a client for the asset.v1.AssetManagerService service. -type AssetManagerServiceClient interface { - // Upload and register an asset in one operation - UploadAsset(context.Context) *connect.ClientStreamForClient[v1.UploadAssetRequest, v1.UploadAssetResponse] - // Register a new asset (called by builderd after creating images) - RegisterAsset(context.Context, *connect.Request[v1.RegisterAssetRequest]) (*connect.Response[v1.RegisterAssetResponse], error) - // Get asset location and metadata - GetAsset(context.Context, *connect.Request[v1.GetAssetRequest]) (*connect.Response[v1.GetAssetResponse], error) - // List available assets with filtering - ListAssets(context.Context, *connect.Request[v1.ListAssetsRequest]) (*connect.Response[v1.ListAssetsResponse], error) - // Mark asset as in-use (reference counting for GC) - AcquireAsset(context.Context, *connect.Request[v1.AcquireAssetRequest]) (*connect.Response[v1.AcquireAssetResponse], error) - // Release asset reference (decrements ref count) - ReleaseAsset(context.Context, *connect.Request[v1.ReleaseAssetRequest]) (*connect.Response[v1.ReleaseAssetResponse], error) - // Delete an asset (only if ref count is 0) - DeleteAsset(context.Context, *connect.Request[v1.DeleteAssetRequest]) (*connect.Response[v1.DeleteAssetResponse], error) - // Trigger garbage collection of unused assets - GarbageCollect(context.Context, *connect.Request[v1.GarbageCollectRequest]) (*connect.Response[v1.GarbageCollectResponse], error) - // Pre-stage assets for a specific host/jailer - PrepareAssets(context.Context, *connect.Request[v1.PrepareAssetsRequest]) (*connect.Response[v1.PrepareAssetsResponse], error) - // Query assets with automatic build triggering if not found - // This is the enhanced version of ListAssets that supports automatic asset creation - QueryAssets(context.Context, *connect.Request[v1.QueryAssetsRequest]) (*connect.Response[v1.QueryAssetsResponse], error) -} - -// NewAssetManagerServiceClient constructs a client for the asset.v1.AssetManagerService service. By -// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, -// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the -// connect.WithGRPC() or connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewAssetManagerServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) AssetManagerServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - return &assetManagerServiceClient{ - uploadAsset: connect.NewClient[v1.UploadAssetRequest, v1.UploadAssetResponse]( - httpClient, - baseURL+AssetManagerServiceUploadAssetProcedure, - connect.WithSchema(assetManagerServiceUploadAssetMethodDescriptor), - connect.WithClientOptions(opts...), - ), - registerAsset: connect.NewClient[v1.RegisterAssetRequest, v1.RegisterAssetResponse]( - httpClient, - baseURL+AssetManagerServiceRegisterAssetProcedure, - connect.WithSchema(assetManagerServiceRegisterAssetMethodDescriptor), - connect.WithClientOptions(opts...), - ), - getAsset: connect.NewClient[v1.GetAssetRequest, v1.GetAssetResponse]( - httpClient, - baseURL+AssetManagerServiceGetAssetProcedure, - connect.WithSchema(assetManagerServiceGetAssetMethodDescriptor), - connect.WithClientOptions(opts...), - ), - listAssets: connect.NewClient[v1.ListAssetsRequest, v1.ListAssetsResponse]( - httpClient, - baseURL+AssetManagerServiceListAssetsProcedure, - connect.WithSchema(assetManagerServiceListAssetsMethodDescriptor), - connect.WithClientOptions(opts...), - ), - acquireAsset: connect.NewClient[v1.AcquireAssetRequest, v1.AcquireAssetResponse]( - httpClient, - baseURL+AssetManagerServiceAcquireAssetProcedure, - connect.WithSchema(assetManagerServiceAcquireAssetMethodDescriptor), - connect.WithClientOptions(opts...), - ), - releaseAsset: connect.NewClient[v1.ReleaseAssetRequest, v1.ReleaseAssetResponse]( - httpClient, - baseURL+AssetManagerServiceReleaseAssetProcedure, - connect.WithSchema(assetManagerServiceReleaseAssetMethodDescriptor), - connect.WithClientOptions(opts...), - ), - deleteAsset: connect.NewClient[v1.DeleteAssetRequest, v1.DeleteAssetResponse]( - httpClient, - baseURL+AssetManagerServiceDeleteAssetProcedure, - connect.WithSchema(assetManagerServiceDeleteAssetMethodDescriptor), - connect.WithClientOptions(opts...), - ), - garbageCollect: connect.NewClient[v1.GarbageCollectRequest, v1.GarbageCollectResponse]( - httpClient, - baseURL+AssetManagerServiceGarbageCollectProcedure, - connect.WithSchema(assetManagerServiceGarbageCollectMethodDescriptor), - connect.WithClientOptions(opts...), - ), - prepareAssets: connect.NewClient[v1.PrepareAssetsRequest, v1.PrepareAssetsResponse]( - httpClient, - baseURL+AssetManagerServicePrepareAssetsProcedure, - connect.WithSchema(assetManagerServicePrepareAssetsMethodDescriptor), - connect.WithClientOptions(opts...), - ), - queryAssets: connect.NewClient[v1.QueryAssetsRequest, v1.QueryAssetsResponse]( - httpClient, - baseURL+AssetManagerServiceQueryAssetsProcedure, - connect.WithSchema(assetManagerServiceQueryAssetsMethodDescriptor), - connect.WithClientOptions(opts...), - ), - } -} - -// assetManagerServiceClient implements AssetManagerServiceClient. -type assetManagerServiceClient struct { - uploadAsset *connect.Client[v1.UploadAssetRequest, v1.UploadAssetResponse] - registerAsset *connect.Client[v1.RegisterAssetRequest, v1.RegisterAssetResponse] - getAsset *connect.Client[v1.GetAssetRequest, v1.GetAssetResponse] - listAssets *connect.Client[v1.ListAssetsRequest, v1.ListAssetsResponse] - acquireAsset *connect.Client[v1.AcquireAssetRequest, v1.AcquireAssetResponse] - releaseAsset *connect.Client[v1.ReleaseAssetRequest, v1.ReleaseAssetResponse] - deleteAsset *connect.Client[v1.DeleteAssetRequest, v1.DeleteAssetResponse] - garbageCollect *connect.Client[v1.GarbageCollectRequest, v1.GarbageCollectResponse] - prepareAssets *connect.Client[v1.PrepareAssetsRequest, v1.PrepareAssetsResponse] - queryAssets *connect.Client[v1.QueryAssetsRequest, v1.QueryAssetsResponse] -} - -// UploadAsset calls asset.v1.AssetManagerService.UploadAsset. -func (c *assetManagerServiceClient) UploadAsset(ctx context.Context) *connect.ClientStreamForClient[v1.UploadAssetRequest, v1.UploadAssetResponse] { - return c.uploadAsset.CallClientStream(ctx) -} - -// RegisterAsset calls asset.v1.AssetManagerService.RegisterAsset. -func (c *assetManagerServiceClient) RegisterAsset(ctx context.Context, req *connect.Request[v1.RegisterAssetRequest]) (*connect.Response[v1.RegisterAssetResponse], error) { - return c.registerAsset.CallUnary(ctx, req) -} - -// GetAsset calls asset.v1.AssetManagerService.GetAsset. -func (c *assetManagerServiceClient) GetAsset(ctx context.Context, req *connect.Request[v1.GetAssetRequest]) (*connect.Response[v1.GetAssetResponse], error) { - return c.getAsset.CallUnary(ctx, req) -} - -// ListAssets calls asset.v1.AssetManagerService.ListAssets. -func (c *assetManagerServiceClient) ListAssets(ctx context.Context, req *connect.Request[v1.ListAssetsRequest]) (*connect.Response[v1.ListAssetsResponse], error) { - return c.listAssets.CallUnary(ctx, req) -} - -// AcquireAsset calls asset.v1.AssetManagerService.AcquireAsset. -func (c *assetManagerServiceClient) AcquireAsset(ctx context.Context, req *connect.Request[v1.AcquireAssetRequest]) (*connect.Response[v1.AcquireAssetResponse], error) { - return c.acquireAsset.CallUnary(ctx, req) -} - -// ReleaseAsset calls asset.v1.AssetManagerService.ReleaseAsset. -func (c *assetManagerServiceClient) ReleaseAsset(ctx context.Context, req *connect.Request[v1.ReleaseAssetRequest]) (*connect.Response[v1.ReleaseAssetResponse], error) { - return c.releaseAsset.CallUnary(ctx, req) -} - -// DeleteAsset calls asset.v1.AssetManagerService.DeleteAsset. -func (c *assetManagerServiceClient) DeleteAsset(ctx context.Context, req *connect.Request[v1.DeleteAssetRequest]) (*connect.Response[v1.DeleteAssetResponse], error) { - return c.deleteAsset.CallUnary(ctx, req) -} - -// GarbageCollect calls asset.v1.AssetManagerService.GarbageCollect. -func (c *assetManagerServiceClient) GarbageCollect(ctx context.Context, req *connect.Request[v1.GarbageCollectRequest]) (*connect.Response[v1.GarbageCollectResponse], error) { - return c.garbageCollect.CallUnary(ctx, req) -} - -// PrepareAssets calls asset.v1.AssetManagerService.PrepareAssets. -func (c *assetManagerServiceClient) PrepareAssets(ctx context.Context, req *connect.Request[v1.PrepareAssetsRequest]) (*connect.Response[v1.PrepareAssetsResponse], error) { - return c.prepareAssets.CallUnary(ctx, req) -} - -// QueryAssets calls asset.v1.AssetManagerService.QueryAssets. -func (c *assetManagerServiceClient) QueryAssets(ctx context.Context, req *connect.Request[v1.QueryAssetsRequest]) (*connect.Response[v1.QueryAssetsResponse], error) { - return c.queryAssets.CallUnary(ctx, req) -} - -// AssetManagerServiceHandler is an implementation of the asset.v1.AssetManagerService service. -type AssetManagerServiceHandler interface { - // Upload and register an asset in one operation - UploadAsset(context.Context, *connect.ClientStream[v1.UploadAssetRequest]) (*connect.Response[v1.UploadAssetResponse], error) - // Register a new asset (called by builderd after creating images) - RegisterAsset(context.Context, *connect.Request[v1.RegisterAssetRequest]) (*connect.Response[v1.RegisterAssetResponse], error) - // Get asset location and metadata - GetAsset(context.Context, *connect.Request[v1.GetAssetRequest]) (*connect.Response[v1.GetAssetResponse], error) - // List available assets with filtering - ListAssets(context.Context, *connect.Request[v1.ListAssetsRequest]) (*connect.Response[v1.ListAssetsResponse], error) - // Mark asset as in-use (reference counting for GC) - AcquireAsset(context.Context, *connect.Request[v1.AcquireAssetRequest]) (*connect.Response[v1.AcquireAssetResponse], error) - // Release asset reference (decrements ref count) - ReleaseAsset(context.Context, *connect.Request[v1.ReleaseAssetRequest]) (*connect.Response[v1.ReleaseAssetResponse], error) - // Delete an asset (only if ref count is 0) - DeleteAsset(context.Context, *connect.Request[v1.DeleteAssetRequest]) (*connect.Response[v1.DeleteAssetResponse], error) - // Trigger garbage collection of unused assets - GarbageCollect(context.Context, *connect.Request[v1.GarbageCollectRequest]) (*connect.Response[v1.GarbageCollectResponse], error) - // Pre-stage assets for a specific host/jailer - PrepareAssets(context.Context, *connect.Request[v1.PrepareAssetsRequest]) (*connect.Response[v1.PrepareAssetsResponse], error) - // Query assets with automatic build triggering if not found - // This is the enhanced version of ListAssets that supports automatic asset creation - QueryAssets(context.Context, *connect.Request[v1.QueryAssetsRequest]) (*connect.Response[v1.QueryAssetsResponse], error) -} - -// NewAssetManagerServiceHandler builds an HTTP handler from the service implementation. It returns -// the path on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewAssetManagerServiceHandler(svc AssetManagerServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - assetManagerServiceUploadAssetHandler := connect.NewClientStreamHandler( - AssetManagerServiceUploadAssetProcedure, - svc.UploadAsset, - connect.WithSchema(assetManagerServiceUploadAssetMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - assetManagerServiceRegisterAssetHandler := connect.NewUnaryHandler( - AssetManagerServiceRegisterAssetProcedure, - svc.RegisterAsset, - connect.WithSchema(assetManagerServiceRegisterAssetMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - assetManagerServiceGetAssetHandler := connect.NewUnaryHandler( - AssetManagerServiceGetAssetProcedure, - svc.GetAsset, - connect.WithSchema(assetManagerServiceGetAssetMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - assetManagerServiceListAssetsHandler := connect.NewUnaryHandler( - AssetManagerServiceListAssetsProcedure, - svc.ListAssets, - connect.WithSchema(assetManagerServiceListAssetsMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - assetManagerServiceAcquireAssetHandler := connect.NewUnaryHandler( - AssetManagerServiceAcquireAssetProcedure, - svc.AcquireAsset, - connect.WithSchema(assetManagerServiceAcquireAssetMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - assetManagerServiceReleaseAssetHandler := connect.NewUnaryHandler( - AssetManagerServiceReleaseAssetProcedure, - svc.ReleaseAsset, - connect.WithSchema(assetManagerServiceReleaseAssetMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - assetManagerServiceDeleteAssetHandler := connect.NewUnaryHandler( - AssetManagerServiceDeleteAssetProcedure, - svc.DeleteAsset, - connect.WithSchema(assetManagerServiceDeleteAssetMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - assetManagerServiceGarbageCollectHandler := connect.NewUnaryHandler( - AssetManagerServiceGarbageCollectProcedure, - svc.GarbageCollect, - connect.WithSchema(assetManagerServiceGarbageCollectMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - assetManagerServicePrepareAssetsHandler := connect.NewUnaryHandler( - AssetManagerServicePrepareAssetsProcedure, - svc.PrepareAssets, - connect.WithSchema(assetManagerServicePrepareAssetsMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - assetManagerServiceQueryAssetsHandler := connect.NewUnaryHandler( - AssetManagerServiceQueryAssetsProcedure, - svc.QueryAssets, - connect.WithSchema(assetManagerServiceQueryAssetsMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - return "/asset.v1.AssetManagerService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch r.URL.Path { - case AssetManagerServiceUploadAssetProcedure: - assetManagerServiceUploadAssetHandler.ServeHTTP(w, r) - case AssetManagerServiceRegisterAssetProcedure: - assetManagerServiceRegisterAssetHandler.ServeHTTP(w, r) - case AssetManagerServiceGetAssetProcedure: - assetManagerServiceGetAssetHandler.ServeHTTP(w, r) - case AssetManagerServiceListAssetsProcedure: - assetManagerServiceListAssetsHandler.ServeHTTP(w, r) - case AssetManagerServiceAcquireAssetProcedure: - assetManagerServiceAcquireAssetHandler.ServeHTTP(w, r) - case AssetManagerServiceReleaseAssetProcedure: - assetManagerServiceReleaseAssetHandler.ServeHTTP(w, r) - case AssetManagerServiceDeleteAssetProcedure: - assetManagerServiceDeleteAssetHandler.ServeHTTP(w, r) - case AssetManagerServiceGarbageCollectProcedure: - assetManagerServiceGarbageCollectHandler.ServeHTTP(w, r) - case AssetManagerServicePrepareAssetsProcedure: - assetManagerServicePrepareAssetsHandler.ServeHTTP(w, r) - case AssetManagerServiceQueryAssetsProcedure: - assetManagerServiceQueryAssetsHandler.ServeHTTP(w, r) - default: - http.NotFound(w, r) - } - }) -} - -// UnimplementedAssetManagerServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedAssetManagerServiceHandler struct{} - -func (UnimplementedAssetManagerServiceHandler) UploadAsset(context.Context, *connect.ClientStream[v1.UploadAssetRequest]) (*connect.Response[v1.UploadAssetResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.UploadAsset is not implemented")) -} - -func (UnimplementedAssetManagerServiceHandler) RegisterAsset(context.Context, *connect.Request[v1.RegisterAssetRequest]) (*connect.Response[v1.RegisterAssetResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.RegisterAsset is not implemented")) -} - -func (UnimplementedAssetManagerServiceHandler) GetAsset(context.Context, *connect.Request[v1.GetAssetRequest]) (*connect.Response[v1.GetAssetResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.GetAsset is not implemented")) -} - -func (UnimplementedAssetManagerServiceHandler) ListAssets(context.Context, *connect.Request[v1.ListAssetsRequest]) (*connect.Response[v1.ListAssetsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.ListAssets is not implemented")) -} - -func (UnimplementedAssetManagerServiceHandler) AcquireAsset(context.Context, *connect.Request[v1.AcquireAssetRequest]) (*connect.Response[v1.AcquireAssetResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.AcquireAsset is not implemented")) -} - -func (UnimplementedAssetManagerServiceHandler) ReleaseAsset(context.Context, *connect.Request[v1.ReleaseAssetRequest]) (*connect.Response[v1.ReleaseAssetResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.ReleaseAsset is not implemented")) -} - -func (UnimplementedAssetManagerServiceHandler) DeleteAsset(context.Context, *connect.Request[v1.DeleteAssetRequest]) (*connect.Response[v1.DeleteAssetResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.DeleteAsset is not implemented")) -} - -func (UnimplementedAssetManagerServiceHandler) GarbageCollect(context.Context, *connect.Request[v1.GarbageCollectRequest]) (*connect.Response[v1.GarbageCollectResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.GarbageCollect is not implemented")) -} - -func (UnimplementedAssetManagerServiceHandler) PrepareAssets(context.Context, *connect.Request[v1.PrepareAssetsRequest]) (*connect.Response[v1.PrepareAssetsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.PrepareAssets is not implemented")) -} - -func (UnimplementedAssetManagerServiceHandler) QueryAssets(context.Context, *connect.Request[v1.QueryAssetsRequest]) (*connect.Response[v1.QueryAssetsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("asset.v1.AssetManagerService.QueryAssets is not implemented")) -} diff --git a/go/gen/deploy/billaged/proto/billing/v1/billing.pb.go b/go/gen/deploy/billaged/proto/billing/v1/billing.pb.go deleted file mode 100644 index 1f4e0baca5..0000000000 --- a/go/gen/deploy/billaged/proto/billing/v1/billing.pb.go +++ /dev/null @@ -1,754 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.6 -// protoc (unknown) -// source: deploy/billaged/proto/billing/v1/billing.proto - -package billingv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -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 VMMetrics struct { - state protoimpl.MessageState `protogen:"open.v1"` - Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - CpuTimeNanos int64 `protobuf:"varint,2,opt,name=cpu_time_nanos,json=cpuTimeNanos,proto3" json:"cpu_time_nanos,omitempty"` - MemoryUsageBytes int64 `protobuf:"varint,3,opt,name=memory_usage_bytes,json=memoryUsageBytes,proto3" json:"memory_usage_bytes,omitempty"` - DiskReadBytes int64 `protobuf:"varint,4,opt,name=disk_read_bytes,json=diskReadBytes,proto3" json:"disk_read_bytes,omitempty"` - DiskWriteBytes int64 `protobuf:"varint,5,opt,name=disk_write_bytes,json=diskWriteBytes,proto3" json:"disk_write_bytes,omitempty"` - NetworkRxBytes int64 `protobuf:"varint,6,opt,name=network_rx_bytes,json=networkRxBytes,proto3" json:"network_rx_bytes,omitempty"` - NetworkTxBytes int64 `protobuf:"varint,7,opt,name=network_tx_bytes,json=networkTxBytes,proto3" json:"network_tx_bytes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *VMMetrics) Reset() { - *x = VMMetrics{} - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *VMMetrics) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VMMetrics) ProtoMessage() {} - -func (x *VMMetrics) ProtoReflect() protoreflect.Message { - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VMMetrics.ProtoReflect.Descriptor instead. -func (*VMMetrics) Descriptor() ([]byte, []int) { - return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{0} -} - -func (x *VMMetrics) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp - } - return nil -} - -func (x *VMMetrics) GetCpuTimeNanos() int64 { - if x != nil { - return x.CpuTimeNanos - } - return 0 -} - -func (x *VMMetrics) GetMemoryUsageBytes() int64 { - if x != nil { - return x.MemoryUsageBytes - } - return 0 -} - -func (x *VMMetrics) GetDiskReadBytes() int64 { - if x != nil { - return x.DiskReadBytes - } - return 0 -} - -func (x *VMMetrics) GetDiskWriteBytes() int64 { - if x != nil { - return x.DiskWriteBytes - } - return 0 -} - -func (x *VMMetrics) GetNetworkRxBytes() int64 { - if x != nil { - return x.NetworkRxBytes - } - return 0 -} - -func (x *VMMetrics) GetNetworkTxBytes() int64 { - if x != nil { - return x.NetworkTxBytes - } - return 0 -} - -type SendMetricsBatchRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` - Metrics []*VMMetrics `protobuf:"bytes,3,rep,name=metrics,proto3" json:"metrics,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SendMetricsBatchRequest) Reset() { - *x = SendMetricsBatchRequest{} - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SendMetricsBatchRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SendMetricsBatchRequest) ProtoMessage() {} - -func (x *SendMetricsBatchRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SendMetricsBatchRequest.ProtoReflect.Descriptor instead. -func (*SendMetricsBatchRequest) Descriptor() ([]byte, []int) { - return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{1} -} - -func (x *SendMetricsBatchRequest) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -func (x *SendMetricsBatchRequest) GetCustomerId() string { - if x != nil { - return x.CustomerId - } - return "" -} - -func (x *SendMetricsBatchRequest) GetMetrics() []*VMMetrics { - if x != nil { - return x.Metrics - } - return nil -} - -type SendMetricsBatchResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SendMetricsBatchResponse) Reset() { - *x = SendMetricsBatchResponse{} - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SendMetricsBatchResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SendMetricsBatchResponse) ProtoMessage() {} - -func (x *SendMetricsBatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SendMetricsBatchResponse.ProtoReflect.Descriptor instead. -func (*SendMetricsBatchResponse) Descriptor() ([]byte, []int) { - return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{2} -} - -func (x *SendMetricsBatchResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *SendMetricsBatchResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -type SendHeartbeatRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` - ActiveVms []string `protobuf:"bytes,2,rep,name=active_vms,json=activeVms,proto3" json:"active_vms,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SendHeartbeatRequest) Reset() { - *x = SendHeartbeatRequest{} - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SendHeartbeatRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SendHeartbeatRequest) ProtoMessage() {} - -func (x *SendHeartbeatRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SendHeartbeatRequest.ProtoReflect.Descriptor instead. -func (*SendHeartbeatRequest) Descriptor() ([]byte, []int) { - return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{3} -} - -func (x *SendHeartbeatRequest) GetInstanceId() string { - if x != nil { - return x.InstanceId - } - return "" -} - -func (x *SendHeartbeatRequest) GetActiveVms() []string { - if x != nil { - return x.ActiveVms - } - return nil -} - -type SendHeartbeatResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SendHeartbeatResponse) Reset() { - *x = SendHeartbeatResponse{} - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SendHeartbeatResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SendHeartbeatResponse) ProtoMessage() {} - -func (x *SendHeartbeatResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SendHeartbeatResponse.ProtoReflect.Descriptor instead. -func (*SendHeartbeatResponse) Descriptor() ([]byte, []int) { - return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{4} -} - -func (x *SendHeartbeatResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -type NotifyVmStartedRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` - StartTime int64 `protobuf:"varint,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *NotifyVmStartedRequest) Reset() { - *x = NotifyVmStartedRequest{} - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *NotifyVmStartedRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NotifyVmStartedRequest) ProtoMessage() {} - -func (x *NotifyVmStartedRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NotifyVmStartedRequest.ProtoReflect.Descriptor instead. -func (*NotifyVmStartedRequest) Descriptor() ([]byte, []int) { - return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{5} -} - -func (x *NotifyVmStartedRequest) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -func (x *NotifyVmStartedRequest) GetCustomerId() string { - if x != nil { - return x.CustomerId - } - return "" -} - -func (x *NotifyVmStartedRequest) GetStartTime() int64 { - if x != nil { - return x.StartTime - } - return 0 -} - -type NotifyVmStartedResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *NotifyVmStartedResponse) Reset() { - *x = NotifyVmStartedResponse{} - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *NotifyVmStartedResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NotifyVmStartedResponse) ProtoMessage() {} - -func (x *NotifyVmStartedResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NotifyVmStartedResponse.ProtoReflect.Descriptor instead. -func (*NotifyVmStartedResponse) Descriptor() ([]byte, []int) { - return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{6} -} - -func (x *NotifyVmStartedResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -type NotifyVmStoppedRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - StopTime int64 `protobuf:"varint,2,opt,name=stop_time,json=stopTime,proto3" json:"stop_time,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *NotifyVmStoppedRequest) Reset() { - *x = NotifyVmStoppedRequest{} - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *NotifyVmStoppedRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NotifyVmStoppedRequest) ProtoMessage() {} - -func (x *NotifyVmStoppedRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NotifyVmStoppedRequest.ProtoReflect.Descriptor instead. -func (*NotifyVmStoppedRequest) Descriptor() ([]byte, []int) { - return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{7} -} - -func (x *NotifyVmStoppedRequest) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -func (x *NotifyVmStoppedRequest) GetStopTime() int64 { - if x != nil { - return x.StopTime - } - return 0 -} - -type NotifyVmStoppedResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *NotifyVmStoppedResponse) Reset() { - *x = NotifyVmStoppedResponse{} - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *NotifyVmStoppedResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NotifyVmStoppedResponse) ProtoMessage() {} - -func (x *NotifyVmStoppedResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NotifyVmStoppedResponse.ProtoReflect.Descriptor instead. -func (*NotifyVmStoppedResponse) Descriptor() ([]byte, []int) { - return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{8} -} - -func (x *NotifyVmStoppedResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -type NotifyPossibleGapRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - LastSent int64 `protobuf:"varint,2,opt,name=last_sent,json=lastSent,proto3" json:"last_sent,omitempty"` - ResumeTime int64 `protobuf:"varint,3,opt,name=resume_time,json=resumeTime,proto3" json:"resume_time,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *NotifyPossibleGapRequest) Reset() { - *x = NotifyPossibleGapRequest{} - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *NotifyPossibleGapRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NotifyPossibleGapRequest) ProtoMessage() {} - -func (x *NotifyPossibleGapRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NotifyPossibleGapRequest.ProtoReflect.Descriptor instead. -func (*NotifyPossibleGapRequest) Descriptor() ([]byte, []int) { - return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{9} -} - -func (x *NotifyPossibleGapRequest) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -func (x *NotifyPossibleGapRequest) GetLastSent() int64 { - if x != nil { - return x.LastSent - } - return 0 -} - -func (x *NotifyPossibleGapRequest) GetResumeTime() int64 { - if x != nil { - return x.ResumeTime - } - return 0 -} - -type NotifyPossibleGapResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *NotifyPossibleGapResponse) Reset() { - *x = NotifyPossibleGapResponse{} - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *NotifyPossibleGapResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NotifyPossibleGapResponse) ProtoMessage() {} - -func (x *NotifyPossibleGapResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NotifyPossibleGapResponse.ProtoReflect.Descriptor instead. -func (*NotifyPossibleGapResponse) Descriptor() ([]byte, []int) { - return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP(), []int{10} -} - -func (x *NotifyPossibleGapResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -var File_deploy_billaged_proto_billing_v1_billing_proto protoreflect.FileDescriptor - -const file_deploy_billaged_proto_billing_v1_billing_proto_rawDesc = "" + - "\n" + - ".deploy/billaged/proto/billing/v1/billing.proto\x12\n" + - "billing.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\xbf\x02\n" + - "\tVMMetrics\x128\n" + - "\ttimestamp\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12$\n" + - "\x0ecpu_time_nanos\x18\x02 \x01(\x03R\fcpuTimeNanos\x12,\n" + - "\x12memory_usage_bytes\x18\x03 \x01(\x03R\x10memoryUsageBytes\x12&\n" + - "\x0fdisk_read_bytes\x18\x04 \x01(\x03R\rdiskReadBytes\x12(\n" + - "\x10disk_write_bytes\x18\x05 \x01(\x03R\x0ediskWriteBytes\x12(\n" + - "\x10network_rx_bytes\x18\x06 \x01(\x03R\x0enetworkRxBytes\x12(\n" + - "\x10network_tx_bytes\x18\a \x01(\x03R\x0enetworkTxBytes\"\x80\x01\n" + - "\x17SendMetricsBatchRequest\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12\x1f\n" + - "\vcustomer_id\x18\x02 \x01(\tR\n" + - "customerId\x12/\n" + - "\ametrics\x18\x03 \x03(\v2\x15.billing.v1.VMMetricsR\ametrics\"N\n" + - "\x18SendMetricsBatchResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\"V\n" + - "\x14SendHeartbeatRequest\x12\x1f\n" + - "\vinstance_id\x18\x01 \x01(\tR\n" + - "instanceId\x12\x1d\n" + - "\n" + - "active_vms\x18\x02 \x03(\tR\tactiveVms\"1\n" + - "\x15SendHeartbeatResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\"m\n" + - "\x16NotifyVmStartedRequest\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12\x1f\n" + - "\vcustomer_id\x18\x02 \x01(\tR\n" + - "customerId\x12\x1d\n" + - "\n" + - "start_time\x18\x03 \x01(\x03R\tstartTime\"3\n" + - "\x17NotifyVmStartedResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\"J\n" + - "\x16NotifyVmStoppedRequest\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12\x1b\n" + - "\tstop_time\x18\x02 \x01(\x03R\bstopTime\"3\n" + - "\x17NotifyVmStoppedResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\"m\n" + - "\x18NotifyPossibleGapRequest\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12\x1b\n" + - "\tlast_sent\x18\x02 \x01(\x03R\blastSent\x12\x1f\n" + - "\vresume_time\x18\x03 \x01(\x03R\n" + - "resumeTime\"5\n" + - "\x19NotifyPossibleGapResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess2\xdf\x03\n" + - "\x0eBillingService\x12]\n" + - "\x10SendMetricsBatch\x12#.billing.v1.SendMetricsBatchRequest\x1a$.billing.v1.SendMetricsBatchResponse\x12T\n" + - "\rSendHeartbeat\x12 .billing.v1.SendHeartbeatRequest\x1a!.billing.v1.SendHeartbeatResponse\x12Z\n" + - "\x0fNotifyVmStarted\x12\".billing.v1.NotifyVmStartedRequest\x1a#.billing.v1.NotifyVmStartedResponse\x12Z\n" + - "\x0fNotifyVmStopped\x12\".billing.v1.NotifyVmStoppedRequest\x1a#.billing.v1.NotifyVmStoppedResponse\x12`\n" + - "\x11NotifyPossibleGap\x12$.billing.v1.NotifyPossibleGapRequest\x1a%.billing.v1.NotifyPossibleGapResponseBFZDgithub.com/unkeyed/unkey/go/deploy/billaged/gen/billing/v1;billingv1b\x06proto3" - -var ( - file_deploy_billaged_proto_billing_v1_billing_proto_rawDescOnce sync.Once - file_deploy_billaged_proto_billing_v1_billing_proto_rawDescData []byte -) - -func file_deploy_billaged_proto_billing_v1_billing_proto_rawDescGZIP() []byte { - file_deploy_billaged_proto_billing_v1_billing_proto_rawDescOnce.Do(func() { - file_deploy_billaged_proto_billing_v1_billing_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_deploy_billaged_proto_billing_v1_billing_proto_rawDesc), len(file_deploy_billaged_proto_billing_v1_billing_proto_rawDesc))) - }) - return file_deploy_billaged_proto_billing_v1_billing_proto_rawDescData -} - -var file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes = make([]protoimpl.MessageInfo, 11) -var file_deploy_billaged_proto_billing_v1_billing_proto_goTypes = []any{ - (*VMMetrics)(nil), // 0: billing.v1.VMMetrics - (*SendMetricsBatchRequest)(nil), // 1: billing.v1.SendMetricsBatchRequest - (*SendMetricsBatchResponse)(nil), // 2: billing.v1.SendMetricsBatchResponse - (*SendHeartbeatRequest)(nil), // 3: billing.v1.SendHeartbeatRequest - (*SendHeartbeatResponse)(nil), // 4: billing.v1.SendHeartbeatResponse - (*NotifyVmStartedRequest)(nil), // 5: billing.v1.NotifyVmStartedRequest - (*NotifyVmStartedResponse)(nil), // 6: billing.v1.NotifyVmStartedResponse - (*NotifyVmStoppedRequest)(nil), // 7: billing.v1.NotifyVmStoppedRequest - (*NotifyVmStoppedResponse)(nil), // 8: billing.v1.NotifyVmStoppedResponse - (*NotifyPossibleGapRequest)(nil), // 9: billing.v1.NotifyPossibleGapRequest - (*NotifyPossibleGapResponse)(nil), // 10: billing.v1.NotifyPossibleGapResponse - (*timestamppb.Timestamp)(nil), // 11: google.protobuf.Timestamp -} -var file_deploy_billaged_proto_billing_v1_billing_proto_depIdxs = []int32{ - 11, // 0: billing.v1.VMMetrics.timestamp:type_name -> google.protobuf.Timestamp - 0, // 1: billing.v1.SendMetricsBatchRequest.metrics:type_name -> billing.v1.VMMetrics - 1, // 2: billing.v1.BillingService.SendMetricsBatch:input_type -> billing.v1.SendMetricsBatchRequest - 3, // 3: billing.v1.BillingService.SendHeartbeat:input_type -> billing.v1.SendHeartbeatRequest - 5, // 4: billing.v1.BillingService.NotifyVmStarted:input_type -> billing.v1.NotifyVmStartedRequest - 7, // 5: billing.v1.BillingService.NotifyVmStopped:input_type -> billing.v1.NotifyVmStoppedRequest - 9, // 6: billing.v1.BillingService.NotifyPossibleGap:input_type -> billing.v1.NotifyPossibleGapRequest - 2, // 7: billing.v1.BillingService.SendMetricsBatch:output_type -> billing.v1.SendMetricsBatchResponse - 4, // 8: billing.v1.BillingService.SendHeartbeat:output_type -> billing.v1.SendHeartbeatResponse - 6, // 9: billing.v1.BillingService.NotifyVmStarted:output_type -> billing.v1.NotifyVmStartedResponse - 8, // 10: billing.v1.BillingService.NotifyVmStopped:output_type -> billing.v1.NotifyVmStoppedResponse - 10, // 11: billing.v1.BillingService.NotifyPossibleGap:output_type -> billing.v1.NotifyPossibleGapResponse - 7, // [7:12] is the sub-list for method output_type - 2, // [2:7] 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_deploy_billaged_proto_billing_v1_billing_proto_init() } -func file_deploy_billaged_proto_billing_v1_billing_proto_init() { - if File_deploy_billaged_proto_billing_v1_billing_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_deploy_billaged_proto_billing_v1_billing_proto_rawDesc), len(file_deploy_billaged_proto_billing_v1_billing_proto_rawDesc)), - NumEnums: 0, - NumMessages: 11, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_deploy_billaged_proto_billing_v1_billing_proto_goTypes, - DependencyIndexes: file_deploy_billaged_proto_billing_v1_billing_proto_depIdxs, - MessageInfos: file_deploy_billaged_proto_billing_v1_billing_proto_msgTypes, - }.Build() - File_deploy_billaged_proto_billing_v1_billing_proto = out.File - file_deploy_billaged_proto_billing_v1_billing_proto_goTypes = nil - file_deploy_billaged_proto_billing_v1_billing_proto_depIdxs = nil -} diff --git a/go/gen/deploy/billaged/proto/billing/v1/billingv1connect/billing.connect.go b/go/gen/deploy/billaged/proto/billing/v1/billingv1connect/billing.connect.go deleted file mode 100644 index 7c44ea0558..0000000000 --- a/go/gen/deploy/billaged/proto/billing/v1/billingv1connect/billing.connect.go +++ /dev/null @@ -1,233 +0,0 @@ -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: deploy/billaged/proto/billing/v1/billing.proto - -package billingv1connect - -import ( - connect "connectrpc.com/connect" - context "context" - errors "errors" - v1 "github.com/unkeyed/unkey/go/deploy/billaged/gen/billing/v1" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect.IsAtLeastVersion1_13_0 - -const ( - // BillingServiceName is the fully-qualified name of the BillingService service. - BillingServiceName = "billing.v1.BillingService" -) - -// These constants are the fully-qualified names of the RPCs defined in this package. They're -// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. -// -// Note that these are different from the fully-qualified method names used by -// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to -// reflection-formatted method names, remove the leading slash and convert the remaining slash to a -// period. -const ( - // BillingServiceSendMetricsBatchProcedure is the fully-qualified name of the BillingService's - // SendMetricsBatch RPC. - BillingServiceSendMetricsBatchProcedure = "/billing.v1.BillingService/SendMetricsBatch" - // BillingServiceSendHeartbeatProcedure is the fully-qualified name of the BillingService's - // SendHeartbeat RPC. - BillingServiceSendHeartbeatProcedure = "/billing.v1.BillingService/SendHeartbeat" - // BillingServiceNotifyVmStartedProcedure is the fully-qualified name of the BillingService's - // NotifyVmStarted RPC. - BillingServiceNotifyVmStartedProcedure = "/billing.v1.BillingService/NotifyVmStarted" - // BillingServiceNotifyVmStoppedProcedure is the fully-qualified name of the BillingService's - // NotifyVmStopped RPC. - BillingServiceNotifyVmStoppedProcedure = "/billing.v1.BillingService/NotifyVmStopped" - // BillingServiceNotifyPossibleGapProcedure is the fully-qualified name of the BillingService's - // NotifyPossibleGap RPC. - BillingServiceNotifyPossibleGapProcedure = "/billing.v1.BillingService/NotifyPossibleGap" -) - -// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. -var ( - billingServiceServiceDescriptor = v1.File_deploy_billaged_proto_billing_v1_billing_proto.Services().ByName("BillingService") - billingServiceSendMetricsBatchMethodDescriptor = billingServiceServiceDescriptor.Methods().ByName("SendMetricsBatch") - billingServiceSendHeartbeatMethodDescriptor = billingServiceServiceDescriptor.Methods().ByName("SendHeartbeat") - billingServiceNotifyVmStartedMethodDescriptor = billingServiceServiceDescriptor.Methods().ByName("NotifyVmStarted") - billingServiceNotifyVmStoppedMethodDescriptor = billingServiceServiceDescriptor.Methods().ByName("NotifyVmStopped") - billingServiceNotifyPossibleGapMethodDescriptor = billingServiceServiceDescriptor.Methods().ByName("NotifyPossibleGap") -) - -// BillingServiceClient is a client for the billing.v1.BillingService service. -type BillingServiceClient interface { - SendMetricsBatch(context.Context, *connect.Request[v1.SendMetricsBatchRequest]) (*connect.Response[v1.SendMetricsBatchResponse], error) - SendHeartbeat(context.Context, *connect.Request[v1.SendHeartbeatRequest]) (*connect.Response[v1.SendHeartbeatResponse], error) - NotifyVmStarted(context.Context, *connect.Request[v1.NotifyVmStartedRequest]) (*connect.Response[v1.NotifyVmStartedResponse], error) - NotifyVmStopped(context.Context, *connect.Request[v1.NotifyVmStoppedRequest]) (*connect.Response[v1.NotifyVmStoppedResponse], error) - NotifyPossibleGap(context.Context, *connect.Request[v1.NotifyPossibleGapRequest]) (*connect.Response[v1.NotifyPossibleGapResponse], error) -} - -// NewBillingServiceClient constructs a client for the billing.v1.BillingService service. By -// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, -// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the -// connect.WithGRPC() or connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewBillingServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) BillingServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - return &billingServiceClient{ - sendMetricsBatch: connect.NewClient[v1.SendMetricsBatchRequest, v1.SendMetricsBatchResponse]( - httpClient, - baseURL+BillingServiceSendMetricsBatchProcedure, - connect.WithSchema(billingServiceSendMetricsBatchMethodDescriptor), - connect.WithClientOptions(opts...), - ), - sendHeartbeat: connect.NewClient[v1.SendHeartbeatRequest, v1.SendHeartbeatResponse]( - httpClient, - baseURL+BillingServiceSendHeartbeatProcedure, - connect.WithSchema(billingServiceSendHeartbeatMethodDescriptor), - connect.WithClientOptions(opts...), - ), - notifyVmStarted: connect.NewClient[v1.NotifyVmStartedRequest, v1.NotifyVmStartedResponse]( - httpClient, - baseURL+BillingServiceNotifyVmStartedProcedure, - connect.WithSchema(billingServiceNotifyVmStartedMethodDescriptor), - connect.WithClientOptions(opts...), - ), - notifyVmStopped: connect.NewClient[v1.NotifyVmStoppedRequest, v1.NotifyVmStoppedResponse]( - httpClient, - baseURL+BillingServiceNotifyVmStoppedProcedure, - connect.WithSchema(billingServiceNotifyVmStoppedMethodDescriptor), - connect.WithClientOptions(opts...), - ), - notifyPossibleGap: connect.NewClient[v1.NotifyPossibleGapRequest, v1.NotifyPossibleGapResponse]( - httpClient, - baseURL+BillingServiceNotifyPossibleGapProcedure, - connect.WithSchema(billingServiceNotifyPossibleGapMethodDescriptor), - connect.WithClientOptions(opts...), - ), - } -} - -// billingServiceClient implements BillingServiceClient. -type billingServiceClient struct { - sendMetricsBatch *connect.Client[v1.SendMetricsBatchRequest, v1.SendMetricsBatchResponse] - sendHeartbeat *connect.Client[v1.SendHeartbeatRequest, v1.SendHeartbeatResponse] - notifyVmStarted *connect.Client[v1.NotifyVmStartedRequest, v1.NotifyVmStartedResponse] - notifyVmStopped *connect.Client[v1.NotifyVmStoppedRequest, v1.NotifyVmStoppedResponse] - notifyPossibleGap *connect.Client[v1.NotifyPossibleGapRequest, v1.NotifyPossibleGapResponse] -} - -// SendMetricsBatch calls billing.v1.BillingService.SendMetricsBatch. -func (c *billingServiceClient) SendMetricsBatch(ctx context.Context, req *connect.Request[v1.SendMetricsBatchRequest]) (*connect.Response[v1.SendMetricsBatchResponse], error) { - return c.sendMetricsBatch.CallUnary(ctx, req) -} - -// SendHeartbeat calls billing.v1.BillingService.SendHeartbeat. -func (c *billingServiceClient) SendHeartbeat(ctx context.Context, req *connect.Request[v1.SendHeartbeatRequest]) (*connect.Response[v1.SendHeartbeatResponse], error) { - return c.sendHeartbeat.CallUnary(ctx, req) -} - -// NotifyVmStarted calls billing.v1.BillingService.NotifyVmStarted. -func (c *billingServiceClient) NotifyVmStarted(ctx context.Context, req *connect.Request[v1.NotifyVmStartedRequest]) (*connect.Response[v1.NotifyVmStartedResponse], error) { - return c.notifyVmStarted.CallUnary(ctx, req) -} - -// NotifyVmStopped calls billing.v1.BillingService.NotifyVmStopped. -func (c *billingServiceClient) NotifyVmStopped(ctx context.Context, req *connect.Request[v1.NotifyVmStoppedRequest]) (*connect.Response[v1.NotifyVmStoppedResponse], error) { - return c.notifyVmStopped.CallUnary(ctx, req) -} - -// NotifyPossibleGap calls billing.v1.BillingService.NotifyPossibleGap. -func (c *billingServiceClient) NotifyPossibleGap(ctx context.Context, req *connect.Request[v1.NotifyPossibleGapRequest]) (*connect.Response[v1.NotifyPossibleGapResponse], error) { - return c.notifyPossibleGap.CallUnary(ctx, req) -} - -// BillingServiceHandler is an implementation of the billing.v1.BillingService service. -type BillingServiceHandler interface { - SendMetricsBatch(context.Context, *connect.Request[v1.SendMetricsBatchRequest]) (*connect.Response[v1.SendMetricsBatchResponse], error) - SendHeartbeat(context.Context, *connect.Request[v1.SendHeartbeatRequest]) (*connect.Response[v1.SendHeartbeatResponse], error) - NotifyVmStarted(context.Context, *connect.Request[v1.NotifyVmStartedRequest]) (*connect.Response[v1.NotifyVmStartedResponse], error) - NotifyVmStopped(context.Context, *connect.Request[v1.NotifyVmStoppedRequest]) (*connect.Response[v1.NotifyVmStoppedResponse], error) - NotifyPossibleGap(context.Context, *connect.Request[v1.NotifyPossibleGapRequest]) (*connect.Response[v1.NotifyPossibleGapResponse], error) -} - -// NewBillingServiceHandler builds an HTTP handler from the service implementation. It returns the -// path on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewBillingServiceHandler(svc BillingServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - billingServiceSendMetricsBatchHandler := connect.NewUnaryHandler( - BillingServiceSendMetricsBatchProcedure, - svc.SendMetricsBatch, - connect.WithSchema(billingServiceSendMetricsBatchMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - billingServiceSendHeartbeatHandler := connect.NewUnaryHandler( - BillingServiceSendHeartbeatProcedure, - svc.SendHeartbeat, - connect.WithSchema(billingServiceSendHeartbeatMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - billingServiceNotifyVmStartedHandler := connect.NewUnaryHandler( - BillingServiceNotifyVmStartedProcedure, - svc.NotifyVmStarted, - connect.WithSchema(billingServiceNotifyVmStartedMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - billingServiceNotifyVmStoppedHandler := connect.NewUnaryHandler( - BillingServiceNotifyVmStoppedProcedure, - svc.NotifyVmStopped, - connect.WithSchema(billingServiceNotifyVmStoppedMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - billingServiceNotifyPossibleGapHandler := connect.NewUnaryHandler( - BillingServiceNotifyPossibleGapProcedure, - svc.NotifyPossibleGap, - connect.WithSchema(billingServiceNotifyPossibleGapMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - return "/billing.v1.BillingService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch r.URL.Path { - case BillingServiceSendMetricsBatchProcedure: - billingServiceSendMetricsBatchHandler.ServeHTTP(w, r) - case BillingServiceSendHeartbeatProcedure: - billingServiceSendHeartbeatHandler.ServeHTTP(w, r) - case BillingServiceNotifyVmStartedProcedure: - billingServiceNotifyVmStartedHandler.ServeHTTP(w, r) - case BillingServiceNotifyVmStoppedProcedure: - billingServiceNotifyVmStoppedHandler.ServeHTTP(w, r) - case BillingServiceNotifyPossibleGapProcedure: - billingServiceNotifyPossibleGapHandler.ServeHTTP(w, r) - default: - http.NotFound(w, r) - } - }) -} - -// UnimplementedBillingServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedBillingServiceHandler struct{} - -func (UnimplementedBillingServiceHandler) SendMetricsBatch(context.Context, *connect.Request[v1.SendMetricsBatchRequest]) (*connect.Response[v1.SendMetricsBatchResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("billing.v1.BillingService.SendMetricsBatch is not implemented")) -} - -func (UnimplementedBillingServiceHandler) SendHeartbeat(context.Context, *connect.Request[v1.SendHeartbeatRequest]) (*connect.Response[v1.SendHeartbeatResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("billing.v1.BillingService.SendHeartbeat is not implemented")) -} - -func (UnimplementedBillingServiceHandler) NotifyVmStarted(context.Context, *connect.Request[v1.NotifyVmStartedRequest]) (*connect.Response[v1.NotifyVmStartedResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("billing.v1.BillingService.NotifyVmStarted is not implemented")) -} - -func (UnimplementedBillingServiceHandler) NotifyVmStopped(context.Context, *connect.Request[v1.NotifyVmStoppedRequest]) (*connect.Response[v1.NotifyVmStoppedResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("billing.v1.BillingService.NotifyVmStopped is not implemented")) -} - -func (UnimplementedBillingServiceHandler) NotifyPossibleGap(context.Context, *connect.Request[v1.NotifyPossibleGapRequest]) (*connect.Response[v1.NotifyPossibleGapResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("billing.v1.BillingService.NotifyPossibleGap is not implemented")) -} diff --git a/go/gen/deploy/builderd/proto/builder/v1/builder.pb.go b/go/gen/deploy/builderd/proto/builder/v1/builder.pb.go deleted file mode 100644 index 5ae066dedc..0000000000 --- a/go/gen/deploy/builderd/proto/builder/v1/builder.pb.go +++ /dev/null @@ -1,3829 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.6 -// protoc (unknown) -// source: deploy/builderd/proto/builder/v1/builder.proto - -package builderv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -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) -) - -// Build job lifecycle states -type BuildState int32 - -const ( - BuildState_BUILD_STATE_UNSPECIFIED BuildState = 0 - BuildState_BUILD_STATE_PENDING BuildState = 1 // Job queued - BuildState_BUILD_STATE_PULLING BuildState = 2 // Pulling Docker image or source - BuildState_BUILD_STATE_EXTRACTING BuildState = 3 // Extracting/preparing source - BuildState_BUILD_STATE_BUILDING BuildState = 4 // Building rootfs - BuildState_BUILD_STATE_OPTIMIZING BuildState = 5 // Applying optimizations - BuildState_BUILD_STATE_COMPLETED BuildState = 6 // Build successful - BuildState_BUILD_STATE_FAILED BuildState = 7 // Build failed - BuildState_BUILD_STATE_CANCELLED BuildState = 8 // Build cancelled - BuildState_BUILD_STATE_CLEANING BuildState = 9 // Cleaning up resources -) - -// Enum value maps for BuildState. -var ( - BuildState_name = map[int32]string{ - 0: "BUILD_STATE_UNSPECIFIED", - 1: "BUILD_STATE_PENDING", - 2: "BUILD_STATE_PULLING", - 3: "BUILD_STATE_EXTRACTING", - 4: "BUILD_STATE_BUILDING", - 5: "BUILD_STATE_OPTIMIZING", - 6: "BUILD_STATE_COMPLETED", - 7: "BUILD_STATE_FAILED", - 8: "BUILD_STATE_CANCELLED", - 9: "BUILD_STATE_CLEANING", - } - BuildState_value = map[string]int32{ - "BUILD_STATE_UNSPECIFIED": 0, - "BUILD_STATE_PENDING": 1, - "BUILD_STATE_PULLING": 2, - "BUILD_STATE_EXTRACTING": 3, - "BUILD_STATE_BUILDING": 4, - "BUILD_STATE_OPTIMIZING": 5, - "BUILD_STATE_COMPLETED": 6, - "BUILD_STATE_FAILED": 7, - "BUILD_STATE_CANCELLED": 8, - "BUILD_STATE_CLEANING": 9, - } -) - -func (x BuildState) Enum() *BuildState { - p := new(BuildState) - *p = x - return p -} - -func (x BuildState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (BuildState) Descriptor() protoreflect.EnumDescriptor { - return file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes[0].Descriptor() -} - -func (BuildState) Type() protoreflect.EnumType { - return &file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes[0] -} - -func (x BuildState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use BuildState.Descriptor instead. -func (BuildState) EnumDescriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{0} -} - -// Tenant service tiers -type TenantTier int32 - -const ( - TenantTier_TENANT_TIER_UNSPECIFIED TenantTier = 0 - TenantTier_TENANT_TIER_FREE TenantTier = 1 // Limited resources - TenantTier_TENANT_TIER_PRO TenantTier = 2 // Standard resources - TenantTier_TENANT_TIER_ENTERPRISE TenantTier = 3 // Higher limits + isolation - TenantTier_TENANT_TIER_DEDICATED TenantTier = 4 // Dedicated infrastructure -) - -// Enum value maps for TenantTier. -var ( - TenantTier_name = map[int32]string{ - 0: "TENANT_TIER_UNSPECIFIED", - 1: "TENANT_TIER_FREE", - 2: "TENANT_TIER_PRO", - 3: "TENANT_TIER_ENTERPRISE", - 4: "TENANT_TIER_DEDICATED", - } - TenantTier_value = map[string]int32{ - "TENANT_TIER_UNSPECIFIED": 0, - "TENANT_TIER_FREE": 1, - "TENANT_TIER_PRO": 2, - "TENANT_TIER_ENTERPRISE": 3, - "TENANT_TIER_DEDICATED": 4, - } -) - -func (x TenantTier) Enum() *TenantTier { - p := new(TenantTier) - *p = x - return p -} - -func (x TenantTier) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (TenantTier) Descriptor() protoreflect.EnumDescriptor { - return file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes[1].Descriptor() -} - -func (TenantTier) Type() protoreflect.EnumType { - return &file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes[1] -} - -func (x TenantTier) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use TenantTier.Descriptor instead. -func (TenantTier) EnumDescriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{1} -} - -// Init process strategies for microVMs -type InitStrategy int32 - -const ( - InitStrategy_INIT_STRATEGY_UNSPECIFIED InitStrategy = 0 - InitStrategy_INIT_STRATEGY_TINI InitStrategy = 1 // Use tini as init (recommended) - InitStrategy_INIT_STRATEGY_DIRECT InitStrategy = 2 // Direct exec (risky) - InitStrategy_INIT_STRATEGY_CUSTOM InitStrategy = 3 // Custom init script -) - -// Enum value maps for InitStrategy. -var ( - InitStrategy_name = map[int32]string{ - 0: "INIT_STRATEGY_UNSPECIFIED", - 1: "INIT_STRATEGY_TINI", - 2: "INIT_STRATEGY_DIRECT", - 3: "INIT_STRATEGY_CUSTOM", - } - InitStrategy_value = map[string]int32{ - "INIT_STRATEGY_UNSPECIFIED": 0, - "INIT_STRATEGY_TINI": 1, - "INIT_STRATEGY_DIRECT": 2, - "INIT_STRATEGY_CUSTOM": 3, - } -) - -func (x InitStrategy) Enum() *InitStrategy { - p := new(InitStrategy) - *p = x - return p -} - -func (x InitStrategy) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (InitStrategy) Descriptor() protoreflect.EnumDescriptor { - return file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes[2].Descriptor() -} - -func (InitStrategy) Type() protoreflect.EnumType { - return &file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes[2] -} - -func (x InitStrategy) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use InitStrategy.Descriptor instead. -func (InitStrategy) EnumDescriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{2} -} - -// Multi-tenant context -type TenantContext struct { - state protoimpl.MessageState `protogen:"open.v1"` - TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // Primary tenant identifier - CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` // Customer within tenant (for billing) - OrganizationId string `protobuf:"bytes,3,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` // Organization (for enterprise) - Tier TenantTier `protobuf:"varint,4,opt,name=tier,proto3,enum=builder.v1.TenantTier" json:"tier,omitempty"` // Service tier - Permissions []string `protobuf:"bytes,5,rep,name=permissions,proto3" json:"permissions,omitempty"` // Build permissions - Metadata map[string]string `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Tenant metadata - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TenantContext) Reset() { - *x = TenantContext{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TenantContext) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TenantContext) ProtoMessage() {} - -func (x *TenantContext) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TenantContext.ProtoReflect.Descriptor instead. -func (*TenantContext) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{0} -} - -func (x *TenantContext) GetTenantId() string { - if x != nil { - return x.TenantId - } - return "" -} - -func (x *TenantContext) GetCustomerId() string { - if x != nil { - return x.CustomerId - } - return "" -} - -func (x *TenantContext) GetOrganizationId() string { - if x != nil { - return x.OrganizationId - } - return "" -} - -func (x *TenantContext) GetTier() TenantTier { - if x != nil { - return x.Tier - } - return TenantTier_TENANT_TIER_UNSPECIFIED -} - -func (x *TenantContext) GetPermissions() []string { - if x != nil { - return x.Permissions - } - return nil -} - -func (x *TenantContext) GetMetadata() map[string]string { - if x != nil { - return x.Metadata - } - return nil -} - -// Build source types - extensible for future build types -type BuildSource struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to SourceType: - // - // *BuildSource_DockerImage - // *BuildSource_GitRepository - // *BuildSource_Archive - SourceType isBuildSource_SourceType `protobuf_oneof:"source_type"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BuildSource) Reset() { - *x = BuildSource{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BuildSource) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BuildSource) ProtoMessage() {} - -func (x *BuildSource) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BuildSource.ProtoReflect.Descriptor instead. -func (*BuildSource) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{1} -} - -func (x *BuildSource) GetSourceType() isBuildSource_SourceType { - if x != nil { - return x.SourceType - } - return nil -} - -func (x *BuildSource) GetDockerImage() *DockerImageSource { - if x != nil { - if x, ok := x.SourceType.(*BuildSource_DockerImage); ok { - return x.DockerImage - } - } - return nil -} - -func (x *BuildSource) GetGitRepository() *GitRepositorySource { - if x != nil { - if x, ok := x.SourceType.(*BuildSource_GitRepository); ok { - return x.GitRepository - } - } - return nil -} - -func (x *BuildSource) GetArchive() *ArchiveSource { - if x != nil { - if x, ok := x.SourceType.(*BuildSource_Archive); ok { - return x.Archive - } - } - return nil -} - -type isBuildSource_SourceType interface { - isBuildSource_SourceType() -} - -type BuildSource_DockerImage struct { - DockerImage *DockerImageSource `protobuf:"bytes,1,opt,name=docker_image,json=dockerImage,proto3,oneof"` -} - -type BuildSource_GitRepository struct { - GitRepository *GitRepositorySource `protobuf:"bytes,2,opt,name=git_repository,json=gitRepository,proto3,oneof"` -} - -type BuildSource_Archive struct { - Archive *ArchiveSource `protobuf:"bytes,3,opt,name=archive,proto3,oneof"` // Future: nix_flake = 4, buildpack = 5, etc. -} - -func (*BuildSource_DockerImage) isBuildSource_SourceType() {} - -func (*BuildSource_GitRepository) isBuildSource_SourceType() {} - -func (*BuildSource_Archive) isBuildSource_SourceType() {} - -// Docker image extraction (first implementation) -type DockerImageSource struct { - state protoimpl.MessageState `protogen:"open.v1"` - ImageUri string `protobuf:"bytes,1,opt,name=image_uri,json=imageUri,proto3" json:"image_uri,omitempty"` // "ghcr.io/unkeyed/unkey:f4cfee5" - Auth *DockerAuth `protobuf:"bytes,2,opt,name=auth,proto3" json:"auth,omitempty"` // Registry authentication - PullTags []string `protobuf:"bytes,3,rep,name=pull_tags,json=pullTags,proto3" json:"pull_tags,omitempty"` // Additional tags to consider - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DockerImageSource) Reset() { - *x = DockerImageSource{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DockerImageSource) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DockerImageSource) ProtoMessage() {} - -func (x *DockerImageSource) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DockerImageSource.ProtoReflect.Descriptor instead. -func (*DockerImageSource) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{2} -} - -func (x *DockerImageSource) GetImageUri() string { - if x != nil { - return x.ImageUri - } - return "" -} - -func (x *DockerImageSource) GetAuth() *DockerAuth { - if x != nil { - return x.Auth - } - return nil -} - -func (x *DockerImageSource) GetPullTags() []string { - if x != nil { - return x.PullTags - } - return nil -} - -type DockerAuth struct { - state protoimpl.MessageState `protogen:"open.v1"` - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` - Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` - Registry string `protobuf:"bytes,4,opt,name=registry,proto3" json:"registry,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DockerAuth) Reset() { - *x = DockerAuth{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DockerAuth) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DockerAuth) ProtoMessage() {} - -func (x *DockerAuth) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DockerAuth.ProtoReflect.Descriptor instead. -func (*DockerAuth) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{3} -} - -func (x *DockerAuth) GetUsername() string { - if x != nil { - return x.Username - } - return "" -} - -func (x *DockerAuth) GetPassword() string { - if x != nil { - return x.Password - } - return "" -} - -func (x *DockerAuth) GetToken() string { - if x != nil { - return x.Token - } - return "" -} - -func (x *DockerAuth) GetRegistry() string { - if x != nil { - return x.Registry - } - return "" -} - -// Git repository builds (future) -type GitRepositorySource struct { - state protoimpl.MessageState `protogen:"open.v1"` - RepositoryUrl string `protobuf:"bytes,1,opt,name=repository_url,json=repositoryUrl,proto3" json:"repository_url,omitempty"` // "https://github.com/unkeyed/unkey" - Ref string `protobuf:"bytes,2,opt,name=ref,proto3" json:"ref,omitempty"` // branch/tag/commit - BuildContext string `protobuf:"bytes,3,opt,name=build_context,json=buildContext,proto3" json:"build_context,omitempty"` // subdirectory if needed - Auth *GitAuth `protobuf:"bytes,4,opt,name=auth,proto3" json:"auth,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GitRepositorySource) Reset() { - *x = GitRepositorySource{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GitRepositorySource) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GitRepositorySource) ProtoMessage() {} - -func (x *GitRepositorySource) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GitRepositorySource.ProtoReflect.Descriptor instead. -func (*GitRepositorySource) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{4} -} - -func (x *GitRepositorySource) GetRepositoryUrl() string { - if x != nil { - return x.RepositoryUrl - } - return "" -} - -func (x *GitRepositorySource) GetRef() string { - if x != nil { - return x.Ref - } - return "" -} - -func (x *GitRepositorySource) GetBuildContext() string { - if x != nil { - return x.BuildContext - } - return "" -} - -func (x *GitRepositorySource) GetAuth() *GitAuth { - if x != nil { - return x.Auth - } - return nil -} - -type GitAuth struct { - state protoimpl.MessageState `protogen:"open.v1"` - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` - SshKey string `protobuf:"bytes,3,opt,name=ssh_key,json=sshKey,proto3" json:"ssh_key,omitempty"` - Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GitAuth) Reset() { - *x = GitAuth{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GitAuth) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GitAuth) ProtoMessage() {} - -func (x *GitAuth) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GitAuth.ProtoReflect.Descriptor instead. -func (*GitAuth) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{5} -} - -func (x *GitAuth) GetUsername() string { - if x != nil { - return x.Username - } - return "" -} - -func (x *GitAuth) GetPassword() string { - if x != nil { - return x.Password - } - return "" -} - -func (x *GitAuth) GetSshKey() string { - if x != nil { - return x.SshKey - } - return "" -} - -func (x *GitAuth) GetToken() string { - if x != nil { - return x.Token - } - return "" -} - -// Archive builds (future) -type ArchiveSource struct { - state protoimpl.MessageState `protogen:"open.v1"` - ArchiveUrl string `protobuf:"bytes,1,opt,name=archive_url,json=archiveUrl,proto3" json:"archive_url,omitempty"` // URL to tar.gz, zip, etc. - ArchiveType string `protobuf:"bytes,2,opt,name=archive_type,json=archiveType,proto3" json:"archive_type,omitempty"` // "tar.gz", "zip" - BuildContext string `protobuf:"bytes,3,opt,name=build_context,json=buildContext,proto3" json:"build_context,omitempty"` // subdirectory in archive - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ArchiveSource) Reset() { - *x = ArchiveSource{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ArchiveSource) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ArchiveSource) ProtoMessage() {} - -func (x *ArchiveSource) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ArchiveSource.ProtoReflect.Descriptor instead. -func (*ArchiveSource) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{6} -} - -func (x *ArchiveSource) GetArchiveUrl() string { - if x != nil { - return x.ArchiveUrl - } - return "" -} - -func (x *ArchiveSource) GetArchiveType() string { - if x != nil { - return x.ArchiveType - } - return "" -} - -func (x *ArchiveSource) GetBuildContext() string { - if x != nil { - return x.BuildContext - } - return "" -} - -// Build target types - extensible -type BuildTarget struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to TargetType: - // - // *BuildTarget_MicrovmRootfs - // *BuildTarget_ContainerImage - TargetType isBuildTarget_TargetType `protobuf_oneof:"target_type"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BuildTarget) Reset() { - *x = BuildTarget{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BuildTarget) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BuildTarget) ProtoMessage() {} - -func (x *BuildTarget) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BuildTarget.ProtoReflect.Descriptor instead. -func (*BuildTarget) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{7} -} - -func (x *BuildTarget) GetTargetType() isBuildTarget_TargetType { - if x != nil { - return x.TargetType - } - return nil -} - -func (x *BuildTarget) GetMicrovmRootfs() *MicroVMRootfs { - if x != nil { - if x, ok := x.TargetType.(*BuildTarget_MicrovmRootfs); ok { - return x.MicrovmRootfs - } - } - return nil -} - -func (x *BuildTarget) GetContainerImage() *ContainerImage { - if x != nil { - if x, ok := x.TargetType.(*BuildTarget_ContainerImage); ok { - return x.ContainerImage - } - } - return nil -} - -type isBuildTarget_TargetType interface { - isBuildTarget_TargetType() -} - -type BuildTarget_MicrovmRootfs struct { - MicrovmRootfs *MicroVMRootfs `protobuf:"bytes,1,opt,name=microvm_rootfs,json=microvmRootfs,proto3,oneof"` -} - -type BuildTarget_ContainerImage struct { - ContainerImage *ContainerImage `protobuf:"bytes,2,opt,name=container_image,json=containerImage,proto3,oneof"` // Future: wasm_module = 3, lambda_layer = 4, etc. -} - -func (*BuildTarget_MicrovmRootfs) isBuildTarget_TargetType() {} - -func (*BuildTarget_ContainerImage) isBuildTarget_TargetType() {} - -// MicroVM rootfs (our focus) -type MicroVMRootfs struct { - state protoimpl.MessageState `protogen:"open.v1"` - InitStrategy InitStrategy `protobuf:"varint,1,opt,name=init_strategy,json=initStrategy,proto3,enum=builder.v1.InitStrategy" json:"init_strategy,omitempty"` - RuntimeConfig *RuntimeConfig `protobuf:"bytes,2,opt,name=runtime_config,json=runtimeConfig,proto3" json:"runtime_config,omitempty"` - Optimization *OptimizationSettings `protobuf:"bytes,3,opt,name=optimization,proto3" json:"optimization,omitempty"` - PreservePaths []string `protobuf:"bytes,4,rep,name=preserve_paths,json=preservePaths,proto3" json:"preserve_paths,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *MicroVMRootfs) Reset() { - *x = MicroVMRootfs{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MicroVMRootfs) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MicroVMRootfs) ProtoMessage() {} - -func (x *MicroVMRootfs) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MicroVMRootfs.ProtoReflect.Descriptor instead. -func (*MicroVMRootfs) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{8} -} - -func (x *MicroVMRootfs) GetInitStrategy() InitStrategy { - if x != nil { - return x.InitStrategy - } - return InitStrategy_INIT_STRATEGY_UNSPECIFIED -} - -func (x *MicroVMRootfs) GetRuntimeConfig() *RuntimeConfig { - if x != nil { - return x.RuntimeConfig - } - return nil -} - -func (x *MicroVMRootfs) GetOptimization() *OptimizationSettings { - if x != nil { - return x.Optimization - } - return nil -} - -func (x *MicroVMRootfs) GetPreservePaths() []string { - if x != nil { - return x.PreservePaths - } - return nil -} - -// Container image (future) -type ContainerImage struct { - state protoimpl.MessageState `protogen:"open.v1"` - BaseImage string `protobuf:"bytes,1,opt,name=base_image,json=baseImage,proto3" json:"base_image,omitempty"` - Layers []string `protobuf:"bytes,2,rep,name=layers,proto3" json:"layers,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ContainerImage) Reset() { - *x = ContainerImage{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ContainerImage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ContainerImage) ProtoMessage() {} - -func (x *ContainerImage) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ContainerImage.ProtoReflect.Descriptor instead. -func (*ContainerImage) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{9} -} - -func (x *ContainerImage) GetBaseImage() string { - if x != nil { - return x.BaseImage - } - return "" -} - -func (x *ContainerImage) GetLayers() []string { - if x != nil { - return x.Layers - } - return nil -} - -type RuntimeConfig struct { - state protoimpl.MessageState `protogen:"open.v1"` - Command []string `protobuf:"bytes,1,rep,name=command,proto3" json:"command,omitempty"` // Override CMD - Entrypoint []string `protobuf:"bytes,2,rep,name=entrypoint,proto3" json:"entrypoint,omitempty"` // Override ENTRYPOINT - WorkingDir string `protobuf:"bytes,3,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` // Override WORKDIR - Environment map[string]string `protobuf:"bytes,4,rep,name=environment,proto3" json:"environment,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Environment variables - ExposedPorts []string `protobuf:"bytes,5,rep,name=exposed_ports,json=exposedPorts,proto3" json:"exposed_ports,omitempty"` // Ports to expose - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RuntimeConfig) Reset() { - *x = RuntimeConfig{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RuntimeConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RuntimeConfig) ProtoMessage() {} - -func (x *RuntimeConfig) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RuntimeConfig.ProtoReflect.Descriptor instead. -func (*RuntimeConfig) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{10} -} - -func (x *RuntimeConfig) GetCommand() []string { - if x != nil { - return x.Command - } - return nil -} - -func (x *RuntimeConfig) GetEntrypoint() []string { - if x != nil { - return x.Entrypoint - } - return nil -} - -func (x *RuntimeConfig) GetWorkingDir() string { - if x != nil { - return x.WorkingDir - } - return "" -} - -func (x *RuntimeConfig) GetEnvironment() map[string]string { - if x != nil { - return x.Environment - } - return nil -} - -func (x *RuntimeConfig) GetExposedPorts() []string { - if x != nil { - return x.ExposedPorts - } - return nil -} - -type OptimizationSettings struct { - state protoimpl.MessageState `protogen:"open.v1"` - StripDebugSymbols bool `protobuf:"varint,1,opt,name=strip_debug_symbols,json=stripDebugSymbols,proto3" json:"strip_debug_symbols,omitempty"` // Strip debug info - CompressBinaries bool `protobuf:"varint,2,opt,name=compress_binaries,json=compressBinaries,proto3" json:"compress_binaries,omitempty"` // Compress with UPX - RemoveDocs bool `protobuf:"varint,3,opt,name=remove_docs,json=removeDocs,proto3" json:"remove_docs,omitempty"` // Remove documentation - RemoveCache bool `protobuf:"varint,4,opt,name=remove_cache,json=removeCache,proto3" json:"remove_cache,omitempty"` // Remove package caches - PreservePaths []string `protobuf:"bytes,5,rep,name=preserve_paths,json=preservePaths,proto3" json:"preserve_paths,omitempty"` // Paths to always keep - ExcludePatterns []string `protobuf:"bytes,6,rep,name=exclude_patterns,json=excludePatterns,proto3" json:"exclude_patterns,omitempty"` // Files to exclude - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *OptimizationSettings) Reset() { - *x = OptimizationSettings{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *OptimizationSettings) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OptimizationSettings) ProtoMessage() {} - -func (x *OptimizationSettings) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OptimizationSettings.ProtoReflect.Descriptor instead. -func (*OptimizationSettings) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{11} -} - -func (x *OptimizationSettings) GetStripDebugSymbols() bool { - if x != nil { - return x.StripDebugSymbols - } - return false -} - -func (x *OptimizationSettings) GetCompressBinaries() bool { - if x != nil { - return x.CompressBinaries - } - return false -} - -func (x *OptimizationSettings) GetRemoveDocs() bool { - if x != nil { - return x.RemoveDocs - } - return false -} - -func (x *OptimizationSettings) GetRemoveCache() bool { - if x != nil { - return x.RemoveCache - } - return false -} - -func (x *OptimizationSettings) GetPreservePaths() []string { - if x != nil { - return x.PreservePaths - } - return nil -} - -func (x *OptimizationSettings) GetExcludePatterns() []string { - if x != nil { - return x.ExcludePatterns - } - return nil -} - -// Build strategies - how to build from source to target -type BuildStrategy struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to StrategyType: - // - // *BuildStrategy_DockerExtract - // *BuildStrategy_GoApi - // *BuildStrategy_Sinatra - // *BuildStrategy_Nodejs - StrategyType isBuildStrategy_StrategyType `protobuf_oneof:"strategy_type"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BuildStrategy) Reset() { - *x = BuildStrategy{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BuildStrategy) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BuildStrategy) ProtoMessage() {} - -func (x *BuildStrategy) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BuildStrategy.ProtoReflect.Descriptor instead. -func (*BuildStrategy) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{12} -} - -func (x *BuildStrategy) GetStrategyType() isBuildStrategy_StrategyType { - if x != nil { - return x.StrategyType - } - return nil -} - -func (x *BuildStrategy) GetDockerExtract() *DockerExtractStrategy { - if x != nil { - if x, ok := x.StrategyType.(*BuildStrategy_DockerExtract); ok { - return x.DockerExtract - } - } - return nil -} - -func (x *BuildStrategy) GetGoApi() *GoApiStrategy { - if x != nil { - if x, ok := x.StrategyType.(*BuildStrategy_GoApi); ok { - return x.GoApi - } - } - return nil -} - -func (x *BuildStrategy) GetSinatra() *SinatraStrategy { - if x != nil { - if x, ok := x.StrategyType.(*BuildStrategy_Sinatra); ok { - return x.Sinatra - } - } - return nil -} - -func (x *BuildStrategy) GetNodejs() *NodejsStrategy { - if x != nil { - if x, ok := x.StrategyType.(*BuildStrategy_Nodejs); ok { - return x.Nodejs - } - } - return nil -} - -type isBuildStrategy_StrategyType interface { - isBuildStrategy_StrategyType() -} - -type BuildStrategy_DockerExtract struct { - DockerExtract *DockerExtractStrategy `protobuf:"bytes,1,opt,name=docker_extract,json=dockerExtract,proto3,oneof"` -} - -type BuildStrategy_GoApi struct { - GoApi *GoApiStrategy `protobuf:"bytes,2,opt,name=go_api,json=goApi,proto3,oneof"` -} - -type BuildStrategy_Sinatra struct { - Sinatra *SinatraStrategy `protobuf:"bytes,3,opt,name=sinatra,proto3,oneof"` -} - -type BuildStrategy_Nodejs struct { - Nodejs *NodejsStrategy `protobuf:"bytes,4,opt,name=nodejs,proto3,oneof"` // Future: python_wsgi = 5, rust_binary = 6, etc. -} - -func (*BuildStrategy_DockerExtract) isBuildStrategy_StrategyType() {} - -func (*BuildStrategy_GoApi) isBuildStrategy_StrategyType() {} - -func (*BuildStrategy_Sinatra) isBuildStrategy_StrategyType() {} - -func (*BuildStrategy_Nodejs) isBuildStrategy_StrategyType() {} - -// Docker extraction strategy (first implementation) -type DockerExtractStrategy struct { - state protoimpl.MessageState `protogen:"open.v1"` - PreserveLayers bool `protobuf:"varint,1,opt,name=preserve_layers,json=preserveLayers,proto3" json:"preserve_layers,omitempty"` // Keep layer structure - FlattenFilesystem bool `protobuf:"varint,2,opt,name=flatten_filesystem,json=flattenFilesystem,proto3" json:"flatten_filesystem,omitempty"` // Merge all layers - ExcludePatterns []string `protobuf:"bytes,3,rep,name=exclude_patterns,json=excludePatterns,proto3" json:"exclude_patterns,omitempty"` // Files to exclude - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DockerExtractStrategy) Reset() { - *x = DockerExtractStrategy{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DockerExtractStrategy) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DockerExtractStrategy) ProtoMessage() {} - -func (x *DockerExtractStrategy) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DockerExtractStrategy.ProtoReflect.Descriptor instead. -func (*DockerExtractStrategy) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{13} -} - -func (x *DockerExtractStrategy) GetPreserveLayers() bool { - if x != nil { - return x.PreserveLayers - } - return false -} - -func (x *DockerExtractStrategy) GetFlattenFilesystem() bool { - if x != nil { - return x.FlattenFilesystem - } - return false -} - -func (x *DockerExtractStrategy) GetExcludePatterns() []string { - if x != nil { - return x.ExcludePatterns - } - return nil -} - -// Go API strategy (future) -type GoApiStrategy struct { - state protoimpl.MessageState `protogen:"open.v1"` - GoVersion string `protobuf:"bytes,1,opt,name=go_version,json=goVersion,proto3" json:"go_version,omitempty"` // "1.21", "latest" - BuildFlags []string `protobuf:"bytes,2,rep,name=build_flags,json=buildFlags,proto3" json:"build_flags,omitempty"` // "-ldflags", "-tags" - MainPackage string `protobuf:"bytes,3,opt,name=main_package,json=mainPackage,proto3" json:"main_package,omitempty"` // "./cmd/api" - EnableCgo bool `protobuf:"varint,4,opt,name=enable_cgo,json=enableCgo,proto3" json:"enable_cgo,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GoApiStrategy) Reset() { - *x = GoApiStrategy{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GoApiStrategy) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GoApiStrategy) ProtoMessage() {} - -func (x *GoApiStrategy) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GoApiStrategy.ProtoReflect.Descriptor instead. -func (*GoApiStrategy) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{14} -} - -func (x *GoApiStrategy) GetGoVersion() string { - if x != nil { - return x.GoVersion - } - return "" -} - -func (x *GoApiStrategy) GetBuildFlags() []string { - if x != nil { - return x.BuildFlags - } - return nil -} - -func (x *GoApiStrategy) GetMainPackage() string { - if x != nil { - return x.MainPackage - } - return "" -} - -func (x *GoApiStrategy) GetEnableCgo() bool { - if x != nil { - return x.EnableCgo - } - return false -} - -// Sinatra strategy (future) -type SinatraStrategy struct { - state protoimpl.MessageState `protogen:"open.v1"` - RubyVersion string `protobuf:"bytes,1,opt,name=ruby_version,json=rubyVersion,proto3" json:"ruby_version,omitempty"` // "3.2", "latest" - GemfilePath string `protobuf:"bytes,2,opt,name=gemfile_path,json=gemfilePath,proto3" json:"gemfile_path,omitempty"` // "Gemfile" - RackServer string `protobuf:"bytes,3,opt,name=rack_server,json=rackServer,proto3" json:"rack_server,omitempty"` // "puma", "unicorn" - RackConfig map[string]string `protobuf:"bytes,4,rep,name=rack_config,json=rackConfig,proto3" json:"rack_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Server-specific config - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SinatraStrategy) Reset() { - *x = SinatraStrategy{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SinatraStrategy) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SinatraStrategy) ProtoMessage() {} - -func (x *SinatraStrategy) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[15] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SinatraStrategy.ProtoReflect.Descriptor instead. -func (*SinatraStrategy) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{15} -} - -func (x *SinatraStrategy) GetRubyVersion() string { - if x != nil { - return x.RubyVersion - } - return "" -} - -func (x *SinatraStrategy) GetGemfilePath() string { - if x != nil { - return x.GemfilePath - } - return "" -} - -func (x *SinatraStrategy) GetRackServer() string { - if x != nil { - return x.RackServer - } - return "" -} - -func (x *SinatraStrategy) GetRackConfig() map[string]string { - if x != nil { - return x.RackConfig - } - return nil -} - -// Node.js strategy (future) -type NodejsStrategy struct { - state protoimpl.MessageState `protogen:"open.v1"` - NodeVersion string `protobuf:"bytes,1,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` // "18", "20", "latest" - PackageManager string `protobuf:"bytes,2,opt,name=package_manager,json=packageManager,proto3" json:"package_manager,omitempty"` // "npm", "yarn", "pnpm" - StartScript string `protobuf:"bytes,3,opt,name=start_script,json=startScript,proto3" json:"start_script,omitempty"` // "start", "server" - EnableProduction bool `protobuf:"varint,4,opt,name=enable_production,json=enableProduction,proto3" json:"enable_production,omitempty"` // NODE_ENV=production - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *NodejsStrategy) Reset() { - *x = NodejsStrategy{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *NodejsStrategy) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NodejsStrategy) ProtoMessage() {} - -func (x *NodejsStrategy) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NodejsStrategy.ProtoReflect.Descriptor instead. -func (*NodejsStrategy) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{16} -} - -func (x *NodejsStrategy) GetNodeVersion() string { - if x != nil { - return x.NodeVersion - } - return "" -} - -func (x *NodejsStrategy) GetPackageManager() string { - if x != nil { - return x.PackageManager - } - return "" -} - -func (x *NodejsStrategy) GetStartScript() string { - if x != nil { - return x.StartScript - } - return "" -} - -func (x *NodejsStrategy) GetEnableProduction() bool { - if x != nil { - return x.EnableProduction - } - return false -} - -// Tenant-aware resource limits -type TenantResourceLimits struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Per-build limits - MaxMemoryBytes int64 `protobuf:"varint,1,opt,name=max_memory_bytes,json=maxMemoryBytes,proto3" json:"max_memory_bytes,omitempty"` - MaxCpuCores int32 `protobuf:"varint,2,opt,name=max_cpu_cores,json=maxCpuCores,proto3" json:"max_cpu_cores,omitempty"` - MaxDiskBytes int64 `protobuf:"varint,3,opt,name=max_disk_bytes,json=maxDiskBytes,proto3" json:"max_disk_bytes,omitempty"` - TimeoutSeconds int32 `protobuf:"varint,4,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` - // Tenant-wide quotas - MaxConcurrentBuilds int32 `protobuf:"varint,5,opt,name=max_concurrent_builds,json=maxConcurrentBuilds,proto3" json:"max_concurrent_builds,omitempty"` // Concurrent builds per tenant - MaxDailyBuilds int32 `protobuf:"varint,6,opt,name=max_daily_builds,json=maxDailyBuilds,proto3" json:"max_daily_builds,omitempty"` // Daily build quota - MaxStorageBytes int64 `protobuf:"varint,7,opt,name=max_storage_bytes,json=maxStorageBytes,proto3" json:"max_storage_bytes,omitempty"` // Total storage quota - MaxBuildTimeMinutes int32 `protobuf:"varint,8,opt,name=max_build_time_minutes,json=maxBuildTimeMinutes,proto3" json:"max_build_time_minutes,omitempty"` // Max time per build - // Network restrictions - AllowedRegistries []string `protobuf:"bytes,9,rep,name=allowed_registries,json=allowedRegistries,proto3" json:"allowed_registries,omitempty"` // Docker registries - AllowedGitHosts []string `protobuf:"bytes,10,rep,name=allowed_git_hosts,json=allowedGitHosts,proto3" json:"allowed_git_hosts,omitempty"` // Git hosts - AllowExternalNetwork bool `protobuf:"varint,11,opt,name=allow_external_network,json=allowExternalNetwork,proto3" json:"allow_external_network,omitempty"` // External network access - // Security restrictions - AllowPrivilegedBuilds bool `protobuf:"varint,12,opt,name=allow_privileged_builds,json=allowPrivilegedBuilds,proto3" json:"allow_privileged_builds,omitempty"` // Privileged containers - BlockedCommands []string `protobuf:"bytes,13,rep,name=blocked_commands,json=blockedCommands,proto3" json:"blocked_commands,omitempty"` // Forbidden commands - SandboxLevel int32 `protobuf:"varint,14,opt,name=sandbox_level,json=sandboxLevel,proto3" json:"sandbox_level,omitempty"` // Isolation level (0-3) - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TenantResourceLimits) Reset() { - *x = TenantResourceLimits{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TenantResourceLimits) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TenantResourceLimits) ProtoMessage() {} - -func (x *TenantResourceLimits) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[17] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TenantResourceLimits.ProtoReflect.Descriptor instead. -func (*TenantResourceLimits) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{17} -} - -func (x *TenantResourceLimits) GetMaxMemoryBytes() int64 { - if x != nil { - return x.MaxMemoryBytes - } - return 0 -} - -func (x *TenantResourceLimits) GetMaxCpuCores() int32 { - if x != nil { - return x.MaxCpuCores - } - return 0 -} - -func (x *TenantResourceLimits) GetMaxDiskBytes() int64 { - if x != nil { - return x.MaxDiskBytes - } - return 0 -} - -func (x *TenantResourceLimits) GetTimeoutSeconds() int32 { - if x != nil { - return x.TimeoutSeconds - } - return 0 -} - -func (x *TenantResourceLimits) GetMaxConcurrentBuilds() int32 { - if x != nil { - return x.MaxConcurrentBuilds - } - return 0 -} - -func (x *TenantResourceLimits) GetMaxDailyBuilds() int32 { - if x != nil { - return x.MaxDailyBuilds - } - return 0 -} - -func (x *TenantResourceLimits) GetMaxStorageBytes() int64 { - if x != nil { - return x.MaxStorageBytes - } - return 0 -} - -func (x *TenantResourceLimits) GetMaxBuildTimeMinutes() int32 { - if x != nil { - return x.MaxBuildTimeMinutes - } - return 0 -} - -func (x *TenantResourceLimits) GetAllowedRegistries() []string { - if x != nil { - return x.AllowedRegistries - } - return nil -} - -func (x *TenantResourceLimits) GetAllowedGitHosts() []string { - if x != nil { - return x.AllowedGitHosts - } - return nil -} - -func (x *TenantResourceLimits) GetAllowExternalNetwork() bool { - if x != nil { - return x.AllowExternalNetwork - } - return false -} - -func (x *TenantResourceLimits) GetAllowPrivilegedBuilds() bool { - if x != nil { - return x.AllowPrivilegedBuilds - } - return false -} - -func (x *TenantResourceLimits) GetBlockedCommands() []string { - if x != nil { - return x.BlockedCommands - } - return nil -} - -func (x *TenantResourceLimits) GetSandboxLevel() int32 { - if x != nil { - return x.SandboxLevel - } - return 0 -} - -// Main build configuration -type BuildConfig struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Tenant identification - Tenant *TenantContext `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"` - // What we're building from - Source *BuildSource `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` - // What we're building to - Target *BuildTarget `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - // How to build it - Strategy *BuildStrategy `protobuf:"bytes,4,opt,name=strategy,proto3" json:"strategy,omitempty"` - // Build constraints (tenant-aware) - Limits *TenantResourceLimits `protobuf:"bytes,5,opt,name=limits,proto3" json:"limits,omitempty"` - // Build metadata - BuildName string `protobuf:"bytes,6,opt,name=build_name,json=buildName,proto3" json:"build_name,omitempty"` // Human-readable name - Labels map[string]string `protobuf:"bytes,7,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Custom labels - // Suggested asset ID to use when registering the built artifact - // This allows the caller to pre-generate the asset ID - SuggestedAssetId string `protobuf:"bytes,8,opt,name=suggested_asset_id,json=suggestedAssetId,proto3" json:"suggested_asset_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BuildConfig) Reset() { - *x = BuildConfig{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BuildConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BuildConfig) ProtoMessage() {} - -func (x *BuildConfig) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[18] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BuildConfig.ProtoReflect.Descriptor instead. -func (*BuildConfig) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{18} -} - -func (x *BuildConfig) GetTenant() *TenantContext { - if x != nil { - return x.Tenant - } - return nil -} - -func (x *BuildConfig) GetSource() *BuildSource { - if x != nil { - return x.Source - } - return nil -} - -func (x *BuildConfig) GetTarget() *BuildTarget { - if x != nil { - return x.Target - } - return nil -} - -func (x *BuildConfig) GetStrategy() *BuildStrategy { - if x != nil { - return x.Strategy - } - return nil -} - -func (x *BuildConfig) GetLimits() *TenantResourceLimits { - if x != nil { - return x.Limits - } - return nil -} - -func (x *BuildConfig) GetBuildName() string { - if x != nil { - return x.BuildName - } - return "" -} - -func (x *BuildConfig) GetLabels() map[string]string { - if x != nil { - return x.Labels - } - return nil -} - -func (x *BuildConfig) GetSuggestedAssetId() string { - if x != nil { - return x.SuggestedAssetId - } - return "" -} - -// Build isolation metadata -type BuildIsolation struct { - state protoimpl.MessageState `protogen:"open.v1"` - SandboxId string `protobuf:"bytes,1,opt,name=sandbox_id,json=sandboxId,proto3" json:"sandbox_id,omitempty"` // Unique sandbox identifier - NetworkNamespace string `protobuf:"bytes,2,opt,name=network_namespace,json=networkNamespace,proto3" json:"network_namespace,omitempty"` // Network isolation - FilesystemNamespace string `protobuf:"bytes,3,opt,name=filesystem_namespace,json=filesystemNamespace,proto3" json:"filesystem_namespace,omitempty"` // Filesystem isolation - SecurityContexts []string `protobuf:"bytes,4,rep,name=security_contexts,json=securityContexts,proto3" json:"security_contexts,omitempty"` // SELinux/AppArmor contexts - CgroupPath string `protobuf:"bytes,5,opt,name=cgroup_path,json=cgroupPath,proto3" json:"cgroup_path,omitempty"` // Resource cgroup - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BuildIsolation) Reset() { - *x = BuildIsolation{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BuildIsolation) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BuildIsolation) ProtoMessage() {} - -func (x *BuildIsolation) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[19] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BuildIsolation.ProtoReflect.Descriptor instead. -func (*BuildIsolation) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{19} -} - -func (x *BuildIsolation) GetSandboxId() string { - if x != nil { - return x.SandboxId - } - return "" -} - -func (x *BuildIsolation) GetNetworkNamespace() string { - if x != nil { - return x.NetworkNamespace - } - return "" -} - -func (x *BuildIsolation) GetFilesystemNamespace() string { - if x != nil { - return x.FilesystemNamespace - } - return "" -} - -func (x *BuildIsolation) GetSecurityContexts() []string { - if x != nil { - return x.SecurityContexts - } - return nil -} - -func (x *BuildIsolation) GetCgroupPath() string { - if x != nil { - return x.CgroupPath - } - return "" -} - -// Image metadata extracted from Docker images -type ImageMetadata struct { - state protoimpl.MessageState `protogen:"open.v1"` - OriginalImage string `protobuf:"bytes,1,opt,name=original_image,json=originalImage,proto3" json:"original_image,omitempty"` // Original Docker image - ImageDigest string `protobuf:"bytes,2,opt,name=image_digest,json=imageDigest,proto3" json:"image_digest,omitempty"` // Docker image SHA256 - Layers []string `protobuf:"bytes,3,rep,name=layers,proto3" json:"layers,omitempty"` // Layer digests - Labels map[string]string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Docker labels - Command []string `protobuf:"bytes,5,rep,name=command,proto3" json:"command,omitempty"` // Original CMD - Entrypoint []string `protobuf:"bytes,6,rep,name=entrypoint,proto3" json:"entrypoint,omitempty"` // Original ENTRYPOINT - WorkingDir string `protobuf:"bytes,7,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` // WORKDIR - Env map[string]string `protobuf:"bytes,8,rep,name=env,proto3" json:"env,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Environment variables - ExposedPorts []string `protobuf:"bytes,9,rep,name=exposed_ports,json=exposedPorts,proto3" json:"exposed_ports,omitempty"` // EXPOSE ports - User string `protobuf:"bytes,10,opt,name=user,proto3" json:"user,omitempty"` // USER directive - Volumes []string `protobuf:"bytes,11,rep,name=volumes,proto3" json:"volumes,omitempty"` // VOLUME directives - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ImageMetadata) Reset() { - *x = ImageMetadata{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ImageMetadata) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ImageMetadata) ProtoMessage() {} - -func (x *ImageMetadata) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ImageMetadata.ProtoReflect.Descriptor instead. -func (*ImageMetadata) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{20} -} - -func (x *ImageMetadata) GetOriginalImage() string { - if x != nil { - return x.OriginalImage - } - return "" -} - -func (x *ImageMetadata) GetImageDigest() string { - if x != nil { - return x.ImageDigest - } - return "" -} - -func (x *ImageMetadata) GetLayers() []string { - if x != nil { - return x.Layers - } - return nil -} - -func (x *ImageMetadata) GetLabels() map[string]string { - if x != nil { - return x.Labels - } - return nil -} - -func (x *ImageMetadata) GetCommand() []string { - if x != nil { - return x.Command - } - return nil -} - -func (x *ImageMetadata) GetEntrypoint() []string { - if x != nil { - return x.Entrypoint - } - return nil -} - -func (x *ImageMetadata) GetWorkingDir() string { - if x != nil { - return x.WorkingDir - } - return "" -} - -func (x *ImageMetadata) GetEnv() map[string]string { - if x != nil { - return x.Env - } - return nil -} - -func (x *ImageMetadata) GetExposedPorts() []string { - if x != nil { - return x.ExposedPorts - } - return nil -} - -func (x *ImageMetadata) GetUser() string { - if x != nil { - return x.User - } - return "" -} - -func (x *ImageMetadata) GetVolumes() []string { - if x != nil { - return x.Volumes - } - return nil -} - -// Build performance metrics -type BuildMetrics struct { - state protoimpl.MessageState `protogen:"open.v1"` - PullDurationMs int64 `protobuf:"varint,1,opt,name=pull_duration_ms,json=pullDurationMs,proto3" json:"pull_duration_ms,omitempty"` // Time to pull image/source - ExtractDurationMs int64 `protobuf:"varint,2,opt,name=extract_duration_ms,json=extractDurationMs,proto3" json:"extract_duration_ms,omitempty"` // Time to extract layers - BuildDurationMs int64 `protobuf:"varint,3,opt,name=build_duration_ms,json=buildDurationMs,proto3" json:"build_duration_ms,omitempty"` // Time to build rootfs - OptimizeDurationMs int64 `protobuf:"varint,4,opt,name=optimize_duration_ms,json=optimizeDurationMs,proto3" json:"optimize_duration_ms,omitempty"` // Time for optimizations - TotalDurationMs int64 `protobuf:"varint,5,opt,name=total_duration_ms,json=totalDurationMs,proto3" json:"total_duration_ms,omitempty"` // Total build time - OriginalSizeBytes int64 `protobuf:"varint,6,opt,name=original_size_bytes,json=originalSizeBytes,proto3" json:"original_size_bytes,omitempty"` // Original image/source size - RootfsSizeBytes int64 `protobuf:"varint,7,opt,name=rootfs_size_bytes,json=rootfsSizeBytes,proto3" json:"rootfs_size_bytes,omitempty"` // Final rootfs size - CompressionRatio int64 `protobuf:"varint,8,opt,name=compression_ratio,json=compressionRatio,proto3" json:"compression_ratio,omitempty"` // Size reduction percentage - MemoryPeakBytes int64 `protobuf:"varint,9,opt,name=memory_peak_bytes,json=memoryPeakBytes,proto3" json:"memory_peak_bytes,omitempty"` // Peak memory usage - DiskUsageBytes int64 `protobuf:"varint,10,opt,name=disk_usage_bytes,json=diskUsageBytes,proto3" json:"disk_usage_bytes,omitempty"` // Temporary disk usage - CpuCoresUsed int32 `protobuf:"varint,11,opt,name=cpu_cores_used,json=cpuCoresUsed,proto3" json:"cpu_cores_used,omitempty"` // CPU cores utilized - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BuildMetrics) Reset() { - *x = BuildMetrics{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BuildMetrics) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BuildMetrics) ProtoMessage() {} - -func (x *BuildMetrics) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[21] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BuildMetrics.ProtoReflect.Descriptor instead. -func (*BuildMetrics) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{21} -} - -func (x *BuildMetrics) GetPullDurationMs() int64 { - if x != nil { - return x.PullDurationMs - } - return 0 -} - -func (x *BuildMetrics) GetExtractDurationMs() int64 { - if x != nil { - return x.ExtractDurationMs - } - return 0 -} - -func (x *BuildMetrics) GetBuildDurationMs() int64 { - if x != nil { - return x.BuildDurationMs - } - return 0 -} - -func (x *BuildMetrics) GetOptimizeDurationMs() int64 { - if x != nil { - return x.OptimizeDurationMs - } - return 0 -} - -func (x *BuildMetrics) GetTotalDurationMs() int64 { - if x != nil { - return x.TotalDurationMs - } - return 0 -} - -func (x *BuildMetrics) GetOriginalSizeBytes() int64 { - if x != nil { - return x.OriginalSizeBytes - } - return 0 -} - -func (x *BuildMetrics) GetRootfsSizeBytes() int64 { - if x != nil { - return x.RootfsSizeBytes - } - return 0 -} - -func (x *BuildMetrics) GetCompressionRatio() int64 { - if x != nil { - return x.CompressionRatio - } - return 0 -} - -func (x *BuildMetrics) GetMemoryPeakBytes() int64 { - if x != nil { - return x.MemoryPeakBytes - } - return 0 -} - -func (x *BuildMetrics) GetDiskUsageBytes() int64 { - if x != nil { - return x.DiskUsageBytes - } - return 0 -} - -func (x *BuildMetrics) GetCpuCoresUsed() int32 { - if x != nil { - return x.CpuCoresUsed - } - return 0 -} - -// Complete build job information -type BuildJob struct { - state protoimpl.MessageState `protogen:"open.v1"` - BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` // Unique build identifier - Config *BuildConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` // Build configuration - State BuildState `protobuf:"varint,3,opt,name=state,proto3,enum=builder.v1.BuildState" json:"state,omitempty"` // Current build state - // Timestamps - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - StartedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` - CompletedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"` - // Results - RootfsPath string `protobuf:"bytes,7,opt,name=rootfs_path,json=rootfsPath,proto3" json:"rootfs_path,omitempty"` // Path to built rootfs - RootfsSizeBytes int64 `protobuf:"varint,8,opt,name=rootfs_size_bytes,json=rootfsSizeBytes,proto3" json:"rootfs_size_bytes,omitempty"` // Size of rootfs - RootfsChecksum string `protobuf:"bytes,9,opt,name=rootfs_checksum,json=rootfsChecksum,proto3" json:"rootfs_checksum,omitempty"` // SHA256 of rootfs - // Build metadata - ImageMetadata *ImageMetadata `protobuf:"bytes,10,opt,name=image_metadata,json=imageMetadata,proto3" json:"image_metadata,omitempty"` - Metrics *BuildMetrics `protobuf:"bytes,11,opt,name=metrics,proto3" json:"metrics,omitempty"` - Isolation *BuildIsolation `protobuf:"bytes,12,opt,name=isolation,proto3" json:"isolation,omitempty"` - // Error information - ErrorMessage string `protobuf:"bytes,13,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` - BuildLogs []string `protobuf:"bytes,14,rep,name=build_logs,json=buildLogs,proto3" json:"build_logs,omitempty"` - // Progress information - ProgressPercent int32 `protobuf:"varint,15,opt,name=progress_percent,json=progressPercent,proto3" json:"progress_percent,omitempty"` // 0-100 - CurrentStep string `protobuf:"bytes,16,opt,name=current_step,json=currentStep,proto3" json:"current_step,omitempty"` // Current build step - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BuildJob) Reset() { - *x = BuildJob{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BuildJob) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BuildJob) ProtoMessage() {} - -func (x *BuildJob) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[22] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BuildJob.ProtoReflect.Descriptor instead. -func (*BuildJob) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{22} -} - -func (x *BuildJob) GetBuildId() string { - if x != nil { - return x.BuildId - } - return "" -} - -func (x *BuildJob) GetConfig() *BuildConfig { - if x != nil { - return x.Config - } - return nil -} - -func (x *BuildJob) GetState() BuildState { - if x != nil { - return x.State - } - return BuildState_BUILD_STATE_UNSPECIFIED -} - -func (x *BuildJob) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *BuildJob) GetStartedAt() *timestamppb.Timestamp { - if x != nil { - return x.StartedAt - } - return nil -} - -func (x *BuildJob) GetCompletedAt() *timestamppb.Timestamp { - if x != nil { - return x.CompletedAt - } - return nil -} - -func (x *BuildJob) GetRootfsPath() string { - if x != nil { - return x.RootfsPath - } - return "" -} - -func (x *BuildJob) GetRootfsSizeBytes() int64 { - if x != nil { - return x.RootfsSizeBytes - } - return 0 -} - -func (x *BuildJob) GetRootfsChecksum() string { - if x != nil { - return x.RootfsChecksum - } - return "" -} - -func (x *BuildJob) GetImageMetadata() *ImageMetadata { - if x != nil { - return x.ImageMetadata - } - return nil -} - -func (x *BuildJob) GetMetrics() *BuildMetrics { - if x != nil { - return x.Metrics - } - return nil -} - -func (x *BuildJob) GetIsolation() *BuildIsolation { - if x != nil { - return x.Isolation - } - return nil -} - -func (x *BuildJob) GetErrorMessage() string { - if x != nil { - return x.ErrorMessage - } - return "" -} - -func (x *BuildJob) GetBuildLogs() []string { - if x != nil { - return x.BuildLogs - } - return nil -} - -func (x *BuildJob) GetProgressPercent() int32 { - if x != nil { - return x.ProgressPercent - } - return 0 -} - -func (x *BuildJob) GetCurrentStep() string { - if x != nil { - return x.CurrentStep - } - return "" -} - -// Build log entry for streaming -type StreamBuildLogsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - Level string `protobuf:"bytes,2,opt,name=level,proto3" json:"level,omitempty"` // "info", "warn", "error", "debug" - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` - Component string `protobuf:"bytes,4,opt,name=component,proto3" json:"component,omitempty"` // "puller", "extractor", "builder" - Metadata map[string]string `protobuf:"bytes,5,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StreamBuildLogsResponse) Reset() { - *x = StreamBuildLogsResponse{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StreamBuildLogsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamBuildLogsResponse) ProtoMessage() {} - -func (x *StreamBuildLogsResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[23] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamBuildLogsResponse.ProtoReflect.Descriptor instead. -func (*StreamBuildLogsResponse) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{23} -} - -func (x *StreamBuildLogsResponse) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp - } - return nil -} - -func (x *StreamBuildLogsResponse) GetLevel() string { - if x != nil { - return x.Level - } - return "" -} - -func (x *StreamBuildLogsResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *StreamBuildLogsResponse) GetComponent() string { - if x != nil { - return x.Component - } - return "" -} - -func (x *StreamBuildLogsResponse) GetMetadata() map[string]string { - if x != nil { - return x.Metadata - } - return nil -} - -// Tenant usage statistics -type TenantUsageStats struct { - state protoimpl.MessageState `protogen:"open.v1"` - ActiveBuilds int32 `protobuf:"varint,1,opt,name=active_builds,json=activeBuilds,proto3" json:"active_builds,omitempty"` - DailyBuildsUsed int32 `protobuf:"varint,2,opt,name=daily_builds_used,json=dailyBuildsUsed,proto3" json:"daily_builds_used,omitempty"` - StorageBytesUsed int64 `protobuf:"varint,3,opt,name=storage_bytes_used,json=storageBytesUsed,proto3" json:"storage_bytes_used,omitempty"` - ComputeMinutesUsed int64 `protobuf:"varint,4,opt,name=compute_minutes_used,json=computeMinutesUsed,proto3" json:"compute_minutes_used,omitempty"` - BuildsQueued int32 `protobuf:"varint,5,opt,name=builds_queued,json=buildsQueued,proto3" json:"builds_queued,omitempty"` - BuildsCompletedToday int32 `protobuf:"varint,6,opt,name=builds_completed_today,json=buildsCompletedToday,proto3" json:"builds_completed_today,omitempty"` - BuildsFailedToday int32 `protobuf:"varint,7,opt,name=builds_failed_today,json=buildsFailedToday,proto3" json:"builds_failed_today,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TenantUsageStats) Reset() { - *x = TenantUsageStats{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TenantUsageStats) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TenantUsageStats) ProtoMessage() {} - -func (x *TenantUsageStats) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[24] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TenantUsageStats.ProtoReflect.Descriptor instead. -func (*TenantUsageStats) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{24} -} - -func (x *TenantUsageStats) GetActiveBuilds() int32 { - if x != nil { - return x.ActiveBuilds - } - return 0 -} - -func (x *TenantUsageStats) GetDailyBuildsUsed() int32 { - if x != nil { - return x.DailyBuildsUsed - } - return 0 -} - -func (x *TenantUsageStats) GetStorageBytesUsed() int64 { - if x != nil { - return x.StorageBytesUsed - } - return 0 -} - -func (x *TenantUsageStats) GetComputeMinutesUsed() int64 { - if x != nil { - return x.ComputeMinutesUsed - } - return 0 -} - -func (x *TenantUsageStats) GetBuildsQueued() int32 { - if x != nil { - return x.BuildsQueued - } - return 0 -} - -func (x *TenantUsageStats) GetBuildsCompletedToday() int32 { - if x != nil { - return x.BuildsCompletedToday - } - return 0 -} - -func (x *TenantUsageStats) GetBuildsFailedToday() int32 { - if x != nil { - return x.BuildsFailedToday - } - return 0 -} - -type QuotaViolation struct { - state protoimpl.MessageState `protogen:"open.v1"` - QuotaType string `protobuf:"bytes,1,opt,name=quota_type,json=quotaType,proto3" json:"quota_type,omitempty"` // "concurrent_builds", "daily_builds", etc. - CurrentValue int64 `protobuf:"varint,2,opt,name=current_value,json=currentValue,proto3" json:"current_value,omitempty"` - LimitValue int64 `protobuf:"varint,3,opt,name=limit_value,json=limitValue,proto3" json:"limit_value,omitempty"` - Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *QuotaViolation) Reset() { - *x = QuotaViolation{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *QuotaViolation) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QuotaViolation) ProtoMessage() {} - -func (x *QuotaViolation) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[25] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use QuotaViolation.ProtoReflect.Descriptor instead. -func (*QuotaViolation) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{25} -} - -func (x *QuotaViolation) GetQuotaType() string { - if x != nil { - return x.QuotaType - } - return "" -} - -func (x *QuotaViolation) GetCurrentValue() int64 { - if x != nil { - return x.CurrentValue - } - return 0 -} - -func (x *QuotaViolation) GetLimitValue() int64 { - if x != nil { - return x.LimitValue - } - return 0 -} - -func (x *QuotaViolation) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -// Request/Response messages -type CreateBuildRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Config *BuildConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateBuildRequest) Reset() { - *x = CreateBuildRequest{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateBuildRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateBuildRequest) ProtoMessage() {} - -func (x *CreateBuildRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[26] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateBuildRequest.ProtoReflect.Descriptor instead. -func (*CreateBuildRequest) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{26} -} - -func (x *CreateBuildRequest) GetConfig() *BuildConfig { - if x != nil { - return x.Config - } - return nil -} - -type CreateBuildResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` - State BuildState `protobuf:"varint,2,opt,name=state,proto3,enum=builder.v1.BuildState" json:"state,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - RootfsPath string `protobuf:"bytes,4,opt,name=rootfs_path,json=rootfsPath,proto3" json:"rootfs_path,omitempty"` // Path to the generated rootfs for VM creation - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateBuildResponse) Reset() { - *x = CreateBuildResponse{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateBuildResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateBuildResponse) ProtoMessage() {} - -func (x *CreateBuildResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[27] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateBuildResponse.ProtoReflect.Descriptor instead. -func (*CreateBuildResponse) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{27} -} - -func (x *CreateBuildResponse) GetBuildId() string { - if x != nil { - return x.BuildId - } - return "" -} - -func (x *CreateBuildResponse) GetState() BuildState { - if x != nil { - return x.State - } - return BuildState_BUILD_STATE_UNSPECIFIED -} - -func (x *CreateBuildResponse) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *CreateBuildResponse) GetRootfsPath() string { - if x != nil { - return x.RootfsPath - } - return "" -} - -type GetBuildRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` - TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // For authorization - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetBuildRequest) Reset() { - *x = GetBuildRequest{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetBuildRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBuildRequest) ProtoMessage() {} - -func (x *GetBuildRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[28] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetBuildRequest.ProtoReflect.Descriptor instead. -func (*GetBuildRequest) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{28} -} - -func (x *GetBuildRequest) GetBuildId() string { - if x != nil { - return x.BuildId - } - return "" -} - -func (x *GetBuildRequest) GetTenantId() string { - if x != nil { - return x.TenantId - } - return "" -} - -type GetBuildResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Build *BuildJob `protobuf:"bytes,1,opt,name=build,proto3" json:"build,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetBuildResponse) Reset() { - *x = GetBuildResponse{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetBuildResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBuildResponse) ProtoMessage() {} - -func (x *GetBuildResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[29] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetBuildResponse.ProtoReflect.Descriptor instead. -func (*GetBuildResponse) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{29} -} - -func (x *GetBuildResponse) GetBuild() *BuildJob { - if x != nil { - return x.Build - } - return nil -} - -type ListBuildsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // Required for filtering - StateFilter []BuildState `protobuf:"varint,2,rep,packed,name=state_filter,json=stateFilter,proto3,enum=builder.v1.BuildState" json:"state_filter,omitempty"` - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListBuildsRequest) Reset() { - *x = ListBuildsRequest{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListBuildsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListBuildsRequest) ProtoMessage() {} - -func (x *ListBuildsRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[30] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListBuildsRequest.ProtoReflect.Descriptor instead. -func (*ListBuildsRequest) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{30} -} - -func (x *ListBuildsRequest) GetTenantId() string { - if x != nil { - return x.TenantId - } - return "" -} - -func (x *ListBuildsRequest) GetStateFilter() []BuildState { - if x != nil { - return x.StateFilter - } - return nil -} - -func (x *ListBuildsRequest) GetPageSize() int32 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *ListBuildsRequest) GetPageToken() string { - if x != nil { - return x.PageToken - } - return "" -} - -type ListBuildsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Builds []*BuildJob `protobuf:"bytes,1,rep,name=builds,proto3" json:"builds,omitempty"` - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListBuildsResponse) Reset() { - *x = ListBuildsResponse{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListBuildsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListBuildsResponse) ProtoMessage() {} - -func (x *ListBuildsResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[31] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListBuildsResponse.ProtoReflect.Descriptor instead. -func (*ListBuildsResponse) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{31} -} - -func (x *ListBuildsResponse) GetBuilds() []*BuildJob { - if x != nil { - return x.Builds - } - return nil -} - -func (x *ListBuildsResponse) GetNextPageToken() string { - if x != nil { - return x.NextPageToken - } - return "" -} - -func (x *ListBuildsResponse) GetTotalCount() int32 { - if x != nil { - return x.TotalCount - } - return 0 -} - -type CancelBuildRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` - TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // For authorization - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CancelBuildRequest) Reset() { - *x = CancelBuildRequest{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CancelBuildRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CancelBuildRequest) ProtoMessage() {} - -func (x *CancelBuildRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[32] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CancelBuildRequest.ProtoReflect.Descriptor instead. -func (*CancelBuildRequest) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{32} -} - -func (x *CancelBuildRequest) GetBuildId() string { - if x != nil { - return x.BuildId - } - return "" -} - -func (x *CancelBuildRequest) GetTenantId() string { - if x != nil { - return x.TenantId - } - return "" -} - -type CancelBuildResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - State BuildState `protobuf:"varint,2,opt,name=state,proto3,enum=builder.v1.BuildState" json:"state,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CancelBuildResponse) Reset() { - *x = CancelBuildResponse{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CancelBuildResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CancelBuildResponse) ProtoMessage() {} - -func (x *CancelBuildResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[33] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CancelBuildResponse.ProtoReflect.Descriptor instead. -func (*CancelBuildResponse) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{33} -} - -func (x *CancelBuildResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *CancelBuildResponse) GetState() BuildState { - if x != nil { - return x.State - } - return BuildState_BUILD_STATE_UNSPECIFIED -} - -type DeleteBuildRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` - TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // For authorization - Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"` // Delete even if running - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteBuildRequest) Reset() { - *x = DeleteBuildRequest{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteBuildRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteBuildRequest) ProtoMessage() {} - -func (x *DeleteBuildRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[34] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteBuildRequest.ProtoReflect.Descriptor instead. -func (*DeleteBuildRequest) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{34} -} - -func (x *DeleteBuildRequest) GetBuildId() string { - if x != nil { - return x.BuildId - } - return "" -} - -func (x *DeleteBuildRequest) GetTenantId() string { - if x != nil { - return x.TenantId - } - return "" -} - -func (x *DeleteBuildRequest) GetForce() bool { - if x != nil { - return x.Force - } - return false -} - -type DeleteBuildResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteBuildResponse) Reset() { - *x = DeleteBuildResponse{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteBuildResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteBuildResponse) ProtoMessage() {} - -func (x *DeleteBuildResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[35] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteBuildResponse.ProtoReflect.Descriptor instead. -func (*DeleteBuildResponse) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{35} -} - -func (x *DeleteBuildResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -type StreamBuildLogsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` - TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // For authorization - Follow bool `protobuf:"varint,3,opt,name=follow,proto3" json:"follow,omitempty"` // Continue streaming new logs - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StreamBuildLogsRequest) Reset() { - *x = StreamBuildLogsRequest{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StreamBuildLogsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamBuildLogsRequest) ProtoMessage() {} - -func (x *StreamBuildLogsRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[36] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamBuildLogsRequest.ProtoReflect.Descriptor instead. -func (*StreamBuildLogsRequest) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{36} -} - -func (x *StreamBuildLogsRequest) GetBuildId() string { - if x != nil { - return x.BuildId - } - return "" -} - -func (x *StreamBuildLogsRequest) GetTenantId() string { - if x != nil { - return x.TenantId - } - return "" -} - -func (x *StreamBuildLogsRequest) GetFollow() bool { - if x != nil { - return x.Follow - } - return false -} - -type GetTenantQuotasRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetTenantQuotasRequest) Reset() { - *x = GetTenantQuotasRequest{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetTenantQuotasRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetTenantQuotasRequest) ProtoMessage() {} - -func (x *GetTenantQuotasRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[37] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetTenantQuotasRequest.ProtoReflect.Descriptor instead. -func (*GetTenantQuotasRequest) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{37} -} - -func (x *GetTenantQuotasRequest) GetTenantId() string { - if x != nil { - return x.TenantId - } - return "" -} - -type GetTenantQuotasResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - CurrentLimits *TenantResourceLimits `protobuf:"bytes,1,opt,name=current_limits,json=currentLimits,proto3" json:"current_limits,omitempty"` - CurrentUsage *TenantUsageStats `protobuf:"bytes,2,opt,name=current_usage,json=currentUsage,proto3" json:"current_usage,omitempty"` - Violations []*QuotaViolation `protobuf:"bytes,3,rep,name=violations,proto3" json:"violations,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetTenantQuotasResponse) Reset() { - *x = GetTenantQuotasResponse{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetTenantQuotasResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetTenantQuotasResponse) ProtoMessage() {} - -func (x *GetTenantQuotasResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[38] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetTenantQuotasResponse.ProtoReflect.Descriptor instead. -func (*GetTenantQuotasResponse) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{38} -} - -func (x *GetTenantQuotasResponse) GetCurrentLimits() *TenantResourceLimits { - if x != nil { - return x.CurrentLimits - } - return nil -} - -func (x *GetTenantQuotasResponse) GetCurrentUsage() *TenantUsageStats { - if x != nil { - return x.CurrentUsage - } - return nil -} - -func (x *GetTenantQuotasResponse) GetViolations() []*QuotaViolation { - if x != nil { - return x.Violations - } - return nil -} - -type GetBuildStatsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` - EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetBuildStatsRequest) Reset() { - *x = GetBuildStatsRequest{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetBuildStatsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBuildStatsRequest) ProtoMessage() {} - -func (x *GetBuildStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[39] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetBuildStatsRequest.ProtoReflect.Descriptor instead. -func (*GetBuildStatsRequest) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{39} -} - -func (x *GetBuildStatsRequest) GetTenantId() string { - if x != nil { - return x.TenantId - } - return "" -} - -func (x *GetBuildStatsRequest) GetStartTime() *timestamppb.Timestamp { - if x != nil { - return x.StartTime - } - return nil -} - -func (x *GetBuildStatsRequest) GetEndTime() *timestamppb.Timestamp { - if x != nil { - return x.EndTime - } - return nil -} - -type GetBuildStatsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - TotalBuilds int32 `protobuf:"varint,1,opt,name=total_builds,json=totalBuilds,proto3" json:"total_builds,omitempty"` - SuccessfulBuilds int32 `protobuf:"varint,2,opt,name=successful_builds,json=successfulBuilds,proto3" json:"successful_builds,omitempty"` - FailedBuilds int32 `protobuf:"varint,3,opt,name=failed_builds,json=failedBuilds,proto3" json:"failed_builds,omitempty"` - AvgBuildTimeMs int64 `protobuf:"varint,4,opt,name=avg_build_time_ms,json=avgBuildTimeMs,proto3" json:"avg_build_time_ms,omitempty"` - TotalStorageBytes int64 `protobuf:"varint,5,opt,name=total_storage_bytes,json=totalStorageBytes,proto3" json:"total_storage_bytes,omitempty"` - TotalComputeMinutes int64 `protobuf:"varint,6,opt,name=total_compute_minutes,json=totalComputeMinutes,proto3" json:"total_compute_minutes,omitempty"` - RecentBuilds []*BuildJob `protobuf:"bytes,7,rep,name=recent_builds,json=recentBuilds,proto3" json:"recent_builds,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetBuildStatsResponse) Reset() { - *x = GetBuildStatsResponse{} - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetBuildStatsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBuildStatsResponse) ProtoMessage() {} - -func (x *GetBuildStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[40] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetBuildStatsResponse.ProtoReflect.Descriptor instead. -func (*GetBuildStatsResponse) Descriptor() ([]byte, []int) { - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP(), []int{40} -} - -func (x *GetBuildStatsResponse) GetTotalBuilds() int32 { - if x != nil { - return x.TotalBuilds - } - return 0 -} - -func (x *GetBuildStatsResponse) GetSuccessfulBuilds() int32 { - if x != nil { - return x.SuccessfulBuilds - } - return 0 -} - -func (x *GetBuildStatsResponse) GetFailedBuilds() int32 { - if x != nil { - return x.FailedBuilds - } - return 0 -} - -func (x *GetBuildStatsResponse) GetAvgBuildTimeMs() int64 { - if x != nil { - return x.AvgBuildTimeMs - } - return 0 -} - -func (x *GetBuildStatsResponse) GetTotalStorageBytes() int64 { - if x != nil { - return x.TotalStorageBytes - } - return 0 -} - -func (x *GetBuildStatsResponse) GetTotalComputeMinutes() int64 { - if x != nil { - return x.TotalComputeMinutes - } - return 0 -} - -func (x *GetBuildStatsResponse) GetRecentBuilds() []*BuildJob { - if x != nil { - return x.RecentBuilds - } - return nil -} - -var File_deploy_builderd_proto_builder_v1_builder_proto protoreflect.FileDescriptor - -const file_deploy_builderd_proto_builder_v1_builder_proto_rawDesc = "" + - "\n" + - ".deploy/builderd/proto/builder/v1/builder.proto\x12\n" + - "builder.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\xc6\x02\n" + - "\rTenantContext\x12\x1b\n" + - "\ttenant_id\x18\x01 \x01(\tR\btenantId\x12\x1f\n" + - "\vcustomer_id\x18\x02 \x01(\tR\n" + - "customerId\x12'\n" + - "\x0forganization_id\x18\x03 \x01(\tR\x0eorganizationId\x12*\n" + - "\x04tier\x18\x04 \x01(\x0e2\x16.builder.v1.TenantTierR\x04tier\x12 \n" + - "\vpermissions\x18\x05 \x03(\tR\vpermissions\x12C\n" + - "\bmetadata\x18\x06 \x03(\v2'.builder.v1.TenantContext.MetadataEntryR\bmetadata\x1a;\n" + - "\rMetadataEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xe1\x01\n" + - "\vBuildSource\x12B\n" + - "\fdocker_image\x18\x01 \x01(\v2\x1d.builder.v1.DockerImageSourceH\x00R\vdockerImage\x12H\n" + - "\x0egit_repository\x18\x02 \x01(\v2\x1f.builder.v1.GitRepositorySourceH\x00R\rgitRepository\x125\n" + - "\aarchive\x18\x03 \x01(\v2\x19.builder.v1.ArchiveSourceH\x00R\aarchiveB\r\n" + - "\vsource_type\"y\n" + - "\x11DockerImageSource\x12\x1b\n" + - "\timage_uri\x18\x01 \x01(\tR\bimageUri\x12*\n" + - "\x04auth\x18\x02 \x01(\v2\x16.builder.v1.DockerAuthR\x04auth\x12\x1b\n" + - "\tpull_tags\x18\x03 \x03(\tR\bpullTags\"v\n" + - "\n" + - "DockerAuth\x12\x1a\n" + - "\busername\x18\x01 \x01(\tR\busername\x12\x1a\n" + - "\bpassword\x18\x02 \x01(\tR\bpassword\x12\x14\n" + - "\x05token\x18\x03 \x01(\tR\x05token\x12\x1a\n" + - "\bregistry\x18\x04 \x01(\tR\bregistry\"\x9c\x01\n" + - "\x13GitRepositorySource\x12%\n" + - "\x0erepository_url\x18\x01 \x01(\tR\rrepositoryUrl\x12\x10\n" + - "\x03ref\x18\x02 \x01(\tR\x03ref\x12#\n" + - "\rbuild_context\x18\x03 \x01(\tR\fbuildContext\x12'\n" + - "\x04auth\x18\x04 \x01(\v2\x13.builder.v1.GitAuthR\x04auth\"p\n" + - "\aGitAuth\x12\x1a\n" + - "\busername\x18\x01 \x01(\tR\busername\x12\x1a\n" + - "\bpassword\x18\x02 \x01(\tR\bpassword\x12\x17\n" + - "\assh_key\x18\x03 \x01(\tR\x06sshKey\x12\x14\n" + - "\x05token\x18\x04 \x01(\tR\x05token\"x\n" + - "\rArchiveSource\x12\x1f\n" + - "\varchive_url\x18\x01 \x01(\tR\n" + - "archiveUrl\x12!\n" + - "\farchive_type\x18\x02 \x01(\tR\varchiveType\x12#\n" + - "\rbuild_context\x18\x03 \x01(\tR\fbuildContext\"\xa7\x01\n" + - "\vBuildTarget\x12B\n" + - "\x0emicrovm_rootfs\x18\x01 \x01(\v2\x19.builder.v1.MicroVMRootfsH\x00R\rmicrovmRootfs\x12E\n" + - "\x0fcontainer_image\x18\x02 \x01(\v2\x1a.builder.v1.ContainerImageH\x00R\x0econtainerImageB\r\n" + - "\vtarget_type\"\xfd\x01\n" + - "\rMicroVMRootfs\x12=\n" + - "\rinit_strategy\x18\x01 \x01(\x0e2\x18.builder.v1.InitStrategyR\finitStrategy\x12@\n" + - "\x0eruntime_config\x18\x02 \x01(\v2\x19.builder.v1.RuntimeConfigR\rruntimeConfig\x12D\n" + - "\foptimization\x18\x03 \x01(\v2 .builder.v1.OptimizationSettingsR\foptimization\x12%\n" + - "\x0epreserve_paths\x18\x04 \x03(\tR\rpreservePaths\"G\n" + - "\x0eContainerImage\x12\x1d\n" + - "\n" + - "base_image\x18\x01 \x01(\tR\tbaseImage\x12\x16\n" + - "\x06layers\x18\x02 \x03(\tR\x06layers\"\x9d\x02\n" + - "\rRuntimeConfig\x12\x18\n" + - "\acommand\x18\x01 \x03(\tR\acommand\x12\x1e\n" + - "\n" + - "entrypoint\x18\x02 \x03(\tR\n" + - "entrypoint\x12\x1f\n" + - "\vworking_dir\x18\x03 \x01(\tR\n" + - "workingDir\x12L\n" + - "\venvironment\x18\x04 \x03(\v2*.builder.v1.RuntimeConfig.EnvironmentEntryR\venvironment\x12#\n" + - "\rexposed_ports\x18\x05 \x03(\tR\fexposedPorts\x1a>\n" + - "\x10EnvironmentEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x89\x02\n" + - "\x14OptimizationSettings\x12.\n" + - "\x13strip_debug_symbols\x18\x01 \x01(\bR\x11stripDebugSymbols\x12+\n" + - "\x11compress_binaries\x18\x02 \x01(\bR\x10compressBinaries\x12\x1f\n" + - "\vremove_docs\x18\x03 \x01(\bR\n" + - "removeDocs\x12!\n" + - "\fremove_cache\x18\x04 \x01(\bR\vremoveCache\x12%\n" + - "\x0epreserve_paths\x18\x05 \x03(\tR\rpreservePaths\x12)\n" + - "\x10exclude_patterns\x18\x06 \x03(\tR\x0fexcludePatterns\"\x8f\x02\n" + - "\rBuildStrategy\x12J\n" + - "\x0edocker_extract\x18\x01 \x01(\v2!.builder.v1.DockerExtractStrategyH\x00R\rdockerExtract\x122\n" + - "\x06go_api\x18\x02 \x01(\v2\x19.builder.v1.GoApiStrategyH\x00R\x05goApi\x127\n" + - "\asinatra\x18\x03 \x01(\v2\x1b.builder.v1.SinatraStrategyH\x00R\asinatra\x124\n" + - "\x06nodejs\x18\x04 \x01(\v2\x1a.builder.v1.NodejsStrategyH\x00R\x06nodejsB\x0f\n" + - "\rstrategy_type\"\x9a\x01\n" + - "\x15DockerExtractStrategy\x12'\n" + - "\x0fpreserve_layers\x18\x01 \x01(\bR\x0epreserveLayers\x12-\n" + - "\x12flatten_filesystem\x18\x02 \x01(\bR\x11flattenFilesystem\x12)\n" + - "\x10exclude_patterns\x18\x03 \x03(\tR\x0fexcludePatterns\"\x91\x01\n" + - "\rGoApiStrategy\x12\x1d\n" + - "\n" + - "go_version\x18\x01 \x01(\tR\tgoVersion\x12\x1f\n" + - "\vbuild_flags\x18\x02 \x03(\tR\n" + - "buildFlags\x12!\n" + - "\fmain_package\x18\x03 \x01(\tR\vmainPackage\x12\x1d\n" + - "\n" + - "enable_cgo\x18\x04 \x01(\bR\tenableCgo\"\x85\x02\n" + - "\x0fSinatraStrategy\x12!\n" + - "\fruby_version\x18\x01 \x01(\tR\vrubyVersion\x12!\n" + - "\fgemfile_path\x18\x02 \x01(\tR\vgemfilePath\x12\x1f\n" + - "\vrack_server\x18\x03 \x01(\tR\n" + - "rackServer\x12L\n" + - "\vrack_config\x18\x04 \x03(\v2+.builder.v1.SinatraStrategy.RackConfigEntryR\n" + - "rackConfig\x1a=\n" + - "\x0fRackConfigEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xac\x01\n" + - "\x0eNodejsStrategy\x12!\n" + - "\fnode_version\x18\x01 \x01(\tR\vnodeVersion\x12'\n" + - "\x0fpackage_manager\x18\x02 \x01(\tR\x0epackageManager\x12!\n" + - "\fstart_script\x18\x03 \x01(\tR\vstartScript\x12+\n" + - "\x11enable_production\x18\x04 \x01(\bR\x10enableProduction\"\x8b\x05\n" + - "\x14TenantResourceLimits\x12(\n" + - "\x10max_memory_bytes\x18\x01 \x01(\x03R\x0emaxMemoryBytes\x12\"\n" + - "\rmax_cpu_cores\x18\x02 \x01(\x05R\vmaxCpuCores\x12$\n" + - "\x0emax_disk_bytes\x18\x03 \x01(\x03R\fmaxDiskBytes\x12'\n" + - "\x0ftimeout_seconds\x18\x04 \x01(\x05R\x0etimeoutSeconds\x122\n" + - "\x15max_concurrent_builds\x18\x05 \x01(\x05R\x13maxConcurrentBuilds\x12(\n" + - "\x10max_daily_builds\x18\x06 \x01(\x05R\x0emaxDailyBuilds\x12*\n" + - "\x11max_storage_bytes\x18\a \x01(\x03R\x0fmaxStorageBytes\x123\n" + - "\x16max_build_time_minutes\x18\b \x01(\x05R\x13maxBuildTimeMinutes\x12-\n" + - "\x12allowed_registries\x18\t \x03(\tR\x11allowedRegistries\x12*\n" + - "\x11allowed_git_hosts\x18\n" + - " \x03(\tR\x0fallowedGitHosts\x124\n" + - "\x16allow_external_network\x18\v \x01(\bR\x14allowExternalNetwork\x126\n" + - "\x17allow_privileged_builds\x18\f \x01(\bR\x15allowPrivilegedBuilds\x12)\n" + - "\x10blocked_commands\x18\r \x03(\tR\x0fblockedCommands\x12#\n" + - "\rsandbox_level\x18\x0e \x01(\x05R\fsandboxLevel\"\xd8\x03\n" + - "\vBuildConfig\x121\n" + - "\x06tenant\x18\x01 \x01(\v2\x19.builder.v1.TenantContextR\x06tenant\x12/\n" + - "\x06source\x18\x02 \x01(\v2\x17.builder.v1.BuildSourceR\x06source\x12/\n" + - "\x06target\x18\x03 \x01(\v2\x17.builder.v1.BuildTargetR\x06target\x125\n" + - "\bstrategy\x18\x04 \x01(\v2\x19.builder.v1.BuildStrategyR\bstrategy\x128\n" + - "\x06limits\x18\x05 \x01(\v2 .builder.v1.TenantResourceLimitsR\x06limits\x12\x1d\n" + - "\n" + - "build_name\x18\x06 \x01(\tR\tbuildName\x12;\n" + - "\x06labels\x18\a \x03(\v2#.builder.v1.BuildConfig.LabelsEntryR\x06labels\x12,\n" + - "\x12suggested_asset_id\x18\b \x01(\tR\x10suggestedAssetId\x1a9\n" + - "\vLabelsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xdd\x01\n" + - "\x0eBuildIsolation\x12\x1d\n" + - "\n" + - "sandbox_id\x18\x01 \x01(\tR\tsandboxId\x12+\n" + - "\x11network_namespace\x18\x02 \x01(\tR\x10networkNamespace\x121\n" + - "\x14filesystem_namespace\x18\x03 \x01(\tR\x13filesystemNamespace\x12+\n" + - "\x11security_contexts\x18\x04 \x03(\tR\x10securityContexts\x12\x1f\n" + - "\vcgroup_path\x18\x05 \x01(\tR\n" + - "cgroupPath\"\x87\x04\n" + - "\rImageMetadata\x12%\n" + - "\x0eoriginal_image\x18\x01 \x01(\tR\roriginalImage\x12!\n" + - "\fimage_digest\x18\x02 \x01(\tR\vimageDigest\x12\x16\n" + - "\x06layers\x18\x03 \x03(\tR\x06layers\x12=\n" + - "\x06labels\x18\x04 \x03(\v2%.builder.v1.ImageMetadata.LabelsEntryR\x06labels\x12\x18\n" + - "\acommand\x18\x05 \x03(\tR\acommand\x12\x1e\n" + - "\n" + - "entrypoint\x18\x06 \x03(\tR\n" + - "entrypoint\x12\x1f\n" + - "\vworking_dir\x18\a \x01(\tR\n" + - "workingDir\x124\n" + - "\x03env\x18\b \x03(\v2\".builder.v1.ImageMetadata.EnvEntryR\x03env\x12#\n" + - "\rexposed_ports\x18\t \x03(\tR\fexposedPorts\x12\x12\n" + - "\x04user\x18\n" + - " \x01(\tR\x04user\x12\x18\n" + - "\avolumes\x18\v \x03(\tR\avolumes\x1a9\n" + - "\vLabelsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a6\n" + - "\bEnvEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xf7\x03\n" + - "\fBuildMetrics\x12(\n" + - "\x10pull_duration_ms\x18\x01 \x01(\x03R\x0epullDurationMs\x12.\n" + - "\x13extract_duration_ms\x18\x02 \x01(\x03R\x11extractDurationMs\x12*\n" + - "\x11build_duration_ms\x18\x03 \x01(\x03R\x0fbuildDurationMs\x120\n" + - "\x14optimize_duration_ms\x18\x04 \x01(\x03R\x12optimizeDurationMs\x12*\n" + - "\x11total_duration_ms\x18\x05 \x01(\x03R\x0ftotalDurationMs\x12.\n" + - "\x13original_size_bytes\x18\x06 \x01(\x03R\x11originalSizeBytes\x12*\n" + - "\x11rootfs_size_bytes\x18\a \x01(\x03R\x0frootfsSizeBytes\x12+\n" + - "\x11compression_ratio\x18\b \x01(\x03R\x10compressionRatio\x12*\n" + - "\x11memory_peak_bytes\x18\t \x01(\x03R\x0fmemoryPeakBytes\x12(\n" + - "\x10disk_usage_bytes\x18\n" + - " \x01(\x03R\x0ediskUsageBytes\x12$\n" + - "\x0ecpu_cores_used\x18\v \x01(\x05R\fcpuCoresUsed\"\xf1\x05\n" + - "\bBuildJob\x12\x19\n" + - "\bbuild_id\x18\x01 \x01(\tR\abuildId\x12/\n" + - "\x06config\x18\x02 \x01(\v2\x17.builder.v1.BuildConfigR\x06config\x12,\n" + - "\x05state\x18\x03 \x01(\x0e2\x16.builder.v1.BuildStateR\x05state\x129\n" + - "\n" + - "created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + - "\n" + - "started_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" + - "\fcompleted_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\x12\x1f\n" + - "\vrootfs_path\x18\a \x01(\tR\n" + - "rootfsPath\x12*\n" + - "\x11rootfs_size_bytes\x18\b \x01(\x03R\x0frootfsSizeBytes\x12'\n" + - "\x0frootfs_checksum\x18\t \x01(\tR\x0erootfsChecksum\x12@\n" + - "\x0eimage_metadata\x18\n" + - " \x01(\v2\x19.builder.v1.ImageMetadataR\rimageMetadata\x122\n" + - "\ametrics\x18\v \x01(\v2\x18.builder.v1.BuildMetricsR\ametrics\x128\n" + - "\tisolation\x18\f \x01(\v2\x1a.builder.v1.BuildIsolationR\tisolation\x12#\n" + - "\rerror_message\x18\r \x01(\tR\ferrorMessage\x12\x1d\n" + - "\n" + - "build_logs\x18\x0e \x03(\tR\tbuildLogs\x12)\n" + - "\x10progress_percent\x18\x0f \x01(\x05R\x0fprogressPercent\x12!\n" + - "\fcurrent_step\x18\x10 \x01(\tR\vcurrentStep\"\xad\x02\n" + - "\x17StreamBuildLogsResponse\x128\n" + - "\ttimestamp\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12\x14\n" + - "\x05level\x18\x02 \x01(\tR\x05level\x12\x18\n" + - "\amessage\x18\x03 \x01(\tR\amessage\x12\x1c\n" + - "\tcomponent\x18\x04 \x01(\tR\tcomponent\x12M\n" + - "\bmetadata\x18\x05 \x03(\v21.builder.v1.StreamBuildLogsResponse.MetadataEntryR\bmetadata\x1a;\n" + - "\rMetadataEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xce\x02\n" + - "\x10TenantUsageStats\x12#\n" + - "\ractive_builds\x18\x01 \x01(\x05R\factiveBuilds\x12*\n" + - "\x11daily_builds_used\x18\x02 \x01(\x05R\x0fdailyBuildsUsed\x12,\n" + - "\x12storage_bytes_used\x18\x03 \x01(\x03R\x10storageBytesUsed\x120\n" + - "\x14compute_minutes_used\x18\x04 \x01(\x03R\x12computeMinutesUsed\x12#\n" + - "\rbuilds_queued\x18\x05 \x01(\x05R\fbuildsQueued\x124\n" + - "\x16builds_completed_today\x18\x06 \x01(\x05R\x14buildsCompletedToday\x12.\n" + - "\x13builds_failed_today\x18\a \x01(\x05R\x11buildsFailedToday\"\x8f\x01\n" + - "\x0eQuotaViolation\x12\x1d\n" + - "\n" + - "quota_type\x18\x01 \x01(\tR\tquotaType\x12#\n" + - "\rcurrent_value\x18\x02 \x01(\x03R\fcurrentValue\x12\x1f\n" + - "\vlimit_value\x18\x03 \x01(\x03R\n" + - "limitValue\x12\x18\n" + - "\amessage\x18\x04 \x01(\tR\amessage\"E\n" + - "\x12CreateBuildRequest\x12/\n" + - "\x06config\x18\x01 \x01(\v2\x17.builder.v1.BuildConfigR\x06config\"\xba\x01\n" + - "\x13CreateBuildResponse\x12\x19\n" + - "\bbuild_id\x18\x01 \x01(\tR\abuildId\x12,\n" + - "\x05state\x18\x02 \x01(\x0e2\x16.builder.v1.BuildStateR\x05state\x129\n" + - "\n" + - "created_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x1f\n" + - "\vrootfs_path\x18\x04 \x01(\tR\n" + - "rootfsPath\"I\n" + - "\x0fGetBuildRequest\x12\x19\n" + - "\bbuild_id\x18\x01 \x01(\tR\abuildId\x12\x1b\n" + - "\ttenant_id\x18\x02 \x01(\tR\btenantId\">\n" + - "\x10GetBuildResponse\x12*\n" + - "\x05build\x18\x01 \x01(\v2\x14.builder.v1.BuildJobR\x05build\"\xa7\x01\n" + - "\x11ListBuildsRequest\x12\x1b\n" + - "\ttenant_id\x18\x01 \x01(\tR\btenantId\x129\n" + - "\fstate_filter\x18\x02 \x03(\x0e2\x16.builder.v1.BuildStateR\vstateFilter\x12\x1b\n" + - "\tpage_size\x18\x03 \x01(\x05R\bpageSize\x12\x1d\n" + - "\n" + - "page_token\x18\x04 \x01(\tR\tpageToken\"\x8b\x01\n" + - "\x12ListBuildsResponse\x12,\n" + - "\x06builds\x18\x01 \x03(\v2\x14.builder.v1.BuildJobR\x06builds\x12&\n" + - "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12\x1f\n" + - "\vtotal_count\x18\x03 \x01(\x05R\n" + - "totalCount\"L\n" + - "\x12CancelBuildRequest\x12\x19\n" + - "\bbuild_id\x18\x01 \x01(\tR\abuildId\x12\x1b\n" + - "\ttenant_id\x18\x02 \x01(\tR\btenantId\"]\n" + - "\x13CancelBuildResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12,\n" + - "\x05state\x18\x02 \x01(\x0e2\x16.builder.v1.BuildStateR\x05state\"b\n" + - "\x12DeleteBuildRequest\x12\x19\n" + - "\bbuild_id\x18\x01 \x01(\tR\abuildId\x12\x1b\n" + - "\ttenant_id\x18\x02 \x01(\tR\btenantId\x12\x14\n" + - "\x05force\x18\x03 \x01(\bR\x05force\"/\n" + - "\x13DeleteBuildResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\"h\n" + - "\x16StreamBuildLogsRequest\x12\x19\n" + - "\bbuild_id\x18\x01 \x01(\tR\abuildId\x12\x1b\n" + - "\ttenant_id\x18\x02 \x01(\tR\btenantId\x12\x16\n" + - "\x06follow\x18\x03 \x01(\bR\x06follow\"5\n" + - "\x16GetTenantQuotasRequest\x12\x1b\n" + - "\ttenant_id\x18\x01 \x01(\tR\btenantId\"\xe1\x01\n" + - "\x17GetTenantQuotasResponse\x12G\n" + - "\x0ecurrent_limits\x18\x01 \x01(\v2 .builder.v1.TenantResourceLimitsR\rcurrentLimits\x12A\n" + - "\rcurrent_usage\x18\x02 \x01(\v2\x1c.builder.v1.TenantUsageStatsR\fcurrentUsage\x12:\n" + - "\n" + - "violations\x18\x03 \x03(\v2\x1a.builder.v1.QuotaViolationR\n" + - "violations\"\xa5\x01\n" + - "\x14GetBuildStatsRequest\x12\x1b\n" + - "\ttenant_id\x18\x01 \x01(\tR\btenantId\x129\n" + - "\n" + - "start_time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tstartTime\x125\n" + - "\bend_time\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\aendTime\"\xd6\x02\n" + - "\x15GetBuildStatsResponse\x12!\n" + - "\ftotal_builds\x18\x01 \x01(\x05R\vtotalBuilds\x12+\n" + - "\x11successful_builds\x18\x02 \x01(\x05R\x10successfulBuilds\x12#\n" + - "\rfailed_builds\x18\x03 \x01(\x05R\ffailedBuilds\x12)\n" + - "\x11avg_build_time_ms\x18\x04 \x01(\x03R\x0eavgBuildTimeMs\x12.\n" + - "\x13total_storage_bytes\x18\x05 \x01(\x03R\x11totalStorageBytes\x122\n" + - "\x15total_compute_minutes\x18\x06 \x01(\x03R\x13totalComputeMinutes\x129\n" + - "\rrecent_builds\x18\a \x03(\v2\x14.builder.v1.BuildJobR\frecentBuilds*\x95\x02\n" + - "\n" + - "BuildState\x12\x1b\n" + - "\x17BUILD_STATE_UNSPECIFIED\x10\x00\x12\x17\n" + - "\x13BUILD_STATE_PENDING\x10\x01\x12\x17\n" + - "\x13BUILD_STATE_PULLING\x10\x02\x12\x1a\n" + - "\x16BUILD_STATE_EXTRACTING\x10\x03\x12\x18\n" + - "\x14BUILD_STATE_BUILDING\x10\x04\x12\x1a\n" + - "\x16BUILD_STATE_OPTIMIZING\x10\x05\x12\x19\n" + - "\x15BUILD_STATE_COMPLETED\x10\x06\x12\x16\n" + - "\x12BUILD_STATE_FAILED\x10\a\x12\x19\n" + - "\x15BUILD_STATE_CANCELLED\x10\b\x12\x18\n" + - "\x14BUILD_STATE_CLEANING\x10\t*\x8b\x01\n" + - "\n" + - "TenantTier\x12\x1b\n" + - "\x17TENANT_TIER_UNSPECIFIED\x10\x00\x12\x14\n" + - "\x10TENANT_TIER_FREE\x10\x01\x12\x13\n" + - "\x0fTENANT_TIER_PRO\x10\x02\x12\x1a\n" + - "\x16TENANT_TIER_ENTERPRISE\x10\x03\x12\x19\n" + - "\x15TENANT_TIER_DEDICATED\x10\x04*y\n" + - "\fInitStrategy\x12\x1d\n" + - "\x19INIT_STRATEGY_UNSPECIFIED\x10\x00\x12\x16\n" + - "\x12INIT_STRATEGY_TINI\x10\x01\x12\x18\n" + - "\x14INIT_STRATEGY_DIRECT\x10\x02\x12\x18\n" + - "\x14INIT_STRATEGY_CUSTOM\x10\x032\xa4\x05\n" + - "\x0eBuilderService\x12N\n" + - "\vCreateBuild\x12\x1e.builder.v1.CreateBuildRequest\x1a\x1f.builder.v1.CreateBuildResponse\x12E\n" + - "\bGetBuild\x12\x1b.builder.v1.GetBuildRequest\x1a\x1c.builder.v1.GetBuildResponse\x12K\n" + - "\n" + - "ListBuilds\x12\x1d.builder.v1.ListBuildsRequest\x1a\x1e.builder.v1.ListBuildsResponse\x12N\n" + - "\vCancelBuild\x12\x1e.builder.v1.CancelBuildRequest\x1a\x1f.builder.v1.CancelBuildResponse\x12N\n" + - "\vDeleteBuild\x12\x1e.builder.v1.DeleteBuildRequest\x1a\x1f.builder.v1.DeleteBuildResponse\x12\\\n" + - "\x0fStreamBuildLogs\x12\".builder.v1.StreamBuildLogsRequest\x1a#.builder.v1.StreamBuildLogsResponse0\x01\x12Z\n" + - "\x0fGetTenantQuotas\x12\".builder.v1.GetTenantQuotasRequest\x1a#.builder.v1.GetTenantQuotasResponse\x12T\n" + - "\rGetBuildStats\x12 .builder.v1.GetBuildStatsRequest\x1a!.builder.v1.GetBuildStatsResponseBFZDgithub.com/unkeyed/unkey/go/deploy/builderd/gen/builder/v1;builderv1b\x06proto3" - -var ( - file_deploy_builderd_proto_builder_v1_builder_proto_rawDescOnce sync.Once - file_deploy_builderd_proto_builder_v1_builder_proto_rawDescData []byte -) - -func file_deploy_builderd_proto_builder_v1_builder_proto_rawDescGZIP() []byte { - file_deploy_builderd_proto_builder_v1_builder_proto_rawDescOnce.Do(func() { - file_deploy_builderd_proto_builder_v1_builder_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_deploy_builderd_proto_builder_v1_builder_proto_rawDesc), len(file_deploy_builderd_proto_builder_v1_builder_proto_rawDesc))) - }) - return file_deploy_builderd_proto_builder_v1_builder_proto_rawDescData -} - -var file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes = make([]protoimpl.MessageInfo, 48) -var file_deploy_builderd_proto_builder_v1_builder_proto_goTypes = []any{ - (BuildState)(0), // 0: builder.v1.BuildState - (TenantTier)(0), // 1: builder.v1.TenantTier - (InitStrategy)(0), // 2: builder.v1.InitStrategy - (*TenantContext)(nil), // 3: builder.v1.TenantContext - (*BuildSource)(nil), // 4: builder.v1.BuildSource - (*DockerImageSource)(nil), // 5: builder.v1.DockerImageSource - (*DockerAuth)(nil), // 6: builder.v1.DockerAuth - (*GitRepositorySource)(nil), // 7: builder.v1.GitRepositorySource - (*GitAuth)(nil), // 8: builder.v1.GitAuth - (*ArchiveSource)(nil), // 9: builder.v1.ArchiveSource - (*BuildTarget)(nil), // 10: builder.v1.BuildTarget - (*MicroVMRootfs)(nil), // 11: builder.v1.MicroVMRootfs - (*ContainerImage)(nil), // 12: builder.v1.ContainerImage - (*RuntimeConfig)(nil), // 13: builder.v1.RuntimeConfig - (*OptimizationSettings)(nil), // 14: builder.v1.OptimizationSettings - (*BuildStrategy)(nil), // 15: builder.v1.BuildStrategy - (*DockerExtractStrategy)(nil), // 16: builder.v1.DockerExtractStrategy - (*GoApiStrategy)(nil), // 17: builder.v1.GoApiStrategy - (*SinatraStrategy)(nil), // 18: builder.v1.SinatraStrategy - (*NodejsStrategy)(nil), // 19: builder.v1.NodejsStrategy - (*TenantResourceLimits)(nil), // 20: builder.v1.TenantResourceLimits - (*BuildConfig)(nil), // 21: builder.v1.BuildConfig - (*BuildIsolation)(nil), // 22: builder.v1.BuildIsolation - (*ImageMetadata)(nil), // 23: builder.v1.ImageMetadata - (*BuildMetrics)(nil), // 24: builder.v1.BuildMetrics - (*BuildJob)(nil), // 25: builder.v1.BuildJob - (*StreamBuildLogsResponse)(nil), // 26: builder.v1.StreamBuildLogsResponse - (*TenantUsageStats)(nil), // 27: builder.v1.TenantUsageStats - (*QuotaViolation)(nil), // 28: builder.v1.QuotaViolation - (*CreateBuildRequest)(nil), // 29: builder.v1.CreateBuildRequest - (*CreateBuildResponse)(nil), // 30: builder.v1.CreateBuildResponse - (*GetBuildRequest)(nil), // 31: builder.v1.GetBuildRequest - (*GetBuildResponse)(nil), // 32: builder.v1.GetBuildResponse - (*ListBuildsRequest)(nil), // 33: builder.v1.ListBuildsRequest - (*ListBuildsResponse)(nil), // 34: builder.v1.ListBuildsResponse - (*CancelBuildRequest)(nil), // 35: builder.v1.CancelBuildRequest - (*CancelBuildResponse)(nil), // 36: builder.v1.CancelBuildResponse - (*DeleteBuildRequest)(nil), // 37: builder.v1.DeleteBuildRequest - (*DeleteBuildResponse)(nil), // 38: builder.v1.DeleteBuildResponse - (*StreamBuildLogsRequest)(nil), // 39: builder.v1.StreamBuildLogsRequest - (*GetTenantQuotasRequest)(nil), // 40: builder.v1.GetTenantQuotasRequest - (*GetTenantQuotasResponse)(nil), // 41: builder.v1.GetTenantQuotasResponse - (*GetBuildStatsRequest)(nil), // 42: builder.v1.GetBuildStatsRequest - (*GetBuildStatsResponse)(nil), // 43: builder.v1.GetBuildStatsResponse - nil, // 44: builder.v1.TenantContext.MetadataEntry - nil, // 45: builder.v1.RuntimeConfig.EnvironmentEntry - nil, // 46: builder.v1.SinatraStrategy.RackConfigEntry - nil, // 47: builder.v1.BuildConfig.LabelsEntry - nil, // 48: builder.v1.ImageMetadata.LabelsEntry - nil, // 49: builder.v1.ImageMetadata.EnvEntry - nil, // 50: builder.v1.StreamBuildLogsResponse.MetadataEntry - (*timestamppb.Timestamp)(nil), // 51: google.protobuf.Timestamp -} -var file_deploy_builderd_proto_builder_v1_builder_proto_depIdxs = []int32{ - 1, // 0: builder.v1.TenantContext.tier:type_name -> builder.v1.TenantTier - 44, // 1: builder.v1.TenantContext.metadata:type_name -> builder.v1.TenantContext.MetadataEntry - 5, // 2: builder.v1.BuildSource.docker_image:type_name -> builder.v1.DockerImageSource - 7, // 3: builder.v1.BuildSource.git_repository:type_name -> builder.v1.GitRepositorySource - 9, // 4: builder.v1.BuildSource.archive:type_name -> builder.v1.ArchiveSource - 6, // 5: builder.v1.DockerImageSource.auth:type_name -> builder.v1.DockerAuth - 8, // 6: builder.v1.GitRepositorySource.auth:type_name -> builder.v1.GitAuth - 11, // 7: builder.v1.BuildTarget.microvm_rootfs:type_name -> builder.v1.MicroVMRootfs - 12, // 8: builder.v1.BuildTarget.container_image:type_name -> builder.v1.ContainerImage - 2, // 9: builder.v1.MicroVMRootfs.init_strategy:type_name -> builder.v1.InitStrategy - 13, // 10: builder.v1.MicroVMRootfs.runtime_config:type_name -> builder.v1.RuntimeConfig - 14, // 11: builder.v1.MicroVMRootfs.optimization:type_name -> builder.v1.OptimizationSettings - 45, // 12: builder.v1.RuntimeConfig.environment:type_name -> builder.v1.RuntimeConfig.EnvironmentEntry - 16, // 13: builder.v1.BuildStrategy.docker_extract:type_name -> builder.v1.DockerExtractStrategy - 17, // 14: builder.v1.BuildStrategy.go_api:type_name -> builder.v1.GoApiStrategy - 18, // 15: builder.v1.BuildStrategy.sinatra:type_name -> builder.v1.SinatraStrategy - 19, // 16: builder.v1.BuildStrategy.nodejs:type_name -> builder.v1.NodejsStrategy - 46, // 17: builder.v1.SinatraStrategy.rack_config:type_name -> builder.v1.SinatraStrategy.RackConfigEntry - 3, // 18: builder.v1.BuildConfig.tenant:type_name -> builder.v1.TenantContext - 4, // 19: builder.v1.BuildConfig.source:type_name -> builder.v1.BuildSource - 10, // 20: builder.v1.BuildConfig.target:type_name -> builder.v1.BuildTarget - 15, // 21: builder.v1.BuildConfig.strategy:type_name -> builder.v1.BuildStrategy - 20, // 22: builder.v1.BuildConfig.limits:type_name -> builder.v1.TenantResourceLimits - 47, // 23: builder.v1.BuildConfig.labels:type_name -> builder.v1.BuildConfig.LabelsEntry - 48, // 24: builder.v1.ImageMetadata.labels:type_name -> builder.v1.ImageMetadata.LabelsEntry - 49, // 25: builder.v1.ImageMetadata.env:type_name -> builder.v1.ImageMetadata.EnvEntry - 21, // 26: builder.v1.BuildJob.config:type_name -> builder.v1.BuildConfig - 0, // 27: builder.v1.BuildJob.state:type_name -> builder.v1.BuildState - 51, // 28: builder.v1.BuildJob.created_at:type_name -> google.protobuf.Timestamp - 51, // 29: builder.v1.BuildJob.started_at:type_name -> google.protobuf.Timestamp - 51, // 30: builder.v1.BuildJob.completed_at:type_name -> google.protobuf.Timestamp - 23, // 31: builder.v1.BuildJob.image_metadata:type_name -> builder.v1.ImageMetadata - 24, // 32: builder.v1.BuildJob.metrics:type_name -> builder.v1.BuildMetrics - 22, // 33: builder.v1.BuildJob.isolation:type_name -> builder.v1.BuildIsolation - 51, // 34: builder.v1.StreamBuildLogsResponse.timestamp:type_name -> google.protobuf.Timestamp - 50, // 35: builder.v1.StreamBuildLogsResponse.metadata:type_name -> builder.v1.StreamBuildLogsResponse.MetadataEntry - 21, // 36: builder.v1.CreateBuildRequest.config:type_name -> builder.v1.BuildConfig - 0, // 37: builder.v1.CreateBuildResponse.state:type_name -> builder.v1.BuildState - 51, // 38: builder.v1.CreateBuildResponse.created_at:type_name -> google.protobuf.Timestamp - 25, // 39: builder.v1.GetBuildResponse.build:type_name -> builder.v1.BuildJob - 0, // 40: builder.v1.ListBuildsRequest.state_filter:type_name -> builder.v1.BuildState - 25, // 41: builder.v1.ListBuildsResponse.builds:type_name -> builder.v1.BuildJob - 0, // 42: builder.v1.CancelBuildResponse.state:type_name -> builder.v1.BuildState - 20, // 43: builder.v1.GetTenantQuotasResponse.current_limits:type_name -> builder.v1.TenantResourceLimits - 27, // 44: builder.v1.GetTenantQuotasResponse.current_usage:type_name -> builder.v1.TenantUsageStats - 28, // 45: builder.v1.GetTenantQuotasResponse.violations:type_name -> builder.v1.QuotaViolation - 51, // 46: builder.v1.GetBuildStatsRequest.start_time:type_name -> google.protobuf.Timestamp - 51, // 47: builder.v1.GetBuildStatsRequest.end_time:type_name -> google.protobuf.Timestamp - 25, // 48: builder.v1.GetBuildStatsResponse.recent_builds:type_name -> builder.v1.BuildJob - 29, // 49: builder.v1.BuilderService.CreateBuild:input_type -> builder.v1.CreateBuildRequest - 31, // 50: builder.v1.BuilderService.GetBuild:input_type -> builder.v1.GetBuildRequest - 33, // 51: builder.v1.BuilderService.ListBuilds:input_type -> builder.v1.ListBuildsRequest - 35, // 52: builder.v1.BuilderService.CancelBuild:input_type -> builder.v1.CancelBuildRequest - 37, // 53: builder.v1.BuilderService.DeleteBuild:input_type -> builder.v1.DeleteBuildRequest - 39, // 54: builder.v1.BuilderService.StreamBuildLogs:input_type -> builder.v1.StreamBuildLogsRequest - 40, // 55: builder.v1.BuilderService.GetTenantQuotas:input_type -> builder.v1.GetTenantQuotasRequest - 42, // 56: builder.v1.BuilderService.GetBuildStats:input_type -> builder.v1.GetBuildStatsRequest - 30, // 57: builder.v1.BuilderService.CreateBuild:output_type -> builder.v1.CreateBuildResponse - 32, // 58: builder.v1.BuilderService.GetBuild:output_type -> builder.v1.GetBuildResponse - 34, // 59: builder.v1.BuilderService.ListBuilds:output_type -> builder.v1.ListBuildsResponse - 36, // 60: builder.v1.BuilderService.CancelBuild:output_type -> builder.v1.CancelBuildResponse - 38, // 61: builder.v1.BuilderService.DeleteBuild:output_type -> builder.v1.DeleteBuildResponse - 26, // 62: builder.v1.BuilderService.StreamBuildLogs:output_type -> builder.v1.StreamBuildLogsResponse - 41, // 63: builder.v1.BuilderService.GetTenantQuotas:output_type -> builder.v1.GetTenantQuotasResponse - 43, // 64: builder.v1.BuilderService.GetBuildStats:output_type -> builder.v1.GetBuildStatsResponse - 57, // [57:65] is the sub-list for method output_type - 49, // [49:57] is the sub-list for method input_type - 49, // [49:49] is the sub-list for extension type_name - 49, // [49:49] is the sub-list for extension extendee - 0, // [0:49] is the sub-list for field type_name -} - -func init() { file_deploy_builderd_proto_builder_v1_builder_proto_init() } -func file_deploy_builderd_proto_builder_v1_builder_proto_init() { - if File_deploy_builderd_proto_builder_v1_builder_proto != nil { - return - } - file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[1].OneofWrappers = []any{ - (*BuildSource_DockerImage)(nil), - (*BuildSource_GitRepository)(nil), - (*BuildSource_Archive)(nil), - } - file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[7].OneofWrappers = []any{ - (*BuildTarget_MicrovmRootfs)(nil), - (*BuildTarget_ContainerImage)(nil), - } - file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes[12].OneofWrappers = []any{ - (*BuildStrategy_DockerExtract)(nil), - (*BuildStrategy_GoApi)(nil), - (*BuildStrategy_Sinatra)(nil), - (*BuildStrategy_Nodejs)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_deploy_builderd_proto_builder_v1_builder_proto_rawDesc), len(file_deploy_builderd_proto_builder_v1_builder_proto_rawDesc)), - NumEnums: 3, - NumMessages: 48, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_deploy_builderd_proto_builder_v1_builder_proto_goTypes, - DependencyIndexes: file_deploy_builderd_proto_builder_v1_builder_proto_depIdxs, - EnumInfos: file_deploy_builderd_proto_builder_v1_builder_proto_enumTypes, - MessageInfos: file_deploy_builderd_proto_builder_v1_builder_proto_msgTypes, - }.Build() - File_deploy_builderd_proto_builder_v1_builder_proto = out.File - file_deploy_builderd_proto_builder_v1_builder_proto_goTypes = nil - file_deploy_builderd_proto_builder_v1_builder_proto_depIdxs = nil -} diff --git a/go/gen/deploy/builderd/proto/builder/v1/builderv1connect/builder.connect.go b/go/gen/deploy/builderd/proto/builder/v1/builderv1connect/builder.connect.go deleted file mode 100644 index b317edf9c8..0000000000 --- a/go/gen/deploy/builderd/proto/builder/v1/builderv1connect/builder.connect.go +++ /dev/null @@ -1,338 +0,0 @@ -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: deploy/builderd/proto/builder/v1/builder.proto - -package builderv1connect - -import ( - connect "connectrpc.com/connect" - context "context" - errors "errors" - v1 "github.com/unkeyed/unkey/go/deploy/builderd/gen/builder/v1" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect.IsAtLeastVersion1_13_0 - -const ( - // BuilderServiceName is the fully-qualified name of the BuilderService service. - BuilderServiceName = "builder.v1.BuilderService" -) - -// These constants are the fully-qualified names of the RPCs defined in this package. They're -// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. -// -// Note that these are different from the fully-qualified method names used by -// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to -// reflection-formatted method names, remove the leading slash and convert the remaining slash to a -// period. -const ( - // BuilderServiceCreateBuildProcedure is the fully-qualified name of the BuilderService's - // CreateBuild RPC. - BuilderServiceCreateBuildProcedure = "/builder.v1.BuilderService/CreateBuild" - // BuilderServiceGetBuildProcedure is the fully-qualified name of the BuilderService's GetBuild RPC. - BuilderServiceGetBuildProcedure = "/builder.v1.BuilderService/GetBuild" - // BuilderServiceListBuildsProcedure is the fully-qualified name of the BuilderService's ListBuilds - // RPC. - BuilderServiceListBuildsProcedure = "/builder.v1.BuilderService/ListBuilds" - // BuilderServiceCancelBuildProcedure is the fully-qualified name of the BuilderService's - // CancelBuild RPC. - BuilderServiceCancelBuildProcedure = "/builder.v1.BuilderService/CancelBuild" - // BuilderServiceDeleteBuildProcedure is the fully-qualified name of the BuilderService's - // DeleteBuild RPC. - BuilderServiceDeleteBuildProcedure = "/builder.v1.BuilderService/DeleteBuild" - // BuilderServiceStreamBuildLogsProcedure is the fully-qualified name of the BuilderService's - // StreamBuildLogs RPC. - BuilderServiceStreamBuildLogsProcedure = "/builder.v1.BuilderService/StreamBuildLogs" - // BuilderServiceGetTenantQuotasProcedure is the fully-qualified name of the BuilderService's - // GetTenantQuotas RPC. - BuilderServiceGetTenantQuotasProcedure = "/builder.v1.BuilderService/GetTenantQuotas" - // BuilderServiceGetBuildStatsProcedure is the fully-qualified name of the BuilderService's - // GetBuildStats RPC. - BuilderServiceGetBuildStatsProcedure = "/builder.v1.BuilderService/GetBuildStats" -) - -// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. -var ( - builderServiceServiceDescriptor = v1.File_deploy_builderd_proto_builder_v1_builder_proto.Services().ByName("BuilderService") - builderServiceCreateBuildMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("CreateBuild") - builderServiceGetBuildMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("GetBuild") - builderServiceListBuildsMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("ListBuilds") - builderServiceCancelBuildMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("CancelBuild") - builderServiceDeleteBuildMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("DeleteBuild") - builderServiceStreamBuildLogsMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("StreamBuildLogs") - builderServiceGetTenantQuotasMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("GetTenantQuotas") - builderServiceGetBuildStatsMethodDescriptor = builderServiceServiceDescriptor.Methods().ByName("GetBuildStats") -) - -// BuilderServiceClient is a client for the builder.v1.BuilderService service. -type BuilderServiceClient interface { - // Create a new build job - CreateBuild(context.Context, *connect.Request[v1.CreateBuildRequest]) (*connect.Response[v1.CreateBuildResponse], error) - // Get build status and progress - GetBuild(context.Context, *connect.Request[v1.GetBuildRequest]) (*connect.Response[v1.GetBuildResponse], error) - // List builds with filtering (tenant-scoped) - ListBuilds(context.Context, *connect.Request[v1.ListBuildsRequest]) (*connect.Response[v1.ListBuildsResponse], error) - // Cancel a running build - CancelBuild(context.Context, *connect.Request[v1.CancelBuildRequest]) (*connect.Response[v1.CancelBuildResponse], error) - // Delete a build and its artifacts - DeleteBuild(context.Context, *connect.Request[v1.DeleteBuildRequest]) (*connect.Response[v1.DeleteBuildResponse], error) - // Stream build logs in real-time - StreamBuildLogs(context.Context, *connect.Request[v1.StreamBuildLogsRequest]) (*connect.ServerStreamForClient[v1.StreamBuildLogsResponse], error) - // Get tenant quotas and usage - GetTenantQuotas(context.Context, *connect.Request[v1.GetTenantQuotasRequest]) (*connect.Response[v1.GetTenantQuotasResponse], error) - // Get build statistics - GetBuildStats(context.Context, *connect.Request[v1.GetBuildStatsRequest]) (*connect.Response[v1.GetBuildStatsResponse], error) -} - -// NewBuilderServiceClient constructs a client for the builder.v1.BuilderService service. By -// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, -// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the -// connect.WithGRPC() or connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewBuilderServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) BuilderServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - return &builderServiceClient{ - createBuild: connect.NewClient[v1.CreateBuildRequest, v1.CreateBuildResponse]( - httpClient, - baseURL+BuilderServiceCreateBuildProcedure, - connect.WithSchema(builderServiceCreateBuildMethodDescriptor), - connect.WithClientOptions(opts...), - ), - getBuild: connect.NewClient[v1.GetBuildRequest, v1.GetBuildResponse]( - httpClient, - baseURL+BuilderServiceGetBuildProcedure, - connect.WithSchema(builderServiceGetBuildMethodDescriptor), - connect.WithClientOptions(opts...), - ), - listBuilds: connect.NewClient[v1.ListBuildsRequest, v1.ListBuildsResponse]( - httpClient, - baseURL+BuilderServiceListBuildsProcedure, - connect.WithSchema(builderServiceListBuildsMethodDescriptor), - connect.WithClientOptions(opts...), - ), - cancelBuild: connect.NewClient[v1.CancelBuildRequest, v1.CancelBuildResponse]( - httpClient, - baseURL+BuilderServiceCancelBuildProcedure, - connect.WithSchema(builderServiceCancelBuildMethodDescriptor), - connect.WithClientOptions(opts...), - ), - deleteBuild: connect.NewClient[v1.DeleteBuildRequest, v1.DeleteBuildResponse]( - httpClient, - baseURL+BuilderServiceDeleteBuildProcedure, - connect.WithSchema(builderServiceDeleteBuildMethodDescriptor), - connect.WithClientOptions(opts...), - ), - streamBuildLogs: connect.NewClient[v1.StreamBuildLogsRequest, v1.StreamBuildLogsResponse]( - httpClient, - baseURL+BuilderServiceStreamBuildLogsProcedure, - connect.WithSchema(builderServiceStreamBuildLogsMethodDescriptor), - connect.WithClientOptions(opts...), - ), - getTenantQuotas: connect.NewClient[v1.GetTenantQuotasRequest, v1.GetTenantQuotasResponse]( - httpClient, - baseURL+BuilderServiceGetTenantQuotasProcedure, - connect.WithSchema(builderServiceGetTenantQuotasMethodDescriptor), - connect.WithClientOptions(opts...), - ), - getBuildStats: connect.NewClient[v1.GetBuildStatsRequest, v1.GetBuildStatsResponse]( - httpClient, - baseURL+BuilderServiceGetBuildStatsProcedure, - connect.WithSchema(builderServiceGetBuildStatsMethodDescriptor), - connect.WithClientOptions(opts...), - ), - } -} - -// builderServiceClient implements BuilderServiceClient. -type builderServiceClient struct { - createBuild *connect.Client[v1.CreateBuildRequest, v1.CreateBuildResponse] - getBuild *connect.Client[v1.GetBuildRequest, v1.GetBuildResponse] - listBuilds *connect.Client[v1.ListBuildsRequest, v1.ListBuildsResponse] - cancelBuild *connect.Client[v1.CancelBuildRequest, v1.CancelBuildResponse] - deleteBuild *connect.Client[v1.DeleteBuildRequest, v1.DeleteBuildResponse] - streamBuildLogs *connect.Client[v1.StreamBuildLogsRequest, v1.StreamBuildLogsResponse] - getTenantQuotas *connect.Client[v1.GetTenantQuotasRequest, v1.GetTenantQuotasResponse] - getBuildStats *connect.Client[v1.GetBuildStatsRequest, v1.GetBuildStatsResponse] -} - -// CreateBuild calls builder.v1.BuilderService.CreateBuild. -func (c *builderServiceClient) CreateBuild(ctx context.Context, req *connect.Request[v1.CreateBuildRequest]) (*connect.Response[v1.CreateBuildResponse], error) { - return c.createBuild.CallUnary(ctx, req) -} - -// GetBuild calls builder.v1.BuilderService.GetBuild. -func (c *builderServiceClient) GetBuild(ctx context.Context, req *connect.Request[v1.GetBuildRequest]) (*connect.Response[v1.GetBuildResponse], error) { - return c.getBuild.CallUnary(ctx, req) -} - -// ListBuilds calls builder.v1.BuilderService.ListBuilds. -func (c *builderServiceClient) ListBuilds(ctx context.Context, req *connect.Request[v1.ListBuildsRequest]) (*connect.Response[v1.ListBuildsResponse], error) { - return c.listBuilds.CallUnary(ctx, req) -} - -// CancelBuild calls builder.v1.BuilderService.CancelBuild. -func (c *builderServiceClient) CancelBuild(ctx context.Context, req *connect.Request[v1.CancelBuildRequest]) (*connect.Response[v1.CancelBuildResponse], error) { - return c.cancelBuild.CallUnary(ctx, req) -} - -// DeleteBuild calls builder.v1.BuilderService.DeleteBuild. -func (c *builderServiceClient) DeleteBuild(ctx context.Context, req *connect.Request[v1.DeleteBuildRequest]) (*connect.Response[v1.DeleteBuildResponse], error) { - return c.deleteBuild.CallUnary(ctx, req) -} - -// StreamBuildLogs calls builder.v1.BuilderService.StreamBuildLogs. -func (c *builderServiceClient) StreamBuildLogs(ctx context.Context, req *connect.Request[v1.StreamBuildLogsRequest]) (*connect.ServerStreamForClient[v1.StreamBuildLogsResponse], error) { - return c.streamBuildLogs.CallServerStream(ctx, req) -} - -// GetTenantQuotas calls builder.v1.BuilderService.GetTenantQuotas. -func (c *builderServiceClient) GetTenantQuotas(ctx context.Context, req *connect.Request[v1.GetTenantQuotasRequest]) (*connect.Response[v1.GetTenantQuotasResponse], error) { - return c.getTenantQuotas.CallUnary(ctx, req) -} - -// GetBuildStats calls builder.v1.BuilderService.GetBuildStats. -func (c *builderServiceClient) GetBuildStats(ctx context.Context, req *connect.Request[v1.GetBuildStatsRequest]) (*connect.Response[v1.GetBuildStatsResponse], error) { - return c.getBuildStats.CallUnary(ctx, req) -} - -// BuilderServiceHandler is an implementation of the builder.v1.BuilderService service. -type BuilderServiceHandler interface { - // Create a new build job - CreateBuild(context.Context, *connect.Request[v1.CreateBuildRequest]) (*connect.Response[v1.CreateBuildResponse], error) - // Get build status and progress - GetBuild(context.Context, *connect.Request[v1.GetBuildRequest]) (*connect.Response[v1.GetBuildResponse], error) - // List builds with filtering (tenant-scoped) - ListBuilds(context.Context, *connect.Request[v1.ListBuildsRequest]) (*connect.Response[v1.ListBuildsResponse], error) - // Cancel a running build - CancelBuild(context.Context, *connect.Request[v1.CancelBuildRequest]) (*connect.Response[v1.CancelBuildResponse], error) - // Delete a build and its artifacts - DeleteBuild(context.Context, *connect.Request[v1.DeleteBuildRequest]) (*connect.Response[v1.DeleteBuildResponse], error) - // Stream build logs in real-time - StreamBuildLogs(context.Context, *connect.Request[v1.StreamBuildLogsRequest], *connect.ServerStream[v1.StreamBuildLogsResponse]) error - // Get tenant quotas and usage - GetTenantQuotas(context.Context, *connect.Request[v1.GetTenantQuotasRequest]) (*connect.Response[v1.GetTenantQuotasResponse], error) - // Get build statistics - GetBuildStats(context.Context, *connect.Request[v1.GetBuildStatsRequest]) (*connect.Response[v1.GetBuildStatsResponse], error) -} - -// NewBuilderServiceHandler builds an HTTP handler from the service implementation. It returns the -// path on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewBuilderServiceHandler(svc BuilderServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - builderServiceCreateBuildHandler := connect.NewUnaryHandler( - BuilderServiceCreateBuildProcedure, - svc.CreateBuild, - connect.WithSchema(builderServiceCreateBuildMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - builderServiceGetBuildHandler := connect.NewUnaryHandler( - BuilderServiceGetBuildProcedure, - svc.GetBuild, - connect.WithSchema(builderServiceGetBuildMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - builderServiceListBuildsHandler := connect.NewUnaryHandler( - BuilderServiceListBuildsProcedure, - svc.ListBuilds, - connect.WithSchema(builderServiceListBuildsMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - builderServiceCancelBuildHandler := connect.NewUnaryHandler( - BuilderServiceCancelBuildProcedure, - svc.CancelBuild, - connect.WithSchema(builderServiceCancelBuildMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - builderServiceDeleteBuildHandler := connect.NewUnaryHandler( - BuilderServiceDeleteBuildProcedure, - svc.DeleteBuild, - connect.WithSchema(builderServiceDeleteBuildMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - builderServiceStreamBuildLogsHandler := connect.NewServerStreamHandler( - BuilderServiceStreamBuildLogsProcedure, - svc.StreamBuildLogs, - connect.WithSchema(builderServiceStreamBuildLogsMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - builderServiceGetTenantQuotasHandler := connect.NewUnaryHandler( - BuilderServiceGetTenantQuotasProcedure, - svc.GetTenantQuotas, - connect.WithSchema(builderServiceGetTenantQuotasMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - builderServiceGetBuildStatsHandler := connect.NewUnaryHandler( - BuilderServiceGetBuildStatsProcedure, - svc.GetBuildStats, - connect.WithSchema(builderServiceGetBuildStatsMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - return "/builder.v1.BuilderService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch r.URL.Path { - case BuilderServiceCreateBuildProcedure: - builderServiceCreateBuildHandler.ServeHTTP(w, r) - case BuilderServiceGetBuildProcedure: - builderServiceGetBuildHandler.ServeHTTP(w, r) - case BuilderServiceListBuildsProcedure: - builderServiceListBuildsHandler.ServeHTTP(w, r) - case BuilderServiceCancelBuildProcedure: - builderServiceCancelBuildHandler.ServeHTTP(w, r) - case BuilderServiceDeleteBuildProcedure: - builderServiceDeleteBuildHandler.ServeHTTP(w, r) - case BuilderServiceStreamBuildLogsProcedure: - builderServiceStreamBuildLogsHandler.ServeHTTP(w, r) - case BuilderServiceGetTenantQuotasProcedure: - builderServiceGetTenantQuotasHandler.ServeHTTP(w, r) - case BuilderServiceGetBuildStatsProcedure: - builderServiceGetBuildStatsHandler.ServeHTTP(w, r) - default: - http.NotFound(w, r) - } - }) -} - -// UnimplementedBuilderServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedBuilderServiceHandler struct{} - -func (UnimplementedBuilderServiceHandler) CreateBuild(context.Context, *connect.Request[v1.CreateBuildRequest]) (*connect.Response[v1.CreateBuildResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.CreateBuild is not implemented")) -} - -func (UnimplementedBuilderServiceHandler) GetBuild(context.Context, *connect.Request[v1.GetBuildRequest]) (*connect.Response[v1.GetBuildResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.GetBuild is not implemented")) -} - -func (UnimplementedBuilderServiceHandler) ListBuilds(context.Context, *connect.Request[v1.ListBuildsRequest]) (*connect.Response[v1.ListBuildsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.ListBuilds is not implemented")) -} - -func (UnimplementedBuilderServiceHandler) CancelBuild(context.Context, *connect.Request[v1.CancelBuildRequest]) (*connect.Response[v1.CancelBuildResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.CancelBuild is not implemented")) -} - -func (UnimplementedBuilderServiceHandler) DeleteBuild(context.Context, *connect.Request[v1.DeleteBuildRequest]) (*connect.Response[v1.DeleteBuildResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.DeleteBuild is not implemented")) -} - -func (UnimplementedBuilderServiceHandler) StreamBuildLogs(context.Context, *connect.Request[v1.StreamBuildLogsRequest], *connect.ServerStream[v1.StreamBuildLogsResponse]) error { - return connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.StreamBuildLogs is not implemented")) -} - -func (UnimplementedBuilderServiceHandler) GetTenantQuotas(context.Context, *connect.Request[v1.GetTenantQuotasRequest]) (*connect.Response[v1.GetTenantQuotasResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.GetTenantQuotas is not implemented")) -} - -func (UnimplementedBuilderServiceHandler) GetBuildStats(context.Context, *connect.Request[v1.GetBuildStatsRequest]) (*connect.Response[v1.GetBuildStatsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("builder.v1.BuilderService.GetBuildStats is not implemented")) -} diff --git a/go/gen/deploy/metald/proto/vmprovisioner/v1/vm.pb.go b/go/gen/deploy/metald/proto/vmprovisioner/v1/vm.pb.go deleted file mode 100644 index 0c366e9041..0000000000 --- a/go/gen/deploy/metald/proto/vmprovisioner/v1/vm.pb.go +++ /dev/null @@ -1,2864 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.6 -// protoc (unknown) -// source: deploy/metald/proto/vmprovisioner/v1/vm.proto - -package vmprovisionerv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -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) -) - -// VM lifecycle states -type VmState int32 - -const ( - VmState_VM_STATE_UNSPECIFIED VmState = 0 - VmState_VM_STATE_CREATED VmState = 1 - VmState_VM_STATE_RUNNING VmState = 2 - VmState_VM_STATE_PAUSED VmState = 3 - VmState_VM_STATE_SHUTDOWN VmState = 4 -) - -// Enum value maps for VmState. -var ( - VmState_name = map[int32]string{ - 0: "VM_STATE_UNSPECIFIED", - 1: "VM_STATE_CREATED", - 2: "VM_STATE_RUNNING", - 3: "VM_STATE_PAUSED", - 4: "VM_STATE_SHUTDOWN", - } - VmState_value = map[string]int32{ - "VM_STATE_UNSPECIFIED": 0, - "VM_STATE_CREATED": 1, - "VM_STATE_RUNNING": 2, - "VM_STATE_PAUSED": 3, - "VM_STATE_SHUTDOWN": 4, - } -) - -func (x VmState) Enum() *VmState { - p := new(VmState) - *p = x - return p -} - -func (x VmState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VmState) Descriptor() protoreflect.EnumDescriptor { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_enumTypes[0].Descriptor() -} - -func (VmState) Type() protoreflect.EnumType { - return &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_enumTypes[0] -} - -func (x VmState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use VmState.Descriptor instead. -func (VmState) EnumDescriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{0} -} - -// Network mode for the interface -type NetworkMode int32 - -const ( - NetworkMode_NETWORK_MODE_UNSPECIFIED NetworkMode = 0 - NetworkMode_NETWORK_MODE_DUAL_STACK NetworkMode = 1 // Both IPv4 and IPv6 - NetworkMode_NETWORK_MODE_IPV4_ONLY NetworkMode = 2 // IPv4 only - NetworkMode_NETWORK_MODE_IPV6_ONLY NetworkMode = 3 // IPv6 only -) - -// Enum value maps for NetworkMode. -var ( - NetworkMode_name = map[int32]string{ - 0: "NETWORK_MODE_UNSPECIFIED", - 1: "NETWORK_MODE_DUAL_STACK", - 2: "NETWORK_MODE_IPV4_ONLY", - 3: "NETWORK_MODE_IPV6_ONLY", - } - NetworkMode_value = map[string]int32{ - "NETWORK_MODE_UNSPECIFIED": 0, - "NETWORK_MODE_DUAL_STACK": 1, - "NETWORK_MODE_IPV4_ONLY": 2, - "NETWORK_MODE_IPV6_ONLY": 3, - } -) - -func (x NetworkMode) Enum() *NetworkMode { - p := new(NetworkMode) - *p = x - return p -} - -func (x NetworkMode) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (NetworkMode) Descriptor() protoreflect.EnumDescriptor { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_enumTypes[1].Descriptor() -} - -func (NetworkMode) Type() protoreflect.EnumType { - return &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_enumTypes[1] -} - -func (x NetworkMode) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use NetworkMode.Descriptor instead. -func (NetworkMode) EnumDescriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{1} -} - -// Unified VM configuration that works across different hypervisors -type VmConfig struct { - state protoimpl.MessageState `protogen:"open.v1"` - // CPU configuration - Cpu *CpuConfig `protobuf:"bytes,1,opt,name=cpu,proto3" json:"cpu,omitempty"` - // Memory configuration - Memory *MemoryConfig `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"` - // Boot configuration - Boot *BootConfig `protobuf:"bytes,3,opt,name=boot,proto3" json:"boot,omitempty"` - // Storage devices - Storage []*StorageDevice `protobuf:"bytes,4,rep,name=storage,proto3" json:"storage,omitempty"` - // Network interfaces - Network []*NetworkInterface `protobuf:"bytes,5,rep,name=network,proto3" json:"network,omitempty"` - // Console configuration - Console *ConsoleConfig `protobuf:"bytes,6,opt,name=console,proto3" json:"console,omitempty"` - // Metadata and labels - Metadata map[string]string `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *VmConfig) Reset() { - *x = VmConfig{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *VmConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VmConfig) ProtoMessage() {} - -func (x *VmConfig) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VmConfig.ProtoReflect.Descriptor instead. -func (*VmConfig) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{0} -} - -func (x *VmConfig) GetCpu() *CpuConfig { - if x != nil { - return x.Cpu - } - return nil -} - -func (x *VmConfig) GetMemory() *MemoryConfig { - if x != nil { - return x.Memory - } - return nil -} - -func (x *VmConfig) GetBoot() *BootConfig { - if x != nil { - return x.Boot - } - return nil -} - -func (x *VmConfig) GetStorage() []*StorageDevice { - if x != nil { - return x.Storage - } - return nil -} - -func (x *VmConfig) GetNetwork() []*NetworkInterface { - if x != nil { - return x.Network - } - return nil -} - -func (x *VmConfig) GetConsole() *ConsoleConfig { - if x != nil { - return x.Console - } - return nil -} - -func (x *VmConfig) GetMetadata() map[string]string { - if x != nil { - return x.Metadata - } - return nil -} - -type CpuConfig struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Number of virtual CPUs to allocate at boot - VcpuCount int32 `protobuf:"varint,1,opt,name=vcpu_count,json=vcpuCount,proto3" json:"vcpu_count,omitempty"` - // Maximum number of virtual CPUs (for hotplug) - MaxVcpuCount int32 `protobuf:"varint,2,opt,name=max_vcpu_count,json=maxVcpuCount,proto3" json:"max_vcpu_count,omitempty"` - // CPU topology (optional) - Topology *CpuTopology `protobuf:"bytes,3,opt,name=topology,proto3" json:"topology,omitempty"` - // CPU features and model (backend-specific) - Features map[string]string `protobuf:"bytes,4,rep,name=features,proto3" json:"features,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CpuConfig) Reset() { - *x = CpuConfig{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CpuConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CpuConfig) ProtoMessage() {} - -func (x *CpuConfig) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CpuConfig.ProtoReflect.Descriptor instead. -func (*CpuConfig) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{1} -} - -func (x *CpuConfig) GetVcpuCount() int32 { - if x != nil { - return x.VcpuCount - } - return 0 -} - -func (x *CpuConfig) GetMaxVcpuCount() int32 { - if x != nil { - return x.MaxVcpuCount - } - return 0 -} - -func (x *CpuConfig) GetTopology() *CpuTopology { - if x != nil { - return x.Topology - } - return nil -} - -func (x *CpuConfig) GetFeatures() map[string]string { - if x != nil { - return x.Features - } - return nil -} - -type CpuTopology struct { - state protoimpl.MessageState `protogen:"open.v1"` - Sockets int32 `protobuf:"varint,1,opt,name=sockets,proto3" json:"sockets,omitempty"` - CoresPerSocket int32 `protobuf:"varint,2,opt,name=cores_per_socket,json=coresPerSocket,proto3" json:"cores_per_socket,omitempty"` - ThreadsPerCore int32 `protobuf:"varint,3,opt,name=threads_per_core,json=threadsPerCore,proto3" json:"threads_per_core,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CpuTopology) Reset() { - *x = CpuTopology{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CpuTopology) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CpuTopology) ProtoMessage() {} - -func (x *CpuTopology) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CpuTopology.ProtoReflect.Descriptor instead. -func (*CpuTopology) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{2} -} - -func (x *CpuTopology) GetSockets() int32 { - if x != nil { - return x.Sockets - } - return 0 -} - -func (x *CpuTopology) GetCoresPerSocket() int32 { - if x != nil { - return x.CoresPerSocket - } - return 0 -} - -func (x *CpuTopology) GetThreadsPerCore() int32 { - if x != nil { - return x.ThreadsPerCore - } - return 0 -} - -type MemoryConfig struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Memory size in bytes - SizeBytes int64 `protobuf:"varint,1,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` - // Whether memory hotplug is enabled - HotplugEnabled bool `protobuf:"varint,2,opt,name=hotplug_enabled,json=hotplugEnabled,proto3" json:"hotplug_enabled,omitempty"` - // Maximum memory size for hotplug (bytes) - MaxSizeBytes int64 `protobuf:"varint,3,opt,name=max_size_bytes,json=maxSizeBytes,proto3" json:"max_size_bytes,omitempty"` - // Memory backing options (hugepages, etc.) - Backing map[string]string `protobuf:"bytes,4,rep,name=backing,proto3" json:"backing,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *MemoryConfig) Reset() { - *x = MemoryConfig{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MemoryConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MemoryConfig) ProtoMessage() {} - -func (x *MemoryConfig) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MemoryConfig.ProtoReflect.Descriptor instead. -func (*MemoryConfig) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{3} -} - -func (x *MemoryConfig) GetSizeBytes() int64 { - if x != nil { - return x.SizeBytes - } - return 0 -} - -func (x *MemoryConfig) GetHotplugEnabled() bool { - if x != nil { - return x.HotplugEnabled - } - return false -} - -func (x *MemoryConfig) GetMaxSizeBytes() int64 { - if x != nil { - return x.MaxSizeBytes - } - return 0 -} - -func (x *MemoryConfig) GetBacking() map[string]string { - if x != nil { - return x.Backing - } - return nil -} - -type BootConfig struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Path to kernel image - KernelPath string `protobuf:"bytes,1,opt,name=kernel_path,json=kernelPath,proto3" json:"kernel_path,omitempty"` - // Path to initial ramdisk (optional) - InitrdPath string `protobuf:"bytes,2,opt,name=initrd_path,json=initrdPath,proto3" json:"initrd_path,omitempty"` - // Kernel command line arguments - KernelArgs string `protobuf:"bytes,3,opt,name=kernel_args,json=kernelArgs,proto3" json:"kernel_args,omitempty"` - // Boot order and options - BootOptions map[string]string `protobuf:"bytes,4,rep,name=boot_options,json=bootOptions,proto3" json:"boot_options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BootConfig) Reset() { - *x = BootConfig{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BootConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BootConfig) ProtoMessage() {} - -func (x *BootConfig) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BootConfig.ProtoReflect.Descriptor instead. -func (*BootConfig) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{4} -} - -func (x *BootConfig) GetKernelPath() string { - if x != nil { - return x.KernelPath - } - return "" -} - -func (x *BootConfig) GetInitrdPath() string { - if x != nil { - return x.InitrdPath - } - return "" -} - -func (x *BootConfig) GetKernelArgs() string { - if x != nil { - return x.KernelArgs - } - return "" -} - -func (x *BootConfig) GetBootOptions() map[string]string { - if x != nil { - return x.BootOptions - } - return nil -} - -type StorageDevice struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Unique identifier for this storage device - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Path to the backing file or block device - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - // Whether this device is read-only - ReadOnly bool `protobuf:"varint,3,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` - // Whether this is the root/boot device - IsRootDevice bool `protobuf:"varint,4,opt,name=is_root_device,json=isRootDevice,proto3" json:"is_root_device,omitempty"` - // Storage interface type (virtio-blk, nvme, etc.) - InterfaceType string `protobuf:"bytes,5,opt,name=interface_type,json=interfaceType,proto3" json:"interface_type,omitempty"` - // Additional storage options - Options map[string]string `protobuf:"bytes,6,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StorageDevice) Reset() { - *x = StorageDevice{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StorageDevice) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StorageDevice) ProtoMessage() {} - -func (x *StorageDevice) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StorageDevice.ProtoReflect.Descriptor instead. -func (*StorageDevice) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{5} -} - -func (x *StorageDevice) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *StorageDevice) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *StorageDevice) GetReadOnly() bool { - if x != nil { - return x.ReadOnly - } - return false -} - -func (x *StorageDevice) GetIsRootDevice() bool { - if x != nil { - return x.IsRootDevice - } - return false -} - -func (x *StorageDevice) GetInterfaceType() string { - if x != nil { - return x.InterfaceType - } - return "" -} - -func (x *StorageDevice) GetOptions() map[string]string { - if x != nil { - return x.Options - } - return nil -} - -type NetworkInterface struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Unique identifier for this network interface - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // MAC address (optional, will be generated if not provided) - MacAddress string `protobuf:"bytes,2,opt,name=mac_address,json=macAddress,proto3" json:"mac_address,omitempty"` - // Host-side TAP device name - TapDevice string `protobuf:"bytes,3,opt,name=tap_device,json=tapDevice,proto3" json:"tap_device,omitempty"` - // Network interface type (virtio-net, e1000, etc.) - InterfaceType string `protobuf:"bytes,4,opt,name=interface_type,json=interfaceType,proto3" json:"interface_type,omitempty"` - // Additional network options - Options map[string]string `protobuf:"bytes,5,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // IPv4 configuration (optional) - Ipv4Config *IPv4Config `protobuf:"bytes,6,opt,name=ipv4_config,json=ipv4Config,proto3" json:"ipv4_config,omitempty"` - // IPv6 configuration (optional) - Ipv6Config *IPv6Config `protobuf:"bytes,7,opt,name=ipv6_config,json=ipv6Config,proto3" json:"ipv6_config,omitempty"` - // Network mode - Mode NetworkMode `protobuf:"varint,8,opt,name=mode,proto3,enum=vmprovisioner.v1.NetworkMode" json:"mode,omitempty"` - // Rate limiting - RxRateLimit *RateLimit `protobuf:"bytes,10,opt,name=rx_rate_limit,json=rxRateLimit,proto3" json:"rx_rate_limit,omitempty"` // Receive rate limit - TxRateLimit *RateLimit `protobuf:"bytes,11,opt,name=tx_rate_limit,json=txRateLimit,proto3" json:"tx_rate_limit,omitempty"` // Transmit rate limit - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *NetworkInterface) Reset() { - *x = NetworkInterface{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *NetworkInterface) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NetworkInterface) ProtoMessage() {} - -func (x *NetworkInterface) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NetworkInterface.ProtoReflect.Descriptor instead. -func (*NetworkInterface) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{6} -} - -func (x *NetworkInterface) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *NetworkInterface) GetMacAddress() string { - if x != nil { - return x.MacAddress - } - return "" -} - -func (x *NetworkInterface) GetTapDevice() string { - if x != nil { - return x.TapDevice - } - return "" -} - -func (x *NetworkInterface) GetInterfaceType() string { - if x != nil { - return x.InterfaceType - } - return "" -} - -func (x *NetworkInterface) GetOptions() map[string]string { - if x != nil { - return x.Options - } - return nil -} - -func (x *NetworkInterface) GetIpv4Config() *IPv4Config { - if x != nil { - return x.Ipv4Config - } - return nil -} - -func (x *NetworkInterface) GetIpv6Config() *IPv6Config { - if x != nil { - return x.Ipv6Config - } - return nil -} - -func (x *NetworkInterface) GetMode() NetworkMode { - if x != nil { - return x.Mode - } - return NetworkMode_NETWORK_MODE_UNSPECIFIED -} - -func (x *NetworkInterface) GetRxRateLimit() *RateLimit { - if x != nil { - return x.RxRateLimit - } - return nil -} - -func (x *NetworkInterface) GetTxRateLimit() *RateLimit { - if x != nil { - return x.TxRateLimit - } - return nil -} - -// IPv4 network configuration -type IPv4Config struct { - state protoimpl.MessageState `protogen:"open.v1"` - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // IPv4 address (e.g., "10.100.1.2") - Netmask string `protobuf:"bytes,2,opt,name=netmask,proto3" json:"netmask,omitempty"` // Network mask (e.g., "255.255.255.0") - Gateway string `protobuf:"bytes,3,opt,name=gateway,proto3" json:"gateway,omitempty"` // Default gateway - DnsServers []string `protobuf:"bytes,4,rep,name=dns_servers,json=dnsServers,proto3" json:"dns_servers,omitempty"` // DNS servers - Dhcp bool `protobuf:"varint,5,opt,name=dhcp,proto3" json:"dhcp,omitempty"` // Use DHCP instead of static config - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *IPv4Config) Reset() { - *x = IPv4Config{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *IPv4Config) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*IPv4Config) ProtoMessage() {} - -func (x *IPv4Config) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use IPv4Config.ProtoReflect.Descriptor instead. -func (*IPv4Config) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{7} -} - -func (x *IPv4Config) GetAddress() string { - if x != nil { - return x.Address - } - return "" -} - -func (x *IPv4Config) GetNetmask() string { - if x != nil { - return x.Netmask - } - return "" -} - -func (x *IPv4Config) GetGateway() string { - if x != nil { - return x.Gateway - } - return "" -} - -func (x *IPv4Config) GetDnsServers() []string { - if x != nil { - return x.DnsServers - } - return nil -} - -func (x *IPv4Config) GetDhcp() bool { - if x != nil { - return x.Dhcp - } - return false -} - -// IPv6 network configuration -type IPv6Config struct { - state protoimpl.MessageState `protogen:"open.v1"` - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // IPv6 address (e.g., "fd00::1:2") - PrefixLength int32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3" json:"prefix_length,omitempty"` // Prefix length (e.g., 64) - Gateway string `protobuf:"bytes,3,opt,name=gateway,proto3" json:"gateway,omitempty"` // Default gateway - DnsServers []string `protobuf:"bytes,4,rep,name=dns_servers,json=dnsServers,proto3" json:"dns_servers,omitempty"` // DNS servers (IPv6 addresses) - Slaac bool `protobuf:"varint,5,opt,name=slaac,proto3" json:"slaac,omitempty"` // Use SLAAC (Stateless Address Autoconfiguration) - PrivacyExtensions bool `protobuf:"varint,6,opt,name=privacy_extensions,json=privacyExtensions,proto3" json:"privacy_extensions,omitempty"` // Enable privacy extensions - LinkLocal string `protobuf:"bytes,7,opt,name=link_local,json=linkLocal,proto3" json:"link_local,omitempty"` // Link-local address (auto-generated if empty) - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *IPv6Config) Reset() { - *x = IPv6Config{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *IPv6Config) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*IPv6Config) ProtoMessage() {} - -func (x *IPv6Config) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use IPv6Config.ProtoReflect.Descriptor instead. -func (*IPv6Config) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{8} -} - -func (x *IPv6Config) GetAddress() string { - if x != nil { - return x.Address - } - return "" -} - -func (x *IPv6Config) GetPrefixLength() int32 { - if x != nil { - return x.PrefixLength - } - return 0 -} - -func (x *IPv6Config) GetGateway() string { - if x != nil { - return x.Gateway - } - return "" -} - -func (x *IPv6Config) GetDnsServers() []string { - if x != nil { - return x.DnsServers - } - return nil -} - -func (x *IPv6Config) GetSlaac() bool { - if x != nil { - return x.Slaac - } - return false -} - -func (x *IPv6Config) GetPrivacyExtensions() bool { - if x != nil { - return x.PrivacyExtensions - } - return false -} - -func (x *IPv6Config) GetLinkLocal() string { - if x != nil { - return x.LinkLocal - } - return "" -} - -// Rate limiting configuration -type RateLimit struct { - state protoimpl.MessageState `protogen:"open.v1"` - Bandwidth int64 `protobuf:"varint,1,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"` // Bandwidth in bytes/second - RefillTime int64 `protobuf:"varint,2,opt,name=refill_time,json=refillTime,proto3" json:"refill_time,omitempty"` // Token bucket refill time in milliseconds - Burst int64 `protobuf:"varint,3,opt,name=burst,proto3" json:"burst,omitempty"` // Burst size in bytes - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RateLimit) Reset() { - *x = RateLimit{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RateLimit) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RateLimit) ProtoMessage() {} - -func (x *RateLimit) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RateLimit.ProtoReflect.Descriptor instead. -func (*RateLimit) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{9} -} - -func (x *RateLimit) GetBandwidth() int64 { - if x != nil { - return x.Bandwidth - } - return 0 -} - -func (x *RateLimit) GetRefillTime() int64 { - if x != nil { - return x.RefillTime - } - return 0 -} - -func (x *RateLimit) GetBurst() int64 { - if x != nil { - return x.Burst - } - return 0 -} - -type ConsoleConfig struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Whether console is enabled - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - // Console output destination (file path, pty, etc.) - Output string `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` - // Console input source (optional) - Input string `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` - // Console type (serial, virtio-console, etc.) - ConsoleType string `protobuf:"bytes,4,opt,name=console_type,json=consoleType,proto3" json:"console_type,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ConsoleConfig) Reset() { - *x = ConsoleConfig{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ConsoleConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ConsoleConfig) ProtoMessage() {} - -func (x *ConsoleConfig) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ConsoleConfig.ProtoReflect.Descriptor instead. -func (*ConsoleConfig) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{10} -} - -func (x *ConsoleConfig) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *ConsoleConfig) GetOutput() string { - if x != nil { - return x.Output - } - return "" -} - -func (x *ConsoleConfig) GetInput() string { - if x != nil { - return x.Input - } - return "" -} - -func (x *ConsoleConfig) GetConsoleType() string { - if x != nil { - return x.ConsoleType - } - return "" -} - -// Request/Response messages -type CreateVmRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Unique identifier for the VM (optional, will be generated if not provided) - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - // VM configuration - Config *VmConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` - // Customer identifier for billing and isolation - CustomerId string `protobuf:"bytes,3,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateVmRequest) Reset() { - *x = CreateVmRequest{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateVmRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateVmRequest) ProtoMessage() {} - -func (x *CreateVmRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateVmRequest.ProtoReflect.Descriptor instead. -func (*CreateVmRequest) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{11} -} - -func (x *CreateVmRequest) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -func (x *CreateVmRequest) GetConfig() *VmConfig { - if x != nil { - return x.Config - } - return nil -} - -func (x *CreateVmRequest) GetCustomerId() string { - if x != nil { - return x.CustomerId - } - return "" -} - -type CreateVmResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Assigned VM identifier - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - // Current VM state after creation - State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=vmprovisioner.v1.VmState" json:"state,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateVmResponse) Reset() { - *x = CreateVmResponse{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateVmResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateVmResponse) ProtoMessage() {} - -func (x *CreateVmResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateVmResponse.ProtoReflect.Descriptor instead. -func (*CreateVmResponse) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{12} -} - -func (x *CreateVmResponse) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -func (x *CreateVmResponse) GetState() VmState { - if x != nil { - return x.State - } - return VmState_VM_STATE_UNSPECIFIED -} - -type DeleteVmRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - // Whether to force deletion even if VM is running - Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteVmRequest) Reset() { - *x = DeleteVmRequest{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteVmRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteVmRequest) ProtoMessage() {} - -func (x *DeleteVmRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteVmRequest.ProtoReflect.Descriptor instead. -func (*DeleteVmRequest) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{13} -} - -func (x *DeleteVmRequest) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -func (x *DeleteVmRequest) GetForce() bool { - if x != nil { - return x.Force - } - return false -} - -type DeleteVmResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteVmResponse) Reset() { - *x = DeleteVmResponse{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteVmResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteVmResponse) ProtoMessage() {} - -func (x *DeleteVmResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteVmResponse.ProtoReflect.Descriptor instead. -func (*DeleteVmResponse) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{14} -} - -func (x *DeleteVmResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -type BootVmRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BootVmRequest) Reset() { - *x = BootVmRequest{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BootVmRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BootVmRequest) ProtoMessage() {} - -func (x *BootVmRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[15] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BootVmRequest.ProtoReflect.Descriptor instead. -func (*BootVmRequest) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{15} -} - -func (x *BootVmRequest) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -type BootVmResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=vmprovisioner.v1.VmState" json:"state,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BootVmResponse) Reset() { - *x = BootVmResponse{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BootVmResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BootVmResponse) ProtoMessage() {} - -func (x *BootVmResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BootVmResponse.ProtoReflect.Descriptor instead. -func (*BootVmResponse) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{16} -} - -func (x *BootVmResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *BootVmResponse) GetState() VmState { - if x != nil { - return x.State - } - return VmState_VM_STATE_UNSPECIFIED -} - -type ShutdownVmRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - // Whether to force shutdown (vs graceful) - Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` - // Timeout for graceful shutdown (seconds) - TimeoutSeconds int32 `protobuf:"varint,3,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ShutdownVmRequest) Reset() { - *x = ShutdownVmRequest{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ShutdownVmRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ShutdownVmRequest) ProtoMessage() {} - -func (x *ShutdownVmRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[17] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ShutdownVmRequest.ProtoReflect.Descriptor instead. -func (*ShutdownVmRequest) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{17} -} - -func (x *ShutdownVmRequest) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -func (x *ShutdownVmRequest) GetForce() bool { - if x != nil { - return x.Force - } - return false -} - -func (x *ShutdownVmRequest) GetTimeoutSeconds() int32 { - if x != nil { - return x.TimeoutSeconds - } - return 0 -} - -type ShutdownVmResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=vmprovisioner.v1.VmState" json:"state,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ShutdownVmResponse) Reset() { - *x = ShutdownVmResponse{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ShutdownVmResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ShutdownVmResponse) ProtoMessage() {} - -func (x *ShutdownVmResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[18] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ShutdownVmResponse.ProtoReflect.Descriptor instead. -func (*ShutdownVmResponse) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{18} -} - -func (x *ShutdownVmResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *ShutdownVmResponse) GetState() VmState { - if x != nil { - return x.State - } - return VmState_VM_STATE_UNSPECIFIED -} - -type PauseVmRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PauseVmRequest) Reset() { - *x = PauseVmRequest{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PauseVmRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PauseVmRequest) ProtoMessage() {} - -func (x *PauseVmRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[19] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PauseVmRequest.ProtoReflect.Descriptor instead. -func (*PauseVmRequest) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{19} -} - -func (x *PauseVmRequest) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -type PauseVmResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=vmprovisioner.v1.VmState" json:"state,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PauseVmResponse) Reset() { - *x = PauseVmResponse{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PauseVmResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PauseVmResponse) ProtoMessage() {} - -func (x *PauseVmResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PauseVmResponse.ProtoReflect.Descriptor instead. -func (*PauseVmResponse) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{20} -} - -func (x *PauseVmResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *PauseVmResponse) GetState() VmState { - if x != nil { - return x.State - } - return VmState_VM_STATE_UNSPECIFIED -} - -type ResumeVmRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResumeVmRequest) Reset() { - *x = ResumeVmRequest{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResumeVmRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResumeVmRequest) ProtoMessage() {} - -func (x *ResumeVmRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[21] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResumeVmRequest.ProtoReflect.Descriptor instead. -func (*ResumeVmRequest) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{21} -} - -func (x *ResumeVmRequest) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -type ResumeVmResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=vmprovisioner.v1.VmState" json:"state,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResumeVmResponse) Reset() { - *x = ResumeVmResponse{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResumeVmResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResumeVmResponse) ProtoMessage() {} - -func (x *ResumeVmResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[22] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResumeVmResponse.ProtoReflect.Descriptor instead. -func (*ResumeVmResponse) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{22} -} - -func (x *ResumeVmResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *ResumeVmResponse) GetState() VmState { - if x != nil { - return x.State - } - return VmState_VM_STATE_UNSPECIFIED -} - -type RebootVmRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - // Whether to force reboot (vs graceful) - Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RebootVmRequest) Reset() { - *x = RebootVmRequest{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RebootVmRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RebootVmRequest) ProtoMessage() {} - -func (x *RebootVmRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[23] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RebootVmRequest.ProtoReflect.Descriptor instead. -func (*RebootVmRequest) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{23} -} - -func (x *RebootVmRequest) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -func (x *RebootVmRequest) GetForce() bool { - if x != nil { - return x.Force - } - return false -} - -type RebootVmResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=vmprovisioner.v1.VmState" json:"state,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RebootVmResponse) Reset() { - *x = RebootVmResponse{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RebootVmResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RebootVmResponse) ProtoMessage() {} - -func (x *RebootVmResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[24] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RebootVmResponse.ProtoReflect.Descriptor instead. -func (*RebootVmResponse) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{24} -} - -func (x *RebootVmResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *RebootVmResponse) GetState() VmState { - if x != nil { - return x.State - } - return VmState_VM_STATE_UNSPECIFIED -} - -type GetVmInfoRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetVmInfoRequest) Reset() { - *x = GetVmInfoRequest{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetVmInfoRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetVmInfoRequest) ProtoMessage() {} - -func (x *GetVmInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[25] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetVmInfoRequest.ProtoReflect.Descriptor instead. -func (*GetVmInfoRequest) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{25} -} - -func (x *GetVmInfoRequest) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -type GetVmInfoResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - Config *VmConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` - State VmState `protobuf:"varint,3,opt,name=state,proto3,enum=vmprovisioner.v1.VmState" json:"state,omitempty"` - Metrics *VmMetrics `protobuf:"bytes,4,opt,name=metrics,proto3" json:"metrics,omitempty"` - // Backend-specific information - BackendInfo map[string]string `protobuf:"bytes,5,rep,name=backend_info,json=backendInfo,proto3" json:"backend_info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Network information if available - NetworkInfo *VmNetworkInfo `protobuf:"bytes,6,opt,name=network_info,json=networkInfo,proto3" json:"network_info,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetVmInfoResponse) Reset() { - *x = GetVmInfoResponse{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetVmInfoResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetVmInfoResponse) ProtoMessage() {} - -func (x *GetVmInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[26] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetVmInfoResponse.ProtoReflect.Descriptor instead. -func (*GetVmInfoResponse) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{26} -} - -func (x *GetVmInfoResponse) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -func (x *GetVmInfoResponse) GetConfig() *VmConfig { - if x != nil { - return x.Config - } - return nil -} - -func (x *GetVmInfoResponse) GetState() VmState { - if x != nil { - return x.State - } - return VmState_VM_STATE_UNSPECIFIED -} - -func (x *GetVmInfoResponse) GetMetrics() *VmMetrics { - if x != nil { - return x.Metrics - } - return nil -} - -func (x *GetVmInfoResponse) GetBackendInfo() map[string]string { - if x != nil { - return x.BackendInfo - } - return nil -} - -func (x *GetVmInfoResponse) GetNetworkInfo() *VmNetworkInfo { - if x != nil { - return x.NetworkInfo - } - return nil -} - -// Port mapping for VM network forwarding -type PortMapping struct { - state protoimpl.MessageState `protogen:"open.v1"` - ContainerPort int32 `protobuf:"varint,1,opt,name=container_port,json=containerPort,proto3" json:"container_port,omitempty"` // Port inside the VM - HostPort int32 `protobuf:"varint,2,opt,name=host_port,json=hostPort,proto3" json:"host_port,omitempty"` // Port on the host system - Protocol string `protobuf:"bytes,3,opt,name=protocol,proto3" json:"protocol,omitempty"` // Protocol (tcp, udp) - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PortMapping) Reset() { - *x = PortMapping{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PortMapping) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PortMapping) ProtoMessage() {} - -func (x *PortMapping) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[27] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PortMapping.ProtoReflect.Descriptor instead. -func (*PortMapping) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{27} -} - -func (x *PortMapping) GetContainerPort() int32 { - if x != nil { - return x.ContainerPort - } - return 0 -} - -func (x *PortMapping) GetHostPort() int32 { - if x != nil { - return x.HostPort - } - return 0 -} - -func (x *PortMapping) GetProtocol() string { - if x != nil { - return x.Protocol - } - return "" -} - -// Network information for a VM -type VmNetworkInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - IpAddress string `protobuf:"bytes,1,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"` - MacAddress string `protobuf:"bytes,2,opt,name=mac_address,json=macAddress,proto3" json:"mac_address,omitempty"` - TapDevice string `protobuf:"bytes,3,opt,name=tap_device,json=tapDevice,proto3" json:"tap_device,omitempty"` - NetworkNamespace string `protobuf:"bytes,4,opt,name=network_namespace,json=networkNamespace,proto3" json:"network_namespace,omitempty"` - Gateway string `protobuf:"bytes,5,opt,name=gateway,proto3" json:"gateway,omitempty"` - DnsServers []string `protobuf:"bytes,6,rep,name=dns_servers,json=dnsServers,proto3" json:"dns_servers,omitempty"` - PortMappings []*PortMapping `protobuf:"bytes,7,rep,name=port_mappings,json=portMappings,proto3" json:"port_mappings,omitempty"` // Port forwards from host to VM - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *VmNetworkInfo) Reset() { - *x = VmNetworkInfo{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *VmNetworkInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VmNetworkInfo) ProtoMessage() {} - -func (x *VmNetworkInfo) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[28] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VmNetworkInfo.ProtoReflect.Descriptor instead. -func (*VmNetworkInfo) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{28} -} - -func (x *VmNetworkInfo) GetIpAddress() string { - if x != nil { - return x.IpAddress - } - return "" -} - -func (x *VmNetworkInfo) GetMacAddress() string { - if x != nil { - return x.MacAddress - } - return "" -} - -func (x *VmNetworkInfo) GetTapDevice() string { - if x != nil { - return x.TapDevice - } - return "" -} - -func (x *VmNetworkInfo) GetNetworkNamespace() string { - if x != nil { - return x.NetworkNamespace - } - return "" -} - -func (x *VmNetworkInfo) GetGateway() string { - if x != nil { - return x.Gateway - } - return "" -} - -func (x *VmNetworkInfo) GetDnsServers() []string { - if x != nil { - return x.DnsServers - } - return nil -} - -func (x *VmNetworkInfo) GetPortMappings() []*PortMapping { - if x != nil { - return x.PortMappings - } - return nil -} - -type VmMetrics struct { - state protoimpl.MessageState `protogen:"open.v1"` - // CPU usage percentage (0-100) - CpuUsagePercent float64 `protobuf:"fixed64,1,opt,name=cpu_usage_percent,json=cpuUsagePercent,proto3" json:"cpu_usage_percent,omitempty"` - // Memory usage in bytes - MemoryUsageBytes int64 `protobuf:"varint,2,opt,name=memory_usage_bytes,json=memoryUsageBytes,proto3" json:"memory_usage_bytes,omitempty"` - // Network I/O statistics - NetworkStats *NetworkStats `protobuf:"bytes,3,opt,name=network_stats,json=networkStats,proto3" json:"network_stats,omitempty"` - // Storage I/O statistics - StorageStats *StorageStats `protobuf:"bytes,4,opt,name=storage_stats,json=storageStats,proto3" json:"storage_stats,omitempty"` - // VM uptime in seconds - UptimeSeconds int64 `protobuf:"varint,5,opt,name=uptime_seconds,json=uptimeSeconds,proto3" json:"uptime_seconds,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *VmMetrics) Reset() { - *x = VmMetrics{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *VmMetrics) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VmMetrics) ProtoMessage() {} - -func (x *VmMetrics) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[29] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VmMetrics.ProtoReflect.Descriptor instead. -func (*VmMetrics) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{29} -} - -func (x *VmMetrics) GetCpuUsagePercent() float64 { - if x != nil { - return x.CpuUsagePercent - } - return 0 -} - -func (x *VmMetrics) GetMemoryUsageBytes() int64 { - if x != nil { - return x.MemoryUsageBytes - } - return 0 -} - -func (x *VmMetrics) GetNetworkStats() *NetworkStats { - if x != nil { - return x.NetworkStats - } - return nil -} - -func (x *VmMetrics) GetStorageStats() *StorageStats { - if x != nil { - return x.StorageStats - } - return nil -} - -func (x *VmMetrics) GetUptimeSeconds() int64 { - if x != nil { - return x.UptimeSeconds - } - return 0 -} - -type NetworkStats struct { - state protoimpl.MessageState `protogen:"open.v1"` - BytesReceived int64 `protobuf:"varint,1,opt,name=bytes_received,json=bytesReceived,proto3" json:"bytes_received,omitempty"` - BytesTransmitted int64 `protobuf:"varint,2,opt,name=bytes_transmitted,json=bytesTransmitted,proto3" json:"bytes_transmitted,omitempty"` - PacketsReceived int64 `protobuf:"varint,3,opt,name=packets_received,json=packetsReceived,proto3" json:"packets_received,omitempty"` - PacketsTransmitted int64 `protobuf:"varint,4,opt,name=packets_transmitted,json=packetsTransmitted,proto3" json:"packets_transmitted,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *NetworkStats) Reset() { - *x = NetworkStats{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *NetworkStats) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NetworkStats) ProtoMessage() {} - -func (x *NetworkStats) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[30] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NetworkStats.ProtoReflect.Descriptor instead. -func (*NetworkStats) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{30} -} - -func (x *NetworkStats) GetBytesReceived() int64 { - if x != nil { - return x.BytesReceived - } - return 0 -} - -func (x *NetworkStats) GetBytesTransmitted() int64 { - if x != nil { - return x.BytesTransmitted - } - return 0 -} - -func (x *NetworkStats) GetPacketsReceived() int64 { - if x != nil { - return x.PacketsReceived - } - return 0 -} - -func (x *NetworkStats) GetPacketsTransmitted() int64 { - if x != nil { - return x.PacketsTransmitted - } - return 0 -} - -type StorageStats struct { - state protoimpl.MessageState `protogen:"open.v1"` - BytesRead int64 `protobuf:"varint,1,opt,name=bytes_read,json=bytesRead,proto3" json:"bytes_read,omitempty"` - BytesWritten int64 `protobuf:"varint,2,opt,name=bytes_written,json=bytesWritten,proto3" json:"bytes_written,omitempty"` - ReadOperations int64 `protobuf:"varint,3,opt,name=read_operations,json=readOperations,proto3" json:"read_operations,omitempty"` - WriteOperations int64 `protobuf:"varint,4,opt,name=write_operations,json=writeOperations,proto3" json:"write_operations,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StorageStats) Reset() { - *x = StorageStats{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StorageStats) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StorageStats) ProtoMessage() {} - -func (x *StorageStats) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[31] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StorageStats.ProtoReflect.Descriptor instead. -func (*StorageStats) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{31} -} - -func (x *StorageStats) GetBytesRead() int64 { - if x != nil { - return x.BytesRead - } - return 0 -} - -func (x *StorageStats) GetBytesWritten() int64 { - if x != nil { - return x.BytesWritten - } - return 0 -} - -func (x *StorageStats) GetReadOperations() int64 { - if x != nil { - return x.ReadOperations - } - return 0 -} - -func (x *StorageStats) GetWriteOperations() int64 { - if x != nil { - return x.WriteOperations - } - return 0 -} - -type ListVmsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Optional filter by state - StateFilter []VmState `protobuf:"varint,1,rep,packed,name=state_filter,json=stateFilter,proto3,enum=vmprovisioner.v1.VmState" json:"state_filter,omitempty"` - // Pagination - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListVmsRequest) Reset() { - *x = ListVmsRequest{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListVmsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListVmsRequest) ProtoMessage() {} - -func (x *ListVmsRequest) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[32] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListVmsRequest.ProtoReflect.Descriptor instead. -func (*ListVmsRequest) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{32} -} - -func (x *ListVmsRequest) GetStateFilter() []VmState { - if x != nil { - return x.StateFilter - } - return nil -} - -func (x *ListVmsRequest) GetPageSize() int32 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *ListVmsRequest) GetPageToken() string { - if x != nil { - return x.PageToken - } - return "" -} - -type ListVmsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Vms []*VmInfo `protobuf:"bytes,1,rep,name=vms,proto3" json:"vms,omitempty"` - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListVmsResponse) Reset() { - *x = ListVmsResponse{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListVmsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListVmsResponse) ProtoMessage() {} - -func (x *ListVmsResponse) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[33] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListVmsResponse.ProtoReflect.Descriptor instead. -func (*ListVmsResponse) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{33} -} - -func (x *ListVmsResponse) GetVms() []*VmInfo { - if x != nil { - return x.Vms - } - return nil -} - -func (x *ListVmsResponse) GetNextPageToken() string { - if x != nil { - return x.NextPageToken - } - return "" -} - -func (x *ListVmsResponse) GetTotalCount() int32 { - if x != nil { - return x.TotalCount - } - return 0 -} - -type VmInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` - State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=vmprovisioner.v1.VmState" json:"state,omitempty"` - // Basic config info (subset of full config) - VcpuCount int32 `protobuf:"varint,3,opt,name=vcpu_count,json=vcpuCount,proto3" json:"vcpu_count,omitempty"` - MemorySizeBytes int64 `protobuf:"varint,4,opt,name=memory_size_bytes,json=memorySizeBytes,proto3" json:"memory_size_bytes,omitempty"` - // Creation and modification timestamps - CreatedTimestamp int64 `protobuf:"varint,5,opt,name=created_timestamp,json=createdTimestamp,proto3" json:"created_timestamp,omitempty"` - ModifiedTimestamp int64 `protobuf:"varint,6,opt,name=modified_timestamp,json=modifiedTimestamp,proto3" json:"modified_timestamp,omitempty"` - // Metadata - Metadata map[string]string `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Customer identifier - CustomerId string `protobuf:"bytes,8,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *VmInfo) Reset() { - *x = VmInfo{} - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *VmInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VmInfo) ProtoMessage() {} - -func (x *VmInfo) ProtoReflect() protoreflect.Message { - mi := &file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes[34] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VmInfo.ProtoReflect.Descriptor instead. -func (*VmInfo) Descriptor() ([]byte, []int) { - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP(), []int{34} -} - -func (x *VmInfo) GetVmId() string { - if x != nil { - return x.VmId - } - return "" -} - -func (x *VmInfo) GetState() VmState { - if x != nil { - return x.State - } - return VmState_VM_STATE_UNSPECIFIED -} - -func (x *VmInfo) GetVcpuCount() int32 { - if x != nil { - return x.VcpuCount - } - return 0 -} - -func (x *VmInfo) GetMemorySizeBytes() int64 { - if x != nil { - return x.MemorySizeBytes - } - return 0 -} - -func (x *VmInfo) GetCreatedTimestamp() int64 { - if x != nil { - return x.CreatedTimestamp - } - return 0 -} - -func (x *VmInfo) GetModifiedTimestamp() int64 { - if x != nil { - return x.ModifiedTimestamp - } - return 0 -} - -func (x *VmInfo) GetMetadata() map[string]string { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *VmInfo) GetCustomerId() string { - if x != nil { - return x.CustomerId - } - return "" -} - -var File_deploy_metald_proto_vmprovisioner_v1_vm_proto protoreflect.FileDescriptor - -const file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDesc = "" + - "\n" + - "-deploy/metald/proto/vmprovisioner/v1/vm.proto\x12\x10vmprovisioner.v1\"\xda\x03\n" + - "\bVmConfig\x12-\n" + - "\x03cpu\x18\x01 \x01(\v2\x1b.vmprovisioner.v1.CpuConfigR\x03cpu\x126\n" + - "\x06memory\x18\x02 \x01(\v2\x1e.vmprovisioner.v1.MemoryConfigR\x06memory\x120\n" + - "\x04boot\x18\x03 \x01(\v2\x1c.vmprovisioner.v1.BootConfigR\x04boot\x129\n" + - "\astorage\x18\x04 \x03(\v2\x1f.vmprovisioner.v1.StorageDeviceR\astorage\x12<\n" + - "\anetwork\x18\x05 \x03(\v2\".vmprovisioner.v1.NetworkInterfaceR\anetwork\x129\n" + - "\aconsole\x18\x06 \x01(\v2\x1f.vmprovisioner.v1.ConsoleConfigR\aconsole\x12D\n" + - "\bmetadata\x18\a \x03(\v2(.vmprovisioner.v1.VmConfig.MetadataEntryR\bmetadata\x1a;\n" + - "\rMetadataEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x8f\x02\n" + - "\tCpuConfig\x12\x1d\n" + - "\n" + - "vcpu_count\x18\x01 \x01(\x05R\tvcpuCount\x12$\n" + - "\x0emax_vcpu_count\x18\x02 \x01(\x05R\fmaxVcpuCount\x129\n" + - "\btopology\x18\x03 \x01(\v2\x1d.vmprovisioner.v1.CpuTopologyR\btopology\x12E\n" + - "\bfeatures\x18\x04 \x03(\v2).vmprovisioner.v1.CpuConfig.FeaturesEntryR\bfeatures\x1a;\n" + - "\rFeaturesEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"{\n" + - "\vCpuTopology\x12\x18\n" + - "\asockets\x18\x01 \x01(\x05R\asockets\x12(\n" + - "\x10cores_per_socket\x18\x02 \x01(\x05R\x0ecoresPerSocket\x12(\n" + - "\x10threads_per_core\x18\x03 \x01(\x05R\x0ethreadsPerCore\"\xff\x01\n" + - "\fMemoryConfig\x12\x1d\n" + - "\n" + - "size_bytes\x18\x01 \x01(\x03R\tsizeBytes\x12'\n" + - "\x0fhotplug_enabled\x18\x02 \x01(\bR\x0ehotplugEnabled\x12$\n" + - "\x0emax_size_bytes\x18\x03 \x01(\x03R\fmaxSizeBytes\x12E\n" + - "\abacking\x18\x04 \x03(\v2+.vmprovisioner.v1.MemoryConfig.BackingEntryR\abacking\x1a:\n" + - "\fBackingEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x81\x02\n" + - "\n" + - "BootConfig\x12\x1f\n" + - "\vkernel_path\x18\x01 \x01(\tR\n" + - "kernelPath\x12\x1f\n" + - "\vinitrd_path\x18\x02 \x01(\tR\n" + - "initrdPath\x12\x1f\n" + - "\vkernel_args\x18\x03 \x01(\tR\n" + - "kernelArgs\x12P\n" + - "\fboot_options\x18\x04 \x03(\v2-.vmprovisioner.v1.BootConfig.BootOptionsEntryR\vbootOptions\x1a>\n" + - "\x10BootOptionsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xa1\x02\n" + - "\rStorageDevice\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + - "\x04path\x18\x02 \x01(\tR\x04path\x12\x1b\n" + - "\tread_only\x18\x03 \x01(\bR\breadOnly\x12$\n" + - "\x0eis_root_device\x18\x04 \x01(\bR\fisRootDevice\x12%\n" + - "\x0einterface_type\x18\x05 \x01(\tR\rinterfaceType\x12F\n" + - "\aoptions\x18\x06 \x03(\v2,.vmprovisioner.v1.StorageDevice.OptionsEntryR\aoptions\x1a:\n" + - "\fOptionsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xc3\x04\n" + - "\x10NetworkInterface\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" + - "\vmac_address\x18\x02 \x01(\tR\n" + - "macAddress\x12\x1d\n" + - "\n" + - "tap_device\x18\x03 \x01(\tR\ttapDevice\x12%\n" + - "\x0einterface_type\x18\x04 \x01(\tR\rinterfaceType\x12I\n" + - "\aoptions\x18\x05 \x03(\v2/.vmprovisioner.v1.NetworkInterface.OptionsEntryR\aoptions\x12=\n" + - "\vipv4_config\x18\x06 \x01(\v2\x1c.vmprovisioner.v1.IPv4ConfigR\n" + - "ipv4Config\x12=\n" + - "\vipv6_config\x18\a \x01(\v2\x1c.vmprovisioner.v1.IPv6ConfigR\n" + - "ipv6Config\x121\n" + - "\x04mode\x18\b \x01(\x0e2\x1d.vmprovisioner.v1.NetworkModeR\x04mode\x12?\n" + - "\rrx_rate_limit\x18\n" + - " \x01(\v2\x1b.vmprovisioner.v1.RateLimitR\vrxRateLimit\x12?\n" + - "\rtx_rate_limit\x18\v \x01(\v2\x1b.vmprovisioner.v1.RateLimitR\vtxRateLimit\x1a:\n" + - "\fOptionsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x8f\x01\n" + - "\n" + - "IPv4Config\x12\x18\n" + - "\aaddress\x18\x01 \x01(\tR\aaddress\x12\x18\n" + - "\anetmask\x18\x02 \x01(\tR\anetmask\x12\x18\n" + - "\agateway\x18\x03 \x01(\tR\agateway\x12\x1f\n" + - "\vdns_servers\x18\x04 \x03(\tR\n" + - "dnsServers\x12\x12\n" + - "\x04dhcp\x18\x05 \x01(\bR\x04dhcp\"\xea\x01\n" + - "\n" + - "IPv6Config\x12\x18\n" + - "\aaddress\x18\x01 \x01(\tR\aaddress\x12#\n" + - "\rprefix_length\x18\x02 \x01(\x05R\fprefixLength\x12\x18\n" + - "\agateway\x18\x03 \x01(\tR\agateway\x12\x1f\n" + - "\vdns_servers\x18\x04 \x03(\tR\n" + - "dnsServers\x12\x14\n" + - "\x05slaac\x18\x05 \x01(\bR\x05slaac\x12-\n" + - "\x12privacy_extensions\x18\x06 \x01(\bR\x11privacyExtensions\x12\x1d\n" + - "\n" + - "link_local\x18\a \x01(\tR\tlinkLocal\"`\n" + - "\tRateLimit\x12\x1c\n" + - "\tbandwidth\x18\x01 \x01(\x03R\tbandwidth\x12\x1f\n" + - "\vrefill_time\x18\x02 \x01(\x03R\n" + - "refillTime\x12\x14\n" + - "\x05burst\x18\x03 \x01(\x03R\x05burst\"z\n" + - "\rConsoleConfig\x12\x18\n" + - "\aenabled\x18\x01 \x01(\bR\aenabled\x12\x16\n" + - "\x06output\x18\x02 \x01(\tR\x06output\x12\x14\n" + - "\x05input\x18\x03 \x01(\tR\x05input\x12!\n" + - "\fconsole_type\x18\x04 \x01(\tR\vconsoleType\"{\n" + - "\x0fCreateVmRequest\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x122\n" + - "\x06config\x18\x02 \x01(\v2\x1a.vmprovisioner.v1.VmConfigR\x06config\x12\x1f\n" + - "\vcustomer_id\x18\x03 \x01(\tR\n" + - "customerId\"X\n" + - "\x10CreateVmResponse\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12/\n" + - "\x05state\x18\x02 \x01(\x0e2\x19.vmprovisioner.v1.VmStateR\x05state\"<\n" + - "\x0fDeleteVmRequest\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12\x14\n" + - "\x05force\x18\x02 \x01(\bR\x05force\",\n" + - "\x10DeleteVmResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\"$\n" + - "\rBootVmRequest\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\"[\n" + - "\x0eBootVmResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12/\n" + - "\x05state\x18\x02 \x01(\x0e2\x19.vmprovisioner.v1.VmStateR\x05state\"g\n" + - "\x11ShutdownVmRequest\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12\x14\n" + - "\x05force\x18\x02 \x01(\bR\x05force\x12'\n" + - "\x0ftimeout_seconds\x18\x03 \x01(\x05R\x0etimeoutSeconds\"_\n" + - "\x12ShutdownVmResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12/\n" + - "\x05state\x18\x02 \x01(\x0e2\x19.vmprovisioner.v1.VmStateR\x05state\"%\n" + - "\x0ePauseVmRequest\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\"\\\n" + - "\x0fPauseVmResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12/\n" + - "\x05state\x18\x02 \x01(\x0e2\x19.vmprovisioner.v1.VmStateR\x05state\"&\n" + - "\x0fResumeVmRequest\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\"]\n" + - "\x10ResumeVmResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12/\n" + - "\x05state\x18\x02 \x01(\x0e2\x19.vmprovisioner.v1.VmStateR\x05state\"<\n" + - "\x0fRebootVmRequest\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12\x14\n" + - "\x05force\x18\x02 \x01(\bR\x05force\"]\n" + - "\x10RebootVmResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12/\n" + - "\x05state\x18\x02 \x01(\x0e2\x19.vmprovisioner.v1.VmStateR\x05state\"'\n" + - "\x10GetVmInfoRequest\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\"\xa1\x03\n" + - "\x11GetVmInfoResponse\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x122\n" + - "\x06config\x18\x02 \x01(\v2\x1a.vmprovisioner.v1.VmConfigR\x06config\x12/\n" + - "\x05state\x18\x03 \x01(\x0e2\x19.vmprovisioner.v1.VmStateR\x05state\x125\n" + - "\ametrics\x18\x04 \x01(\v2\x1b.vmprovisioner.v1.VmMetricsR\ametrics\x12W\n" + - "\fbackend_info\x18\x05 \x03(\v24.vmprovisioner.v1.GetVmInfoResponse.BackendInfoEntryR\vbackendInfo\x12B\n" + - "\fnetwork_info\x18\x06 \x01(\v2\x1f.vmprovisioner.v1.VmNetworkInfoR\vnetworkInfo\x1a>\n" + - "\x10BackendInfoEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"m\n" + - "\vPortMapping\x12%\n" + - "\x0econtainer_port\x18\x01 \x01(\x05R\rcontainerPort\x12\x1b\n" + - "\thost_port\x18\x02 \x01(\x05R\bhostPort\x12\x1a\n" + - "\bprotocol\x18\x03 \x01(\tR\bprotocol\"\x9a\x02\n" + - "\rVmNetworkInfo\x12\x1d\n" + - "\n" + - "ip_address\x18\x01 \x01(\tR\tipAddress\x12\x1f\n" + - "\vmac_address\x18\x02 \x01(\tR\n" + - "macAddress\x12\x1d\n" + - "\n" + - "tap_device\x18\x03 \x01(\tR\ttapDevice\x12+\n" + - "\x11network_namespace\x18\x04 \x01(\tR\x10networkNamespace\x12\x18\n" + - "\agateway\x18\x05 \x01(\tR\agateway\x12\x1f\n" + - "\vdns_servers\x18\x06 \x03(\tR\n" + - "dnsServers\x12B\n" + - "\rport_mappings\x18\a \x03(\v2\x1d.vmprovisioner.v1.PortMappingR\fportMappings\"\x96\x02\n" + - "\tVmMetrics\x12*\n" + - "\x11cpu_usage_percent\x18\x01 \x01(\x01R\x0fcpuUsagePercent\x12,\n" + - "\x12memory_usage_bytes\x18\x02 \x01(\x03R\x10memoryUsageBytes\x12C\n" + - "\rnetwork_stats\x18\x03 \x01(\v2\x1e.vmprovisioner.v1.NetworkStatsR\fnetworkStats\x12C\n" + - "\rstorage_stats\x18\x04 \x01(\v2\x1e.vmprovisioner.v1.StorageStatsR\fstorageStats\x12%\n" + - "\x0euptime_seconds\x18\x05 \x01(\x03R\ruptimeSeconds\"\xbe\x01\n" + - "\fNetworkStats\x12%\n" + - "\x0ebytes_received\x18\x01 \x01(\x03R\rbytesReceived\x12+\n" + - "\x11bytes_transmitted\x18\x02 \x01(\x03R\x10bytesTransmitted\x12)\n" + - "\x10packets_received\x18\x03 \x01(\x03R\x0fpacketsReceived\x12/\n" + - "\x13packets_transmitted\x18\x04 \x01(\x03R\x12packetsTransmitted\"\xa6\x01\n" + - "\fStorageStats\x12\x1d\n" + - "\n" + - "bytes_read\x18\x01 \x01(\x03R\tbytesRead\x12#\n" + - "\rbytes_written\x18\x02 \x01(\x03R\fbytesWritten\x12'\n" + - "\x0fread_operations\x18\x03 \x01(\x03R\x0ereadOperations\x12)\n" + - "\x10write_operations\x18\x04 \x01(\x03R\x0fwriteOperations\"\x8a\x01\n" + - "\x0eListVmsRequest\x12<\n" + - "\fstate_filter\x18\x01 \x03(\x0e2\x19.vmprovisioner.v1.VmStateR\vstateFilter\x12\x1b\n" + - "\tpage_size\x18\x02 \x01(\x05R\bpageSize\x12\x1d\n" + - "\n" + - "page_token\x18\x03 \x01(\tR\tpageToken\"\x86\x01\n" + - "\x0fListVmsResponse\x12*\n" + - "\x03vms\x18\x01 \x03(\v2\x18.vmprovisioner.v1.VmInfoR\x03vms\x12&\n" + - "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12\x1f\n" + - "\vtotal_count\x18\x03 \x01(\x05R\n" + - "totalCount\"\x97\x03\n" + - "\x06VmInfo\x12\x13\n" + - "\x05vm_id\x18\x01 \x01(\tR\x04vmId\x12/\n" + - "\x05state\x18\x02 \x01(\x0e2\x19.vmprovisioner.v1.VmStateR\x05state\x12\x1d\n" + - "\n" + - "vcpu_count\x18\x03 \x01(\x05R\tvcpuCount\x12*\n" + - "\x11memory_size_bytes\x18\x04 \x01(\x03R\x0fmemorySizeBytes\x12+\n" + - "\x11created_timestamp\x18\x05 \x01(\x03R\x10createdTimestamp\x12-\n" + - "\x12modified_timestamp\x18\x06 \x01(\x03R\x11modifiedTimestamp\x12B\n" + - "\bmetadata\x18\a \x03(\v2&.vmprovisioner.v1.VmInfo.MetadataEntryR\bmetadata\x12\x1f\n" + - "\vcustomer_id\x18\b \x01(\tR\n" + - "customerId\x1a;\n" + - "\rMetadataEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01*{\n" + - "\aVmState\x12\x18\n" + - "\x14VM_STATE_UNSPECIFIED\x10\x00\x12\x14\n" + - "\x10VM_STATE_CREATED\x10\x01\x12\x14\n" + - "\x10VM_STATE_RUNNING\x10\x02\x12\x13\n" + - "\x0fVM_STATE_PAUSED\x10\x03\x12\x15\n" + - "\x11VM_STATE_SHUTDOWN\x10\x04*\x80\x01\n" + - "\vNetworkMode\x12\x1c\n" + - "\x18NETWORK_MODE_UNSPECIFIED\x10\x00\x12\x1b\n" + - "\x17NETWORK_MODE_DUAL_STACK\x10\x01\x12\x1a\n" + - "\x16NETWORK_MODE_IPV4_ONLY\x10\x02\x12\x1a\n" + - "\x16NETWORK_MODE_IPV6_ONLY\x10\x032\xf3\x05\n" + - "\tVmService\x12Q\n" + - "\bCreateVm\x12!.vmprovisioner.v1.CreateVmRequest\x1a\".vmprovisioner.v1.CreateVmResponse\x12Q\n" + - "\bDeleteVm\x12!.vmprovisioner.v1.DeleteVmRequest\x1a\".vmprovisioner.v1.DeleteVmResponse\x12K\n" + - "\x06BootVm\x12\x1f.vmprovisioner.v1.BootVmRequest\x1a .vmprovisioner.v1.BootVmResponse\x12W\n" + - "\n" + - "ShutdownVm\x12#.vmprovisioner.v1.ShutdownVmRequest\x1a$.vmprovisioner.v1.ShutdownVmResponse\x12N\n" + - "\aPauseVm\x12 .vmprovisioner.v1.PauseVmRequest\x1a!.vmprovisioner.v1.PauseVmResponse\x12Q\n" + - "\bResumeVm\x12!.vmprovisioner.v1.ResumeVmRequest\x1a\".vmprovisioner.v1.ResumeVmResponse\x12Q\n" + - "\bRebootVm\x12!.vmprovisioner.v1.RebootVmRequest\x1a\".vmprovisioner.v1.RebootVmResponse\x12T\n" + - "\tGetVmInfo\x12\".vmprovisioner.v1.GetVmInfoRequest\x1a#.vmprovisioner.v1.GetVmInfoResponse\x12N\n" + - "\aListVms\x12 .vmprovisioner.v1.ListVmsRequest\x1a!.vmprovisioner.v1.ListVmsResponseB-Z+metald/gen/vmprovisioner/v1;vmprovisionerv1b\x06proto3" - -var ( - file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescOnce sync.Once - file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescData []byte -) - -func file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescGZIP() []byte { - file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescOnce.Do(func() { - file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDesc), len(file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDesc))) - }) - return file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDescData -} - -var file_deploy_metald_proto_vmprovisioner_v1_vm_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes = make([]protoimpl.MessageInfo, 43) -var file_deploy_metald_proto_vmprovisioner_v1_vm_proto_goTypes = []any{ - (VmState)(0), // 0: vmprovisioner.v1.VmState - (NetworkMode)(0), // 1: vmprovisioner.v1.NetworkMode - (*VmConfig)(nil), // 2: vmprovisioner.v1.VmConfig - (*CpuConfig)(nil), // 3: vmprovisioner.v1.CpuConfig - (*CpuTopology)(nil), // 4: vmprovisioner.v1.CpuTopology - (*MemoryConfig)(nil), // 5: vmprovisioner.v1.MemoryConfig - (*BootConfig)(nil), // 6: vmprovisioner.v1.BootConfig - (*StorageDevice)(nil), // 7: vmprovisioner.v1.StorageDevice - (*NetworkInterface)(nil), // 8: vmprovisioner.v1.NetworkInterface - (*IPv4Config)(nil), // 9: vmprovisioner.v1.IPv4Config - (*IPv6Config)(nil), // 10: vmprovisioner.v1.IPv6Config - (*RateLimit)(nil), // 11: vmprovisioner.v1.RateLimit - (*ConsoleConfig)(nil), // 12: vmprovisioner.v1.ConsoleConfig - (*CreateVmRequest)(nil), // 13: vmprovisioner.v1.CreateVmRequest - (*CreateVmResponse)(nil), // 14: vmprovisioner.v1.CreateVmResponse - (*DeleteVmRequest)(nil), // 15: vmprovisioner.v1.DeleteVmRequest - (*DeleteVmResponse)(nil), // 16: vmprovisioner.v1.DeleteVmResponse - (*BootVmRequest)(nil), // 17: vmprovisioner.v1.BootVmRequest - (*BootVmResponse)(nil), // 18: vmprovisioner.v1.BootVmResponse - (*ShutdownVmRequest)(nil), // 19: vmprovisioner.v1.ShutdownVmRequest - (*ShutdownVmResponse)(nil), // 20: vmprovisioner.v1.ShutdownVmResponse - (*PauseVmRequest)(nil), // 21: vmprovisioner.v1.PauseVmRequest - (*PauseVmResponse)(nil), // 22: vmprovisioner.v1.PauseVmResponse - (*ResumeVmRequest)(nil), // 23: vmprovisioner.v1.ResumeVmRequest - (*ResumeVmResponse)(nil), // 24: vmprovisioner.v1.ResumeVmResponse - (*RebootVmRequest)(nil), // 25: vmprovisioner.v1.RebootVmRequest - (*RebootVmResponse)(nil), // 26: vmprovisioner.v1.RebootVmResponse - (*GetVmInfoRequest)(nil), // 27: vmprovisioner.v1.GetVmInfoRequest - (*GetVmInfoResponse)(nil), // 28: vmprovisioner.v1.GetVmInfoResponse - (*PortMapping)(nil), // 29: vmprovisioner.v1.PortMapping - (*VmNetworkInfo)(nil), // 30: vmprovisioner.v1.VmNetworkInfo - (*VmMetrics)(nil), // 31: vmprovisioner.v1.VmMetrics - (*NetworkStats)(nil), // 32: vmprovisioner.v1.NetworkStats - (*StorageStats)(nil), // 33: vmprovisioner.v1.StorageStats - (*ListVmsRequest)(nil), // 34: vmprovisioner.v1.ListVmsRequest - (*ListVmsResponse)(nil), // 35: vmprovisioner.v1.ListVmsResponse - (*VmInfo)(nil), // 36: vmprovisioner.v1.VmInfo - nil, // 37: vmprovisioner.v1.VmConfig.MetadataEntry - nil, // 38: vmprovisioner.v1.CpuConfig.FeaturesEntry - nil, // 39: vmprovisioner.v1.MemoryConfig.BackingEntry - nil, // 40: vmprovisioner.v1.BootConfig.BootOptionsEntry - nil, // 41: vmprovisioner.v1.StorageDevice.OptionsEntry - nil, // 42: vmprovisioner.v1.NetworkInterface.OptionsEntry - nil, // 43: vmprovisioner.v1.GetVmInfoResponse.BackendInfoEntry - nil, // 44: vmprovisioner.v1.VmInfo.MetadataEntry -} -var file_deploy_metald_proto_vmprovisioner_v1_vm_proto_depIdxs = []int32{ - 3, // 0: vmprovisioner.v1.VmConfig.cpu:type_name -> vmprovisioner.v1.CpuConfig - 5, // 1: vmprovisioner.v1.VmConfig.memory:type_name -> vmprovisioner.v1.MemoryConfig - 6, // 2: vmprovisioner.v1.VmConfig.boot:type_name -> vmprovisioner.v1.BootConfig - 7, // 3: vmprovisioner.v1.VmConfig.storage:type_name -> vmprovisioner.v1.StorageDevice - 8, // 4: vmprovisioner.v1.VmConfig.network:type_name -> vmprovisioner.v1.NetworkInterface - 12, // 5: vmprovisioner.v1.VmConfig.console:type_name -> vmprovisioner.v1.ConsoleConfig - 37, // 6: vmprovisioner.v1.VmConfig.metadata:type_name -> vmprovisioner.v1.VmConfig.MetadataEntry - 4, // 7: vmprovisioner.v1.CpuConfig.topology:type_name -> vmprovisioner.v1.CpuTopology - 38, // 8: vmprovisioner.v1.CpuConfig.features:type_name -> vmprovisioner.v1.CpuConfig.FeaturesEntry - 39, // 9: vmprovisioner.v1.MemoryConfig.backing:type_name -> vmprovisioner.v1.MemoryConfig.BackingEntry - 40, // 10: vmprovisioner.v1.BootConfig.boot_options:type_name -> vmprovisioner.v1.BootConfig.BootOptionsEntry - 41, // 11: vmprovisioner.v1.StorageDevice.options:type_name -> vmprovisioner.v1.StorageDevice.OptionsEntry - 42, // 12: vmprovisioner.v1.NetworkInterface.options:type_name -> vmprovisioner.v1.NetworkInterface.OptionsEntry - 9, // 13: vmprovisioner.v1.NetworkInterface.ipv4_config:type_name -> vmprovisioner.v1.IPv4Config - 10, // 14: vmprovisioner.v1.NetworkInterface.ipv6_config:type_name -> vmprovisioner.v1.IPv6Config - 1, // 15: vmprovisioner.v1.NetworkInterface.mode:type_name -> vmprovisioner.v1.NetworkMode - 11, // 16: vmprovisioner.v1.NetworkInterface.rx_rate_limit:type_name -> vmprovisioner.v1.RateLimit - 11, // 17: vmprovisioner.v1.NetworkInterface.tx_rate_limit:type_name -> vmprovisioner.v1.RateLimit - 2, // 18: vmprovisioner.v1.CreateVmRequest.config:type_name -> vmprovisioner.v1.VmConfig - 0, // 19: vmprovisioner.v1.CreateVmResponse.state:type_name -> vmprovisioner.v1.VmState - 0, // 20: vmprovisioner.v1.BootVmResponse.state:type_name -> vmprovisioner.v1.VmState - 0, // 21: vmprovisioner.v1.ShutdownVmResponse.state:type_name -> vmprovisioner.v1.VmState - 0, // 22: vmprovisioner.v1.PauseVmResponse.state:type_name -> vmprovisioner.v1.VmState - 0, // 23: vmprovisioner.v1.ResumeVmResponse.state:type_name -> vmprovisioner.v1.VmState - 0, // 24: vmprovisioner.v1.RebootVmResponse.state:type_name -> vmprovisioner.v1.VmState - 2, // 25: vmprovisioner.v1.GetVmInfoResponse.config:type_name -> vmprovisioner.v1.VmConfig - 0, // 26: vmprovisioner.v1.GetVmInfoResponse.state:type_name -> vmprovisioner.v1.VmState - 31, // 27: vmprovisioner.v1.GetVmInfoResponse.metrics:type_name -> vmprovisioner.v1.VmMetrics - 43, // 28: vmprovisioner.v1.GetVmInfoResponse.backend_info:type_name -> vmprovisioner.v1.GetVmInfoResponse.BackendInfoEntry - 30, // 29: vmprovisioner.v1.GetVmInfoResponse.network_info:type_name -> vmprovisioner.v1.VmNetworkInfo - 29, // 30: vmprovisioner.v1.VmNetworkInfo.port_mappings:type_name -> vmprovisioner.v1.PortMapping - 32, // 31: vmprovisioner.v1.VmMetrics.network_stats:type_name -> vmprovisioner.v1.NetworkStats - 33, // 32: vmprovisioner.v1.VmMetrics.storage_stats:type_name -> vmprovisioner.v1.StorageStats - 0, // 33: vmprovisioner.v1.ListVmsRequest.state_filter:type_name -> vmprovisioner.v1.VmState - 36, // 34: vmprovisioner.v1.ListVmsResponse.vms:type_name -> vmprovisioner.v1.VmInfo - 0, // 35: vmprovisioner.v1.VmInfo.state:type_name -> vmprovisioner.v1.VmState - 44, // 36: vmprovisioner.v1.VmInfo.metadata:type_name -> vmprovisioner.v1.VmInfo.MetadataEntry - 13, // 37: vmprovisioner.v1.VmService.CreateVm:input_type -> vmprovisioner.v1.CreateVmRequest - 15, // 38: vmprovisioner.v1.VmService.DeleteVm:input_type -> vmprovisioner.v1.DeleteVmRequest - 17, // 39: vmprovisioner.v1.VmService.BootVm:input_type -> vmprovisioner.v1.BootVmRequest - 19, // 40: vmprovisioner.v1.VmService.ShutdownVm:input_type -> vmprovisioner.v1.ShutdownVmRequest - 21, // 41: vmprovisioner.v1.VmService.PauseVm:input_type -> vmprovisioner.v1.PauseVmRequest - 23, // 42: vmprovisioner.v1.VmService.ResumeVm:input_type -> vmprovisioner.v1.ResumeVmRequest - 25, // 43: vmprovisioner.v1.VmService.RebootVm:input_type -> vmprovisioner.v1.RebootVmRequest - 27, // 44: vmprovisioner.v1.VmService.GetVmInfo:input_type -> vmprovisioner.v1.GetVmInfoRequest - 34, // 45: vmprovisioner.v1.VmService.ListVms:input_type -> vmprovisioner.v1.ListVmsRequest - 14, // 46: vmprovisioner.v1.VmService.CreateVm:output_type -> vmprovisioner.v1.CreateVmResponse - 16, // 47: vmprovisioner.v1.VmService.DeleteVm:output_type -> vmprovisioner.v1.DeleteVmResponse - 18, // 48: vmprovisioner.v1.VmService.BootVm:output_type -> vmprovisioner.v1.BootVmResponse - 20, // 49: vmprovisioner.v1.VmService.ShutdownVm:output_type -> vmprovisioner.v1.ShutdownVmResponse - 22, // 50: vmprovisioner.v1.VmService.PauseVm:output_type -> vmprovisioner.v1.PauseVmResponse - 24, // 51: vmprovisioner.v1.VmService.ResumeVm:output_type -> vmprovisioner.v1.ResumeVmResponse - 26, // 52: vmprovisioner.v1.VmService.RebootVm:output_type -> vmprovisioner.v1.RebootVmResponse - 28, // 53: vmprovisioner.v1.VmService.GetVmInfo:output_type -> vmprovisioner.v1.GetVmInfoResponse - 35, // 54: vmprovisioner.v1.VmService.ListVms:output_type -> vmprovisioner.v1.ListVmsResponse - 46, // [46:55] is the sub-list for method output_type - 37, // [37:46] is the sub-list for method input_type - 37, // [37:37] is the sub-list for extension type_name - 37, // [37:37] is the sub-list for extension extendee - 0, // [0:37] is the sub-list for field type_name -} - -func init() { file_deploy_metald_proto_vmprovisioner_v1_vm_proto_init() } -func file_deploy_metald_proto_vmprovisioner_v1_vm_proto_init() { - if File_deploy_metald_proto_vmprovisioner_v1_vm_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDesc), len(file_deploy_metald_proto_vmprovisioner_v1_vm_proto_rawDesc)), - NumEnums: 2, - NumMessages: 43, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_deploy_metald_proto_vmprovisioner_v1_vm_proto_goTypes, - DependencyIndexes: file_deploy_metald_proto_vmprovisioner_v1_vm_proto_depIdxs, - EnumInfos: file_deploy_metald_proto_vmprovisioner_v1_vm_proto_enumTypes, - MessageInfos: file_deploy_metald_proto_vmprovisioner_v1_vm_proto_msgTypes, - }.Build() - File_deploy_metald_proto_vmprovisioner_v1_vm_proto = out.File - file_deploy_metald_proto_vmprovisioner_v1_vm_proto_goTypes = nil - file_deploy_metald_proto_vmprovisioner_v1_vm_proto_depIdxs = nil -} diff --git a/go/gen/deploy/metald/proto/vmprovisioner/v1/vmprovisionerv1connect/vm.connect.go b/go/gen/deploy/metald/proto/vmprovisioner/v1/vmprovisionerv1connect/vm.connect.go deleted file mode 100644 index 1340426a05..0000000000 --- a/go/gen/deploy/metald/proto/vmprovisioner/v1/vmprovisionerv1connect/vm.connect.go +++ /dev/null @@ -1,362 +0,0 @@ -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: deploy/metald/proto/vmprovisioner/v1/vm.proto - -package vmprovisionerv1connect - -import ( - connect "connectrpc.com/connect" - context "context" - errors "errors" - v1 "metald/gen/vmprovisioner/v1" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect.IsAtLeastVersion1_13_0 - -const ( - // VmServiceName is the fully-qualified name of the VmService service. - VmServiceName = "vmprovisioner.v1.VmService" -) - -// These constants are the fully-qualified names of the RPCs defined in this package. They're -// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. -// -// Note that these are different from the fully-qualified method names used by -// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to -// reflection-formatted method names, remove the leading slash and convert the remaining slash to a -// period. -const ( - // VmServiceCreateVmProcedure is the fully-qualified name of the VmService's CreateVm RPC. - VmServiceCreateVmProcedure = "/vmprovisioner.v1.VmService/CreateVm" - // VmServiceDeleteVmProcedure is the fully-qualified name of the VmService's DeleteVm RPC. - VmServiceDeleteVmProcedure = "/vmprovisioner.v1.VmService/DeleteVm" - // VmServiceBootVmProcedure is the fully-qualified name of the VmService's BootVm RPC. - VmServiceBootVmProcedure = "/vmprovisioner.v1.VmService/BootVm" - // VmServiceShutdownVmProcedure is the fully-qualified name of the VmService's ShutdownVm RPC. - VmServiceShutdownVmProcedure = "/vmprovisioner.v1.VmService/ShutdownVm" - // VmServicePauseVmProcedure is the fully-qualified name of the VmService's PauseVm RPC. - VmServicePauseVmProcedure = "/vmprovisioner.v1.VmService/PauseVm" - // VmServiceResumeVmProcedure is the fully-qualified name of the VmService's ResumeVm RPC. - VmServiceResumeVmProcedure = "/vmprovisioner.v1.VmService/ResumeVm" - // VmServiceRebootVmProcedure is the fully-qualified name of the VmService's RebootVm RPC. - VmServiceRebootVmProcedure = "/vmprovisioner.v1.VmService/RebootVm" - // VmServiceGetVmInfoProcedure is the fully-qualified name of the VmService's GetVmInfo RPC. - VmServiceGetVmInfoProcedure = "/vmprovisioner.v1.VmService/GetVmInfo" - // VmServiceListVmsProcedure is the fully-qualified name of the VmService's ListVms RPC. - VmServiceListVmsProcedure = "/vmprovisioner.v1.VmService/ListVms" -) - -// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. -var ( - vmServiceServiceDescriptor = v1.File_deploy_metald_proto_vmprovisioner_v1_vm_proto.Services().ByName("VmService") - vmServiceCreateVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("CreateVm") - vmServiceDeleteVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("DeleteVm") - vmServiceBootVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("BootVm") - vmServiceShutdownVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("ShutdownVm") - vmServicePauseVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("PauseVm") - vmServiceResumeVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("ResumeVm") - vmServiceRebootVmMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("RebootVm") - vmServiceGetVmInfoMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("GetVmInfo") - vmServiceListVmsMethodDescriptor = vmServiceServiceDescriptor.Methods().ByName("ListVms") -) - -// VmServiceClient is a client for the vmprovisioner.v1.VmService service. -type VmServiceClient interface { - // CreateVm creates a new virtual machine instance - CreateVm(context.Context, *connect.Request[v1.CreateVmRequest]) (*connect.Response[v1.CreateVmResponse], error) - // DeleteVm removes a virtual machine instance - DeleteVm(context.Context, *connect.Request[v1.DeleteVmRequest]) (*connect.Response[v1.DeleteVmResponse], error) - // BootVm starts a created virtual machine - BootVm(context.Context, *connect.Request[v1.BootVmRequest]) (*connect.Response[v1.BootVmResponse], error) - // ShutdownVm gracefully stops a running virtual machine - ShutdownVm(context.Context, *connect.Request[v1.ShutdownVmRequest]) (*connect.Response[v1.ShutdownVmResponse], error) - // PauseVm pauses a running virtual machine - PauseVm(context.Context, *connect.Request[v1.PauseVmRequest]) (*connect.Response[v1.PauseVmResponse], error) - // ResumeVm resumes a paused virtual machine - ResumeVm(context.Context, *connect.Request[v1.ResumeVmRequest]) (*connect.Response[v1.ResumeVmResponse], error) - // RebootVm restarts a running virtual machine - RebootVm(context.Context, *connect.Request[v1.RebootVmRequest]) (*connect.Response[v1.RebootVmResponse], error) - // GetVmInfo retrieves virtual machine status and configuration - GetVmInfo(context.Context, *connect.Request[v1.GetVmInfoRequest]) (*connect.Response[v1.GetVmInfoResponse], error) - // ListVms lists all virtual machines managed by this service - ListVms(context.Context, *connect.Request[v1.ListVmsRequest]) (*connect.Response[v1.ListVmsResponse], error) -} - -// NewVmServiceClient constructs a client for the vmprovisioner.v1.VmService service. By default, it -// uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, and sends -// uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the connect.WithGRPC() or -// connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewVmServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) VmServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - return &vmServiceClient{ - createVm: connect.NewClient[v1.CreateVmRequest, v1.CreateVmResponse]( - httpClient, - baseURL+VmServiceCreateVmProcedure, - connect.WithSchema(vmServiceCreateVmMethodDescriptor), - connect.WithClientOptions(opts...), - ), - deleteVm: connect.NewClient[v1.DeleteVmRequest, v1.DeleteVmResponse]( - httpClient, - baseURL+VmServiceDeleteVmProcedure, - connect.WithSchema(vmServiceDeleteVmMethodDescriptor), - connect.WithClientOptions(opts...), - ), - bootVm: connect.NewClient[v1.BootVmRequest, v1.BootVmResponse]( - httpClient, - baseURL+VmServiceBootVmProcedure, - connect.WithSchema(vmServiceBootVmMethodDescriptor), - connect.WithClientOptions(opts...), - ), - shutdownVm: connect.NewClient[v1.ShutdownVmRequest, v1.ShutdownVmResponse]( - httpClient, - baseURL+VmServiceShutdownVmProcedure, - connect.WithSchema(vmServiceShutdownVmMethodDescriptor), - connect.WithClientOptions(opts...), - ), - pauseVm: connect.NewClient[v1.PauseVmRequest, v1.PauseVmResponse]( - httpClient, - baseURL+VmServicePauseVmProcedure, - connect.WithSchema(vmServicePauseVmMethodDescriptor), - connect.WithClientOptions(opts...), - ), - resumeVm: connect.NewClient[v1.ResumeVmRequest, v1.ResumeVmResponse]( - httpClient, - baseURL+VmServiceResumeVmProcedure, - connect.WithSchema(vmServiceResumeVmMethodDescriptor), - connect.WithClientOptions(opts...), - ), - rebootVm: connect.NewClient[v1.RebootVmRequest, v1.RebootVmResponse]( - httpClient, - baseURL+VmServiceRebootVmProcedure, - connect.WithSchema(vmServiceRebootVmMethodDescriptor), - connect.WithClientOptions(opts...), - ), - getVmInfo: connect.NewClient[v1.GetVmInfoRequest, v1.GetVmInfoResponse]( - httpClient, - baseURL+VmServiceGetVmInfoProcedure, - connect.WithSchema(vmServiceGetVmInfoMethodDescriptor), - connect.WithClientOptions(opts...), - ), - listVms: connect.NewClient[v1.ListVmsRequest, v1.ListVmsResponse]( - httpClient, - baseURL+VmServiceListVmsProcedure, - connect.WithSchema(vmServiceListVmsMethodDescriptor), - connect.WithClientOptions(opts...), - ), - } -} - -// vmServiceClient implements VmServiceClient. -type vmServiceClient struct { - createVm *connect.Client[v1.CreateVmRequest, v1.CreateVmResponse] - deleteVm *connect.Client[v1.DeleteVmRequest, v1.DeleteVmResponse] - bootVm *connect.Client[v1.BootVmRequest, v1.BootVmResponse] - shutdownVm *connect.Client[v1.ShutdownVmRequest, v1.ShutdownVmResponse] - pauseVm *connect.Client[v1.PauseVmRequest, v1.PauseVmResponse] - resumeVm *connect.Client[v1.ResumeVmRequest, v1.ResumeVmResponse] - rebootVm *connect.Client[v1.RebootVmRequest, v1.RebootVmResponse] - getVmInfo *connect.Client[v1.GetVmInfoRequest, v1.GetVmInfoResponse] - listVms *connect.Client[v1.ListVmsRequest, v1.ListVmsResponse] -} - -// CreateVm calls vmprovisioner.v1.VmService.CreateVm. -func (c *vmServiceClient) CreateVm(ctx context.Context, req *connect.Request[v1.CreateVmRequest]) (*connect.Response[v1.CreateVmResponse], error) { - return c.createVm.CallUnary(ctx, req) -} - -// DeleteVm calls vmprovisioner.v1.VmService.DeleteVm. -func (c *vmServiceClient) DeleteVm(ctx context.Context, req *connect.Request[v1.DeleteVmRequest]) (*connect.Response[v1.DeleteVmResponse], error) { - return c.deleteVm.CallUnary(ctx, req) -} - -// BootVm calls vmprovisioner.v1.VmService.BootVm. -func (c *vmServiceClient) BootVm(ctx context.Context, req *connect.Request[v1.BootVmRequest]) (*connect.Response[v1.BootVmResponse], error) { - return c.bootVm.CallUnary(ctx, req) -} - -// ShutdownVm calls vmprovisioner.v1.VmService.ShutdownVm. -func (c *vmServiceClient) ShutdownVm(ctx context.Context, req *connect.Request[v1.ShutdownVmRequest]) (*connect.Response[v1.ShutdownVmResponse], error) { - return c.shutdownVm.CallUnary(ctx, req) -} - -// PauseVm calls vmprovisioner.v1.VmService.PauseVm. -func (c *vmServiceClient) PauseVm(ctx context.Context, req *connect.Request[v1.PauseVmRequest]) (*connect.Response[v1.PauseVmResponse], error) { - return c.pauseVm.CallUnary(ctx, req) -} - -// ResumeVm calls vmprovisioner.v1.VmService.ResumeVm. -func (c *vmServiceClient) ResumeVm(ctx context.Context, req *connect.Request[v1.ResumeVmRequest]) (*connect.Response[v1.ResumeVmResponse], error) { - return c.resumeVm.CallUnary(ctx, req) -} - -// RebootVm calls vmprovisioner.v1.VmService.RebootVm. -func (c *vmServiceClient) RebootVm(ctx context.Context, req *connect.Request[v1.RebootVmRequest]) (*connect.Response[v1.RebootVmResponse], error) { - return c.rebootVm.CallUnary(ctx, req) -} - -// GetVmInfo calls vmprovisioner.v1.VmService.GetVmInfo. -func (c *vmServiceClient) GetVmInfo(ctx context.Context, req *connect.Request[v1.GetVmInfoRequest]) (*connect.Response[v1.GetVmInfoResponse], error) { - return c.getVmInfo.CallUnary(ctx, req) -} - -// ListVms calls vmprovisioner.v1.VmService.ListVms. -func (c *vmServiceClient) ListVms(ctx context.Context, req *connect.Request[v1.ListVmsRequest]) (*connect.Response[v1.ListVmsResponse], error) { - return c.listVms.CallUnary(ctx, req) -} - -// VmServiceHandler is an implementation of the vmprovisioner.v1.VmService service. -type VmServiceHandler interface { - // CreateVm creates a new virtual machine instance - CreateVm(context.Context, *connect.Request[v1.CreateVmRequest]) (*connect.Response[v1.CreateVmResponse], error) - // DeleteVm removes a virtual machine instance - DeleteVm(context.Context, *connect.Request[v1.DeleteVmRequest]) (*connect.Response[v1.DeleteVmResponse], error) - // BootVm starts a created virtual machine - BootVm(context.Context, *connect.Request[v1.BootVmRequest]) (*connect.Response[v1.BootVmResponse], error) - // ShutdownVm gracefully stops a running virtual machine - ShutdownVm(context.Context, *connect.Request[v1.ShutdownVmRequest]) (*connect.Response[v1.ShutdownVmResponse], error) - // PauseVm pauses a running virtual machine - PauseVm(context.Context, *connect.Request[v1.PauseVmRequest]) (*connect.Response[v1.PauseVmResponse], error) - // ResumeVm resumes a paused virtual machine - ResumeVm(context.Context, *connect.Request[v1.ResumeVmRequest]) (*connect.Response[v1.ResumeVmResponse], error) - // RebootVm restarts a running virtual machine - RebootVm(context.Context, *connect.Request[v1.RebootVmRequest]) (*connect.Response[v1.RebootVmResponse], error) - // GetVmInfo retrieves virtual machine status and configuration - GetVmInfo(context.Context, *connect.Request[v1.GetVmInfoRequest]) (*connect.Response[v1.GetVmInfoResponse], error) - // ListVms lists all virtual machines managed by this service - ListVms(context.Context, *connect.Request[v1.ListVmsRequest]) (*connect.Response[v1.ListVmsResponse], error) -} - -// NewVmServiceHandler builds an HTTP handler from the service implementation. It returns the path -// on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewVmServiceHandler(svc VmServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - vmServiceCreateVmHandler := connect.NewUnaryHandler( - VmServiceCreateVmProcedure, - svc.CreateVm, - connect.WithSchema(vmServiceCreateVmMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - vmServiceDeleteVmHandler := connect.NewUnaryHandler( - VmServiceDeleteVmProcedure, - svc.DeleteVm, - connect.WithSchema(vmServiceDeleteVmMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - vmServiceBootVmHandler := connect.NewUnaryHandler( - VmServiceBootVmProcedure, - svc.BootVm, - connect.WithSchema(vmServiceBootVmMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - vmServiceShutdownVmHandler := connect.NewUnaryHandler( - VmServiceShutdownVmProcedure, - svc.ShutdownVm, - connect.WithSchema(vmServiceShutdownVmMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - vmServicePauseVmHandler := connect.NewUnaryHandler( - VmServicePauseVmProcedure, - svc.PauseVm, - connect.WithSchema(vmServicePauseVmMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - vmServiceResumeVmHandler := connect.NewUnaryHandler( - VmServiceResumeVmProcedure, - svc.ResumeVm, - connect.WithSchema(vmServiceResumeVmMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - vmServiceRebootVmHandler := connect.NewUnaryHandler( - VmServiceRebootVmProcedure, - svc.RebootVm, - connect.WithSchema(vmServiceRebootVmMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - vmServiceGetVmInfoHandler := connect.NewUnaryHandler( - VmServiceGetVmInfoProcedure, - svc.GetVmInfo, - connect.WithSchema(vmServiceGetVmInfoMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - vmServiceListVmsHandler := connect.NewUnaryHandler( - VmServiceListVmsProcedure, - svc.ListVms, - connect.WithSchema(vmServiceListVmsMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) - return "/vmprovisioner.v1.VmService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch r.URL.Path { - case VmServiceCreateVmProcedure: - vmServiceCreateVmHandler.ServeHTTP(w, r) - case VmServiceDeleteVmProcedure: - vmServiceDeleteVmHandler.ServeHTTP(w, r) - case VmServiceBootVmProcedure: - vmServiceBootVmHandler.ServeHTTP(w, r) - case VmServiceShutdownVmProcedure: - vmServiceShutdownVmHandler.ServeHTTP(w, r) - case VmServicePauseVmProcedure: - vmServicePauseVmHandler.ServeHTTP(w, r) - case VmServiceResumeVmProcedure: - vmServiceResumeVmHandler.ServeHTTP(w, r) - case VmServiceRebootVmProcedure: - vmServiceRebootVmHandler.ServeHTTP(w, r) - case VmServiceGetVmInfoProcedure: - vmServiceGetVmInfoHandler.ServeHTTP(w, r) - case VmServiceListVmsProcedure: - vmServiceListVmsHandler.ServeHTTP(w, r) - default: - http.NotFound(w, r) - } - }) -} - -// UnimplementedVmServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedVmServiceHandler struct{} - -func (UnimplementedVmServiceHandler) CreateVm(context.Context, *connect.Request[v1.CreateVmRequest]) (*connect.Response[v1.CreateVmResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("vmprovisioner.v1.VmService.CreateVm is not implemented")) -} - -func (UnimplementedVmServiceHandler) DeleteVm(context.Context, *connect.Request[v1.DeleteVmRequest]) (*connect.Response[v1.DeleteVmResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("vmprovisioner.v1.VmService.DeleteVm is not implemented")) -} - -func (UnimplementedVmServiceHandler) BootVm(context.Context, *connect.Request[v1.BootVmRequest]) (*connect.Response[v1.BootVmResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("vmprovisioner.v1.VmService.BootVm is not implemented")) -} - -func (UnimplementedVmServiceHandler) ShutdownVm(context.Context, *connect.Request[v1.ShutdownVmRequest]) (*connect.Response[v1.ShutdownVmResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("vmprovisioner.v1.VmService.ShutdownVm is not implemented")) -} - -func (UnimplementedVmServiceHandler) PauseVm(context.Context, *connect.Request[v1.PauseVmRequest]) (*connect.Response[v1.PauseVmResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("vmprovisioner.v1.VmService.PauseVm is not implemented")) -} - -func (UnimplementedVmServiceHandler) ResumeVm(context.Context, *connect.Request[v1.ResumeVmRequest]) (*connect.Response[v1.ResumeVmResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("vmprovisioner.v1.VmService.ResumeVm is not implemented")) -} - -func (UnimplementedVmServiceHandler) RebootVm(context.Context, *connect.Request[v1.RebootVmRequest]) (*connect.Response[v1.RebootVmResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("vmprovisioner.v1.VmService.RebootVm is not implemented")) -} - -func (UnimplementedVmServiceHandler) GetVmInfo(context.Context, *connect.Request[v1.GetVmInfoRequest]) (*connect.Response[v1.GetVmInfoResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("vmprovisioner.v1.VmService.GetVmInfo is not implemented")) -} - -func (UnimplementedVmServiceHandler) ListVms(context.Context, *connect.Request[v1.ListVmsRequest]) (*connect.Response[v1.ListVmsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("vmprovisioner.v1.VmService.ListVms is not implemented")) -} diff --git a/go/go.mod b/go/go.mod index 35fab039bf..ce985c1aae 100644 --- a/go/go.mod +++ b/go/go.mod @@ -31,6 +31,7 @@ require ( github.com/unkeyed/unkey/go/deploy/assetmanagerd v0.0.0-20250709084132-0dd195e4c51b github.com/unkeyed/unkey/go/deploy/billaged v0.0.0-20250709084132-0dd195e4c51b github.com/unkeyed/unkey/go/deploy/builderd v0.0.0-20250709084132-0dd195e4c51b + github.com/unkeyed/unkey/go/deploy/pkg/tls v0.0.0-00010101000000-000000000000 github.com/urfave/cli/v3 v3.3.3 go.opentelemetry.io/contrib/bridges/otelslog v0.11.0 go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 @@ -103,6 +104,7 @@ require ( github.com/getkin/kin-openapi v0.131.0 // indirect github.com/go-faster/city v1.0.1 // indirect github.com/go-faster/errors v0.7.1 // indirect + github.com/go-jose/go-jose/v4 v4.0.5 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect @@ -167,10 +169,12 @@ require ( github.com/speakeasy-api/openapi-overlay v0.9.0 // indirect github.com/spf13/cobra v1.8.1 // indirect github.com/spf13/pflag v1.0.6 // indirect + github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/stoewer/go-strcase v1.2.0 // indirect github.com/tetratelabs/wazero v1.8.2 // indirect github.com/tklauser/go-sysconf v0.3.15 // indirect github.com/tklauser/numcpus v0.10.0 // indirect + github.com/unkeyed/unkey/go/deploy/pkg/spiffe v0.0.0-00010101000000-000000000000 // indirect github.com/vmware-labs/yaml-jsonpath v0.3.2 // indirect github.com/wasilibs/go-pgquery v0.0.0-20240606042535-c0843d6592cc // indirect github.com/wasilibs/wazero-helpers v0.0.0-20240604052452-61d7981e9a38 // indirect @@ -180,6 +184,7 @@ require ( github.com/xeipuuv/gojsonschema v1.2.0 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zeebo/errs v1.4.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect go.opentelemetry.io/otel/log v0.12.2 // indirect @@ -205,4 +210,8 @@ require ( modernc.org/sqlite v1.36.2 // indirect ) +replace github.com/unkeyed/unkey/go/deploy/pkg/tls => ./deploy/pkg/tls + +replace github.com/unkeyed/unkey/go/deploy/pkg/spiffe => ./deploy/pkg/spiffe + tool github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen diff --git a/go/go.sum b/go/go.sum index beb54a8d1c..a1f9d1d9d2 100644 --- a/go/go.sum +++ b/go/go.sum @@ -153,6 +153,8 @@ github.com/go-faster/city v1.0.1 h1:4WAxSZ3V2Ws4QRDrscLEDcibJY8uf41H6AhXDrNDcGw= github.com/go-faster/city v1.0.1/go.mod h1:jKcUJId49qdW3L1qKHH/3wPeUstCVpVSXTM6vO3VcTw= github.com/go-faster/errors v0.7.1 h1:MkJTnDoEdi9pDabt1dpWf7AA8/BaSYZqibYyhZ20AYg= github.com/go-faster/errors v0.7.1/go.mod h1:5ySTjWFiphBs07IKuiL69nxdfd5+fzh1u7FPGZP2quo= +github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= +github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -364,6 +366,8 @@ github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3k github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= +github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0= github.com/sqlc-dev/sqlc v1.28.0 h1:2QB4X22pKNpKMyb8dRLnqZwMXW6S+ZCyYCpa+3/ICcI= github.com/sqlc-dev/sqlc v1.28.0/go.mod h1:x6wDsOHH60dTX3ES9sUUxRVaROg5aFB3l3nkkjyuK1A= @@ -421,6 +425,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= +github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= go.mongodb.org/mongo-driver v1.11.4/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= From 56613aa82ec9f2e5b3918d10757f8a00edef4b18 Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 17:52:36 +0200 Subject: [PATCH 05/20] feat: try running ctrl plane in docker --- deployment/docker-compose.yaml | 19 --- go/Dockerfile | 6 +- go/apps/ctrl/run.go | 6 +- .../ctrl/services/version/deploy_workflow.go | 22 ++-- go/deploy/ctrl/Makefile | 113 ++++++++++++++++++ go/deploy/ctrl/docker-compose.yml | 43 +++++++ go/go.mod | 3 - go/go.sum | 6 - 8 files changed, 173 insertions(+), 45 deletions(-) create mode 100644 go/deploy/ctrl/Makefile create mode 100644 go/deploy/ctrl/docker-compose.yml diff --git a/deployment/docker-compose.yaml b/deployment/docker-compose.yaml index 72ecf862c0..3468f1d5d7 100644 --- a/deployment/docker-compose.yaml +++ b/deployment/docker-compose.yaml @@ -69,25 +69,6 @@ services: OTEL_EXPORTER_OTLP_PROTOCOL: "http/protobuf" # UNKEY_PROMETHEUS_PORT: 2112 - ctrl: - container_name: ctrl - command: ["run", "ctrl"] - build: - context: ../go - dockerfile: ./Dockerfile - depends_on: - - mysql - - otel - ports: - - "7091:7091" - environment: - UNKEY_HTTP_PORT: 7091 - UNKEY_DATABASE_PRIMARY: "unkey:password@tcp(mysql:3306)/unkey?parseTime=true" - UNKEY_DATABASE_HYDRA: "unkey:password@tcp(mysql:3306)/hydra?parseTime=true" - UNKEY_OTEL: true - OTEL_EXPORTER_OTLP_ENDPOINT: "http://otel:4318" - OTEL_EXPORTER_OTLP_PROTOCOL: "http/protobuf" - UNKEY_AUTH_TOKEN: "ctrl-secret-token" redis: image: redis:latest diff --git a/go/Dockerfile b/go/Dockerfile index 492b13c349..a11a67fa68 100644 --- a/go/Dockerfile +++ b/go/Dockerfile @@ -1,10 +1,10 @@ FROM golang:1.24 AS builder WORKDIR /go/src/github.com/unkeyed/unkey/go -COPY go.sum go.mod ./ -RUN go mod download - +# Copy everything first because go.mod has replace directives pointing to ./deploy/pkg/ modules +# This ensures all local dependencies are available before go mod download COPY . . +RUN go mod download ARG VERSION ENV CGO_ENABLED=0 RUN go build -o bin/unkey -ldflags="-X 'github.com/unkeyed/unkey/go/pkg/version.Version=${VERSION}'" ./main.go diff --git a/go/apps/ctrl/run.go b/go/apps/ctrl/run.go index ed9ba5b193..5311f7102f 100644 --- a/go/apps/ctrl/run.go +++ b/go/apps/ctrl/run.go @@ -109,15 +109,15 @@ func Run(ctx context.Context, cfg Config) error { Mode: deployTLS.ModeSPIFFE, SPIFFESocketPath: cfg.SPIFFESocketPath, } - + tlsProvider, err := deployTLS.NewProvider(ctx, tlsConfig) if err != nil { return fmt.Errorf("failed to create TLS provider for metald: %w", err) } - + httpClient := tlsProvider.HTTPClient() httpClient.Timeout = 30 * time.Second - + metaldClient := vmprovisionerv1connect.NewVmServiceClient( httpClient, cfg.MetaldAddress, diff --git a/go/apps/ctrl/services/version/deploy_workflow.go b/go/apps/ctrl/services/version/deploy_workflow.go index d5408d21f8..6cda0671bd 100644 --- a/go/apps/ctrl/services/version/deploy_workflow.go +++ b/go/apps/ctrl/services/version/deploy_workflow.go @@ -316,14 +316,14 @@ buildComplete: ConsoleType: "serial", }, Metadata: map[string]string{ - "template": "standard", - "purpose": "general", - "docker_image": req.DockerImage, - "runtime": "docker", - "version_id": req.VersionID, - "workspace_id": req.WorkspaceID, - "project_id": req.ProjectID, - "created_by": "deploy-workflow", + "template": "standard", + "purpose": "general", + "docker_image": req.DockerImage, + "runtime": "docker", + "version_id": req.VersionID, + "workspace_id": req.WorkspaceID, + "project_id": req.ProjectID, + "created_by": "deploy-workflow", }, } @@ -380,8 +380,8 @@ buildComplete: } // Check if VM is ready for boot - if vmInfo.State == vmprovisionerv1.VmState_VM_STATE_CREATED || - vmInfo.State == vmprovisionerv1.VmState_VM_STATE_RUNNING { + if vmInfo.State == vmprovisionerv1.VmState_VM_STATE_CREATED || + vmInfo.State == vmprovisionerv1.VmState_VM_STATE_RUNNING { w.logger.Info("VM is ready", "vm_id", createResult.VmId, "state", vmInfo.State.String()) goto vmReady } @@ -399,7 +399,7 @@ buildComplete: // If we reach here, VM never became ready return fmt.Errorf("VM polling timed out after 30 attempts (30 seconds)") -vmReady: + vmReady: // Boot VM _, err = hydra.Step(ctx, "boot-vm", func(stepCtx context.Context) (*vmprovisionerv1.BootVmResponse, error) { diff --git a/go/deploy/ctrl/Makefile b/go/deploy/ctrl/Makefile new file mode 100644 index 0000000000..29a416acd3 --- /dev/null +++ b/go/deploy/ctrl/Makefile @@ -0,0 +1,113 @@ +# Ctrl Control Plane Service - Docker Makefile + +.DEFAULT_GOAL := help + +# Variables +SERVICE_NAME := ctrl +IMAGE_NAME := unkey/$(SERVICE_NAME) +TRUST_DOMAIN := development.unkey.app +SPIRE_SOCKET := /var/lib/spire/server/server.sock +SPIRE_DIR := /opt/spire + +# Colors for output +GREEN := \033[0;32m +YELLOW := \033[1;33m +RED := \033[0;31m +BLUE := \033[0;34m +CYAN := \033[36m +NC := \033[0m +RESET := \033[0m + +.PHONY: help build run stop logs spire-register clean compose-up compose-down + +help: ## Display this help message + @echo "" + @echo "$(CYAN)Ctrl Control Plane Service - Docker Management$(RESET)" + @echo "" + @awk 'BEGIN {FS = ":.*##"; printf "Usage:\n make $(CYAN)$(RESET)\n"} /^[a-zA-Z_-]+:.*?##/ { printf " $(CYAN)%-20s$(RESET) %s\n", $$1, $$2 }' $(MAKEFILE_LIST) + @echo "" + +build: ## Build Docker image + @echo "$(BLUE)Building Docker image...$(NC)" + @docker build -t $(IMAGE_NAME):latest --build-arg VERSION=latest ../../ + @echo "$(GREEN)✓ Image built: $(IMAGE_NAME):latest$(NC)" + +run: ## Run Docker container + @echo "$(BLUE)Starting ctrl container...$(NC)" + @docker run -d --name unkey-$(SERVICE_NAME) \ + -p 8084:8084 \ + -v /var/lib/spire/agent/agent.sock:/var/lib/spire/agent/agent.sock \ + -e UNKEY_DATABASE_PRIMARY="$${UNKEY_DATABASE_PRIMARY}" \ + -e UNKEY_DATABASE_HYDRA="$${UNKEY_DATABASE_HYDRA}" \ + -e UNKEY_METALD_ADDRESS="$${UNKEY_METALD_ADDRESS:-https://host.docker.internal:8080}" \ + -e UNKEY_HTTP_PORT="8084" \ + -e UNKEY_PLATFORM="docker" \ + -e UNKEY_REGION="docker" \ + -e UNKEY_OTEL="true" \ + -e UNKEY_SPIFFE_SOCKET_PATH="/var/lib/spire/agent/agent.sock" \ + $(IMAGE_NAME):latest run ctrl + @echo "$(GREEN)✓ Container started: unkey-$(SERVICE_NAME)$(NC)" + @echo "$(YELLOW)Next: Run 'make spire-register' to register with SPIRE$(NC)" + +stop: ## Stop and remove Docker container + @echo "$(BLUE)Stopping ctrl container...$(NC)" + @docker stop unkey-$(SERVICE_NAME) 2>/dev/null || true + @docker rm unkey-$(SERVICE_NAME) 2>/dev/null || true + @echo "$(GREEN)✓ Container stopped$(NC)" + +logs: ## Follow container logs + @docker logs -f unkey-$(SERVICE_NAME) + +spire-register: ## Register Docker container with SPIRE + @echo "$(BLUE)Registering ctrl container with SPIRE...$(NC)" + @echo "Trust Domain: $(YELLOW)$(TRUST_DOMAIN)$(NC)" + @if [ ! -S "$(SPIRE_SOCKET)" ]; then \ + echo "$(RED)Error: SPIRE server socket not available at $(SPIRE_SOCKET)$(NC)"; \ + exit 1; \ + fi + @CONTAINER_ID=$$(docker ps -q -f name=unkey-$(SERVICE_NAME)); \ + if [ -z "$$CONTAINER_ID" ]; then \ + echo "$(RED)Error: ctrl container not running$(NC)"; \ + echo "Start it with: make run"; \ + exit 1; \ + fi; \ + echo "$(BLUE)Container ID: $$CONTAINER_ID$(NC)"; \ + PARENT_ID="spiffe://$(TRUST_DOMAIN)/agent/node1"; \ + SPIFFE_ID="spiffe://$(TRUST_DOMAIN)/service/$(SERVICE_NAME)"; \ + if sudo $(SPIRE_DIR)/bin/spire-server entry show -socketPath "$(SPIRE_SOCKET)" -spiffeID "$$SPIFFE_ID" 2>/dev/null | grep -q "SPIFFE ID"; then \ + echo "$(YELLOW)✓ $(SERVICE_NAME) already registered$(NC)"; \ + else \ + IMAGE_ID=$$(docker inspect --format='{{.Image}}' $$CONTAINER_ID); \ + sudo $(SPIRE_DIR)/bin/spire-server entry create \ + -socketPath "$(SPIRE_SOCKET)" \ + -parentID "$$PARENT_ID" \ + -spiffeID "$$SPIFFE_ID" \ + -selector "docker:label:com.docker.compose.service:$(SERVICE_NAME)" \ + -selector "docker:image_id:$$IMAGE_ID" \ + -x509SVIDTTL 3600 \ + && echo "$(GREEN)✓ $(SERVICE_NAME) registered with SPIRE$(NC)" \ + || (echo "$(RED)✗ Failed to register $(SERVICE_NAME)$(NC)" && exit 1); \ + fi + +clean: ## Remove Docker image + @echo "$(BLUE)Cleaning up...$(NC)" + @docker rmi $(IMAGE_NAME):latest 2>/dev/null || true + @echo "$(GREEN)✓ Cleanup complete$(NC)" + +# Combined targets +up: build run spire-register ## Build, run, and register with SPIRE + @echo "$(GREEN)✓ Ctrl service is up and running!$(NC)" + +down: stop ## Stop container + @echo "$(GREEN)✓ Ctrl service stopped$(NC)" + +compose-up: ## Build and start with docker-compose + @echo "$(BLUE)Building and starting with docker-compose...$(NC)" + @docker compose up -d --build + @echo "$(GREEN)✓ Container built and started with docker-compose$(NC)" + @echo "$(YELLOW)Next: Run 'make spire-register' to register with SPIRE$(NC)" + +compose-down: ## Stop docker-compose + @echo "$(BLUE)Stopping docker-compose...$(NC)" + @docker compose down + @echo "$(GREEN)✓ Docker-compose stopped$(NC)" diff --git a/go/deploy/ctrl/docker-compose.yml b/go/deploy/ctrl/docker-compose.yml new file mode 100644 index 0000000000..c6c3d88a6e --- /dev/null +++ b/go/deploy/ctrl/docker-compose.yml @@ -0,0 +1,43 @@ +version: '3.8' + +services: + ctrl: + build: + context: ../../ + dockerfile: Dockerfile + args: + VERSION: "latest" + container_name: unkey-ctrl + ports: + - "8084:8084" + environment: + # Database configuration (pass through from host env) + UNKEY_DATABASE_PRIMARY: ${UNKEY_DATABASE_PRIMARY} + UNKEY_DATABASE_HYDRA: ${UNKEY_DATABASE_HYDRA} + + # Control plane configuration + UNKEY_HTTP_PORT: "8084" + UNKEY_METALD_ADDRESS: ${UNKEY_METALD_ADDRESS:-https://host.docker.internal:8080} + + # Instance configuration + UNKEY_PLATFORM: "docker" + UNKEY_REGION: "docker" + UNKEY_OTEL: "true" + UNKEY_SPIFFE_SOCKET_PATH: "/var/lib/spire/agent/agent.sock" + + volumes: + # Mount SPIFFE agent socket from host + - /var/lib/spire/agent/agent.sock:/var/lib/spire/agent/agent.sock + + restart: unless-stopped + + # Override the entrypoint to run ctrl command + command: ["run", "ctrl"] + + # Health check + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8084/_/health"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 10s \ No newline at end of file diff --git a/go/go.mod b/go/go.mod index ce985c1aae..6844591b2b 100644 --- a/go/go.mod +++ b/go/go.mod @@ -28,9 +28,6 @@ require ( github.com/shirou/gopsutil/v4 v4.25.5 github.com/sqlc-dev/sqlc v1.28.0 github.com/stretchr/testify v1.10.0 - github.com/unkeyed/unkey/go/deploy/assetmanagerd v0.0.0-20250709084132-0dd195e4c51b - github.com/unkeyed/unkey/go/deploy/billaged v0.0.0-20250709084132-0dd195e4c51b - github.com/unkeyed/unkey/go/deploy/builderd v0.0.0-20250709084132-0dd195e4c51b github.com/unkeyed/unkey/go/deploy/pkg/tls v0.0.0-00010101000000-000000000000 github.com/urfave/cli/v3 v3.3.3 go.opentelemetry.io/contrib/bridges/otelslog v0.11.0 diff --git a/go/go.sum b/go/go.sum index a1f9d1d9d2..3e28adc8f2 100644 --- a/go/go.sum +++ b/go/go.sum @@ -390,12 +390,6 @@ github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfj github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/unkeyed/unkey/go/deploy/assetmanagerd v0.0.0-20250709084132-0dd195e4c51b h1:102XGZQrY3viWW78AQ/piW0rwSPSMljGmz6QgiNLYrw= -github.com/unkeyed/unkey/go/deploy/assetmanagerd v0.0.0-20250709084132-0dd195e4c51b/go.mod h1:0FGpQCOhGyvLQyCawTdYnLOY/1/mtPSSWndCwgaMnkc= -github.com/unkeyed/unkey/go/deploy/billaged v0.0.0-20250709084132-0dd195e4c51b h1:xrwqIkZSBoeHEG633k9gFneN3WcZbOTVSaxs+TgknLk= -github.com/unkeyed/unkey/go/deploy/billaged v0.0.0-20250709084132-0dd195e4c51b/go.mod h1:E88GqmQBLAmuRWX8bRG7Pf56Cfmut6YQApUpFVe7PuQ= -github.com/unkeyed/unkey/go/deploy/builderd v0.0.0-20250709084132-0dd195e4c51b h1:nyFQrGeZyvt5Nbcz5n9YDzUC4S2gezRoIWWKrwdLCik= -github.com/unkeyed/unkey/go/deploy/builderd v0.0.0-20250709084132-0dd195e4c51b/go.mod h1:yEwRt1cVfgrHF09ZynWIWV2MSj0tIGysTuLGBJR5TTM= github.com/urfave/cli/v3 v3.3.3 h1:byCBaVdIXuLPIDm5CYZRVG6NvT7tv1ECqdU4YzlEa3I= github.com/urfave/cli/v3 v3.3.3/go.mod h1:FJSKtM/9AiiTOJL4fJ6TbMUkxBXn7GO9guZqoZtpYpo= github.com/vmware-labs/yaml-jsonpath v0.3.2 h1:/5QKeCBGdsInyDCyVNLbXyilb61MXGi9NP674f9Hobk= From 5aac5e2f572d66f82805c57a59925e46f1413659 Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 18:01:04 +0200 Subject: [PATCH 06/20] feat: add local db for hydra --- go/deploy/ctrl/docker-compose.yml | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/go/deploy/ctrl/docker-compose.yml b/go/deploy/ctrl/docker-compose.yml index c6c3d88a6e..70347d9b01 100644 --- a/go/deploy/ctrl/docker-compose.yml +++ b/go/deploy/ctrl/docker-compose.yml @@ -1,6 +1,24 @@ version: '3.8' services: + mysql: + container_name: ctrl-mysql + build: + context: ../../../ + dockerfile: deployment/Dockerfile.mysql + restart: always + environment: + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: unkey + MYSQL_USER: unkey + MYSQL_PASSWORD: password + command: ["--max_connections=1000"] + ports: + - 3306:3306 + volumes: + - mysql:/var/lib/mysql + - ../../../deployment/init-databases.sql:/docker-entrypoint-initdb.d/init-databases.sql + ctrl: build: context: ../../ @@ -10,10 +28,12 @@ services: container_name: unkey-ctrl ports: - "8084:8084" + depends_on: + - mysql environment: - # Database configuration (pass through from host env) + # Database configuration UNKEY_DATABASE_PRIMARY: ${UNKEY_DATABASE_PRIMARY} - UNKEY_DATABASE_HYDRA: ${UNKEY_DATABASE_HYDRA} + UNKEY_DATABASE_HYDRA: "unkey:password@tcp(mysql:3306)/hydra?parseTime=true" # Control plane configuration UNKEY_HTTP_PORT: "8084" @@ -40,4 +60,7 @@ services: interval: 30s timeout: 5s retries: 3 - start_period: 10s \ No newline at end of file + start_period: 10s + +volumes: + mysql: \ No newline at end of file From 46be8aed34764096079a9a5aa24338bbbc7cfa1d Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 18:52:51 +0200 Subject: [PATCH 07/20] feat: add a ton of logging --- .../ctrl/services/version/deploy_workflow.go | 80 +++++++++++++++---- 1 file changed, 66 insertions(+), 14 deletions(-) diff --git a/go/apps/ctrl/services/version/deploy_workflow.go b/go/apps/ctrl/services/version/deploy_workflow.go index 6cda0671bd..8240d5fb92 100644 --- a/go/apps/ctrl/services/version/deploy_workflow.go +++ b/go/apps/ctrl/services/version/deploy_workflow.go @@ -80,19 +80,26 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro w.logger.Info("starting deployment workflow", "execution_id", ctx.ExecutionID(), "version_id", req.VersionID, - "docker_image", req.DockerImage) + "docker_image", req.DockerImage, + "workspace_id", req.WorkspaceID, + "project_id", req.ProjectID) // Step 1: Generate build ID buildID, err := hydra.Step(ctx, "generate-build-id", func(stepCtx context.Context) (string, error) { - return uid.New(uid.BuildPrefix), nil + id := uid.New(uid.BuildPrefix) + w.logger.Info("generated build ID", "build_id", id) + return id, nil }) if err != nil { w.logger.Error("failed to generate build ID", "error", err) return err } + w.logger.Info("proceeding with build", "build_id", buildID) + // Step 4: Insert build into database _, err = hydra.Step(ctx, "insert-build", func(stepCtx context.Context) (*struct{}, error) { + w.logger.Info("inserting build into database", "build_id", buildID) insertErr := db.Query.InsertBuild(stepCtx, w.db.RW(), db.InsertBuildParams{ ID: buildID, WorkspaceID: req.WorkspaceID, @@ -103,6 +110,7 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro if insertErr != nil { return nil, fmt.Errorf("failed to create build record: %w", insertErr) } + w.logger.Info("build record created successfully", "build_id", buildID) return &struct{}{}, nil }) if err != nil { @@ -112,6 +120,7 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro // Step 5: Update version status to building _, err = hydra.Step(ctx, "update-version-building", func(stepCtx context.Context) (*struct{}, error) { + w.logger.Info("updating version status to building", "version_id", req.VersionID) updateErr := db.Query.UpdateVersionStatus(stepCtx, w.db.RW(), db.UpdateVersionStatusParams{ ID: req.VersionID, Status: db.VersionsStatusBuilding, @@ -120,6 +129,7 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro if updateErr != nil { return nil, fmt.Errorf("failed to update version status to building: %w", updateErr) } + w.logger.Info("version status updated to building", "version_id", req.VersionID) return &struct{}{}, nil }) if err != nil { @@ -146,10 +156,13 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro } // Wait for build completion with polling (max 150 attempts = 5 minutes) + w.logger.Info("starting build status polling", "build_id", buildID, "max_attempts", 150) var buildResult *BuildResult lastStatus := "" for attempt := 1; attempt <= 150; attempt++ { + w.logger.Info("checking build status", "build_id", buildID, "attempt", attempt) + currentBuildStatus, err := hydra.Step(ctx, fmt.Sprintf("check-build-status-%d", attempt), func(stepCtx context.Context) (*builder.BuildInfo, error) { buildStatus, statusErr := w.builderService.GetBuildStatus(stepCtx, buildID) if statusErr != nil { @@ -168,16 +181,18 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro // Skip database update if status hasn't changed if currentStatus == lastStatus { - // Status unchanged, continue to build completion check + w.logger.Info("build status unchanged, skipping database update", "build_id", buildID, "status", currentStatus, "attempt", attempt) } else { + w.logger.Info("build status changed, updating database", "build_id", buildID, "old_status", lastStatus, "new_status", currentStatus, "attempt", attempt) _, err = hydra.Step(ctx, fmt.Sprintf("update-build-status-%d", attempt), func(updateCtx context.Context) (*struct{}, error) { now := time.Now().UnixMilli() switch currentBuildStatus.Status { case builder.BuildStatusQueued: - // Build is queued, no update needed yet + w.logger.Info("build is queued, no database update needed", "build_id", buildID) case builder.BuildStatusRunning: + w.logger.Info("updating build status to running", "build_id", buildID) runningErr := db.Query.UpdateBuildStatus(updateCtx, w.db.RW(), db.UpdateBuildStatusParams{ ID: buildID, Status: db.BuildsStatusRunning, @@ -186,8 +201,10 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro if runningErr != nil { return nil, fmt.Errorf("failed to update build status to running: %w", runningErr) } + w.logger.Info("build status updated to running", "build_id", buildID) case builder.BuildStatusSuccess: + w.logger.Info("updating build status to succeeded", "build_id", buildID) successErr := db.Query.UpdateBuildSucceeded(updateCtx, w.db.RW(), db.UpdateBuildSucceededParams{ ID: buildID, Now: sql.NullInt64{Valid: true, Int64: now}, @@ -195,8 +212,10 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro if successErr != nil { return nil, fmt.Errorf("failed to update build status to succeeded: %w", successErr) } + w.logger.Info("build status updated to succeeded", "build_id", buildID) case builder.BuildStatusFailed: + w.logger.Info("updating build status to failed", "build_id", buildID, "error", currentBuildStatus.ErrorMsg) failedErr := db.Query.UpdateBuildFailed(updateCtx, w.db.RW(), db.UpdateBuildFailedParams{ ID: buildID, ErrorMessage: sql.NullString{String: currentBuildStatus.ErrorMsg, Valid: currentBuildStatus.ErrorMsg != ""}, @@ -205,8 +224,10 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro if failedErr != nil { return nil, fmt.Errorf("failed to update build status to failed: %w", failedErr) } + w.logger.Info("build status updated to failed", "build_id", buildID) // Also update version status to failed + w.logger.Info("updating version status to failed", "version_id", req.VersionID) versionErr := db.Query.UpdateVersionStatus(updateCtx, w.db.RW(), db.UpdateVersionStatusParams{ ID: req.VersionID, Status: db.VersionsStatusFailed, @@ -215,6 +236,7 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro if versionErr != nil { return nil, fmt.Errorf("failed to update version status to failed: %w", versionErr) } + w.logger.Info("version status updated to failed", "version_id", req.VersionID) } return &struct{}{}, nil @@ -229,6 +251,7 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro // Check if build is complete switch currentBuildStatus.Status { case builder.BuildStatusSuccess: + w.logger.Info("build completed successfully", "build_id", buildID, "attempt", attempt) buildResult = &BuildResult{ BuildID: buildID, Status: "succeeded", @@ -237,6 +260,7 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro goto buildComplete case builder.BuildStatusFailed: + w.logger.Info("build failed", "build_id", buildID, "attempt", attempt, "error", currentBuildStatus.ErrorMsg) buildResult = &BuildResult{ BuildID: buildID, Status: "failed", @@ -245,11 +269,14 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro goto buildComplete default: - // Still building, sleep before next attempt - err = hydra.Sleep(ctx, 2*time.Second) - if err != nil { - w.logger.Error("failed to sleep between build checks", "error", err, "attempt", attempt) - return err + // Still building, sleep before next attempt (except on last attempt) + if attempt < 150 { + w.logger.Info("build still in progress, sleeping before next check", "build_id", buildID, "status", currentStatus, "attempt", attempt, "sleep_duration", "2s") + err = hydra.Sleep(ctx, 2*time.Second) + if err != nil { + w.logger.Error("failed to sleep between build checks", "error", err, "attempt", attempt) + return err + } } } } @@ -267,10 +294,11 @@ buildComplete: // Deploy if build succeeded if buildResult.Status == "succeeded" { + w.logger.Info("build succeeded, proceeding with deployment", "build_id", buildID, "version_id", req.VersionID) // Create VM first createResult, err := hydra.Step(ctx, "create-vm", func(stepCtx context.Context) (*vmprovisionerv1.CreateVmResponse, error) { - w.logger.Info("creating VM for deployment", "version_id", req.VersionID, "docker_image", req.DockerImage) + w.logger.Info("creating VM for deployment", "version_id", req.VersionID, "docker_image", req.DockerImage, "workspace_id", req.WorkspaceID, "project_id", req.ProjectID) // Hardcoded VM configuration (TemplateStandard + ForDockerImage): vmConfig := &vmprovisionerv1.VmConfig{ @@ -327,14 +355,16 @@ buildComplete: }, } + w.logger.Info("sending VM creation request to metald", "docker_image", req.DockerImage) resp, createErr := w.metaldClient.CreateVm(stepCtx, connect.NewRequest(&vmprovisionerv1.CreateVmRequest{ Config: vmConfig, })) if createErr != nil { + w.logger.Error("metald VM creation request failed", "error", createErr, "docker_image", req.DockerImage) return nil, fmt.Errorf("failed to create VM: %w", createErr) } - w.logger.Info("VM created successfully", "vm_id", resp.Msg.VmId, "state", resp.Msg.State.String()) + w.logger.Info("VM created successfully", "vm_id", resp.Msg.VmId, "state", resp.Msg.State.String(), "docker_image", req.DockerImage) return resp.Msg, nil }) if err != nil { @@ -342,6 +372,8 @@ buildComplete: return err } + w.logger.Info("VM creation completed", "vm_id", createResult.VmId, "state", createResult.State.String()) + // Update version status to deploying (after successful VM creation) _, err = hydra.Step(ctx, "update-version-deploying", func(stepCtx context.Context) (*struct{}, error) { w.logger.Info("starting deployment", "version_id", req.VersionID) @@ -362,12 +394,17 @@ buildComplete: } // Check VM readiness (max 30 attempts = 30 seconds) + w.logger.Info("starting VM status polling", "vm_id", createResult.VmId, "max_attempts", 30) for attempt := 1; attempt <= 30; attempt++ { + w.logger.Info("checking VM status", "vm_id", createResult.VmId, "attempt", attempt) + vmInfo, err := hydra.Step(ctx, fmt.Sprintf("check-vm-status-%d", attempt), func(stepCtx context.Context) (*vmprovisionerv1.GetVmInfoResponse, error) { + w.logger.Info("sending VM status request to metald", "vm_id", createResult.VmId) resp, getErr := w.metaldClient.GetVmInfo(stepCtx, connect.NewRequest(&vmprovisionerv1.GetVmInfoRequest{ VmId: createResult.VmId, })) if getErr != nil { + w.logger.Error("metald VM status request failed", "error", getErr, "vm_id", createResult.VmId) return nil, fmt.Errorf("failed to get VM info: %w", getErr) } @@ -388,6 +425,7 @@ buildComplete: // Sleep before next attempt (except on last attempt) if attempt < 30 { + w.logger.Info("VM not ready yet, sleeping before next check", "vm_id", createResult.VmId, "state", vmInfo.State.String(), "attempt", attempt, "sleep_duration", "1s") err = hydra.Sleep(ctx, 1*time.Second) if err != nil { w.logger.Error("failed to sleep between VM checks", "error", err, "attempt", attempt) @@ -405,14 +443,17 @@ buildComplete: _, err = hydra.Step(ctx, "boot-vm", func(stepCtx context.Context) (*vmprovisionerv1.BootVmResponse, error) { w.logger.Info("booting VM", "vm_id", createResult.VmId) + w.logger.Info("sending VM boot request to metald", "vm_id", createResult.VmId) resp, bootErr := w.metaldClient.BootVm(stepCtx, connect.NewRequest(&vmprovisionerv1.BootVmRequest{ VmId: createResult.VmId, })) if bootErr != nil { + w.logger.Error("metald VM boot request failed", "error", bootErr, "vm_id", createResult.VmId) return nil, fmt.Errorf("failed to boot VM: %w", bootErr) } if !resp.Msg.Success { + w.logger.Error("VM boot was not successful", "vm_id", createResult.VmId, "state", resp.Msg.State.String()) return nil, fmt.Errorf("VM boot was not successful, state: %s", resp.Msg.State.String()) } @@ -424,9 +465,13 @@ buildComplete: return err } + w.logger.Info("VM boot completed successfully", "vm_id", createResult.VmId) + // Generate completion timestamp completionTime, err := hydra.Step(ctx, "generate-completion-timestamp", func(stepCtx context.Context) (int64, error) { - return time.Now().UnixMilli(), nil + timestamp := time.Now().UnixMilli() + w.logger.Info("generated completion timestamp", "timestamp", timestamp) + return timestamp, nil }) if err != nil { w.logger.Error("failed to generate completion timestamp", "error", err) @@ -435,16 +480,18 @@ buildComplete: // Update version status to active _, err = hydra.Step(ctx, "update-version-active", func(stepCtx context.Context) (*DeploymentResult, error) { + w.logger.Info("updating version status to active", "version_id", req.VersionID, "completion_time", completionTime) activeErr := db.Query.UpdateVersionStatus(stepCtx, w.db.RW(), db.UpdateVersionStatusParams{ ID: req.VersionID, Status: db.VersionsStatusActive, Now: sql.NullInt64{Valid: true, Int64: completionTime}, }) if activeErr != nil { + w.logger.Error("failed to update version status to active", "error", activeErr, "version_id", req.VersionID) return nil, fmt.Errorf("failed to update version status to active: %w", activeErr) } - w.logger.Info("deployment complete", "version_id", req.VersionID) + w.logger.Info("deployment complete", "version_id", req.VersionID, "status", "active") return &DeploymentResult{ VersionID: req.VersionID, @@ -455,13 +502,18 @@ buildComplete: w.logger.Error("deployment failed", "error", err, "version_id", req.VersionID) return err } + + w.logger.Info("deployment workflow stage completed successfully", "version_id", req.VersionID, "vm_id", createResult.VmId) } w.logger.Info("deployment workflow completed", "execution_id", ctx.ExecutionID(), "build_id", buildID, "version_id", req.VersionID, - "status", buildResult.Status) + "status", buildResult.Status, + "workspace_id", req.WorkspaceID, + "project_id", req.ProjectID, + "docker_image", req.DockerImage) return nil } From 1eefc1eb35f63bbf05df6fe416935a1a1a6c8965 Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 19:41:45 +0200 Subject: [PATCH 08/20] fix: looping --- .../ctrl/services/version/deploy_workflow.go | 176 ++++++++---------- 1 file changed, 78 insertions(+), 98 deletions(-) diff --git a/go/apps/ctrl/services/version/deploy_workflow.go b/go/apps/ctrl/services/version/deploy_workflow.go index 8240d5fb92..518e2b8b09 100644 --- a/go/apps/ctrl/services/version/deploy_workflow.go +++ b/go/apps/ctrl/services/version/deploy_workflow.go @@ -157,43 +157,34 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro // Wait for build completion with polling (max 150 attempts = 5 minutes) w.logger.Info("starting build status polling", "build_id", buildID, "max_attempts", 150) - var buildResult *BuildResult - lastStatus := "" - - for attempt := 1; attempt <= 150; attempt++ { - w.logger.Info("checking build status", "build_id", buildID, "attempt", attempt) + + buildResult, err := hydra.Step(ctx, "poll-build-status", func(stepCtx context.Context) (*BuildResult, error) { + var lastStatus string - currentBuildStatus, err := hydra.Step(ctx, fmt.Sprintf("check-build-status-%d", attempt), func(stepCtx context.Context) (*builder.BuildInfo, error) { + for attempt := 1; attempt <= 150; attempt++ { + w.logger.Info("checking build status", "build_id", buildID, "attempt", attempt) + buildStatus, statusErr := w.builderService.GetBuildStatus(stepCtx, buildID) if statusErr != nil { + w.logger.Error("failed to get build status", "error", statusErr, "build_id", buildID, "attempt", attempt) return nil, fmt.Errorf("failed to get build status: %w", statusErr) } - w.logger.Info("build status check", "build_id", buildID, "status", string(buildStatus.Status), "attempt", attempt) - return buildStatus, nil - }) - if err != nil { - w.logger.Error("failed to check build status", "error", err, "build_id", buildID, "attempt", attempt) - return err - } - - currentStatus := string(currentBuildStatus.Status) + currentStatus := string(buildStatus.Status) + w.logger.Info("build status check", "build_id", buildID, "status", currentStatus, "attempt", attempt) - // Skip database update if status hasn't changed - if currentStatus == lastStatus { - w.logger.Info("build status unchanged, skipping database update", "build_id", buildID, "status", currentStatus, "attempt", attempt) - } else { - w.logger.Info("build status changed, updating database", "build_id", buildID, "old_status", lastStatus, "new_status", currentStatus, "attempt", attempt) - _, err = hydra.Step(ctx, fmt.Sprintf("update-build-status-%d", attempt), func(updateCtx context.Context) (*struct{}, error) { + // Update database if status has changed + if currentStatus != lastStatus { + w.logger.Info("build status changed, updating database", "build_id", buildID, "old_status", lastStatus, "new_status", currentStatus, "attempt", attempt) now := time.Now().UnixMilli() - switch currentBuildStatus.Status { + switch buildStatus.Status { case builder.BuildStatusQueued: w.logger.Info("build is queued, no database update needed", "build_id", buildID) case builder.BuildStatusRunning: w.logger.Info("updating build status to running", "build_id", buildID) - runningErr := db.Query.UpdateBuildStatus(updateCtx, w.db.RW(), db.UpdateBuildStatusParams{ + runningErr := db.Query.UpdateBuildStatus(stepCtx, w.db.RW(), db.UpdateBuildStatusParams{ ID: buildID, Status: db.BuildsStatusRunning, Now: sql.NullInt64{Valid: true, Int64: now}, @@ -205,7 +196,7 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro case builder.BuildStatusSuccess: w.logger.Info("updating build status to succeeded", "build_id", buildID) - successErr := db.Query.UpdateBuildSucceeded(updateCtx, w.db.RW(), db.UpdateBuildSucceededParams{ + successErr := db.Query.UpdateBuildSucceeded(stepCtx, w.db.RW(), db.UpdateBuildSucceededParams{ ID: buildID, Now: sql.NullInt64{Valid: true, Int64: now}, }) @@ -215,10 +206,10 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro w.logger.Info("build status updated to succeeded", "build_id", buildID) case builder.BuildStatusFailed: - w.logger.Info("updating build status to failed", "build_id", buildID, "error", currentBuildStatus.ErrorMsg) - failedErr := db.Query.UpdateBuildFailed(updateCtx, w.db.RW(), db.UpdateBuildFailedParams{ + w.logger.Info("updating build status to failed", "build_id", buildID, "error", buildStatus.ErrorMsg) + failedErr := db.Query.UpdateBuildFailed(stepCtx, w.db.RW(), db.UpdateBuildFailedParams{ ID: buildID, - ErrorMessage: sql.NullString{String: currentBuildStatus.ErrorMsg, Valid: currentBuildStatus.ErrorMsg != ""}, + ErrorMessage: sql.NullString{String: buildStatus.ErrorMsg, Valid: buildStatus.ErrorMsg != ""}, Now: sql.NullInt64{Valid: true, Int64: now}, }) if failedErr != nil { @@ -228,7 +219,7 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro // Also update version status to failed w.logger.Info("updating version status to failed", "version_id", req.VersionID) - versionErr := db.Query.UpdateVersionStatus(updateCtx, w.db.RW(), db.UpdateVersionStatusParams{ + versionErr := db.Query.UpdateVersionStatus(stepCtx, w.db.RW(), db.UpdateVersionStatusParams{ ID: req.VersionID, Status: db.VersionsStatusFailed, Now: sql.NullInt64{Valid: true, Int64: now}, @@ -238,53 +229,48 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro } w.logger.Info("version status updated to failed", "version_id", req.VersionID) } - - return &struct{}{}, nil - }) - if err != nil { - w.logger.Error("failed to update build status", "error", err, "status", currentStatus, "attempt", attempt) - return err + lastStatus = currentStatus + } else { + w.logger.Info("build status unchanged, skipping database update", "build_id", buildID, "status", currentStatus, "attempt", attempt) } - lastStatus = currentStatus - } - // Check if build is complete - switch currentBuildStatus.Status { - case builder.BuildStatusSuccess: - w.logger.Info("build completed successfully", "build_id", buildID, "attempt", attempt) - buildResult = &BuildResult{ - BuildID: buildID, - Status: "succeeded", - ErrorMsg: "", - } - goto buildComplete - - case builder.BuildStatusFailed: - w.logger.Info("build failed", "build_id", buildID, "attempt", attempt, "error", currentBuildStatus.ErrorMsg) - buildResult = &BuildResult{ - BuildID: buildID, - Status: "failed", - ErrorMsg: currentBuildStatus.ErrorMsg, - } - goto buildComplete - - default: - // Still building, sleep before next attempt (except on last attempt) - if attempt < 150 { - w.logger.Info("build still in progress, sleeping before next check", "build_id", buildID, "status", currentStatus, "attempt", attempt, "sleep_duration", "2s") - err = hydra.Sleep(ctx, 2*time.Second) - if err != nil { - w.logger.Error("failed to sleep between build checks", "error", err, "attempt", attempt) - return err + // Check if build is complete + switch buildStatus.Status { + case builder.BuildStatusSuccess: + w.logger.Info("build completed successfully", "build_id", buildID, "attempt", attempt) + return &BuildResult{ + BuildID: buildID, + Status: "succeeded", + ErrorMsg: "", + }, nil + + case builder.BuildStatusFailed: + w.logger.Info("build failed", "build_id", buildID, "attempt", attempt, "error", buildStatus.ErrorMsg) + return &BuildResult{ + BuildID: buildID, + Status: "failed", + ErrorMsg: buildStatus.ErrorMsg, + }, nil + + default: + // Build is still in progress (queued, running, or other status) + w.logger.Info("build still in progress", "build_id", buildID, "status", currentStatus, "attempt", attempt) + + // Sleep before next attempt (except on last attempt) + if attempt < 150 { + w.logger.Info("sleeping before next build status check", "build_id", buildID, "status", currentStatus, "attempt", attempt, "sleep_duration", "2s") + time.Sleep(2 * time.Second) } } } - } - - // If we reach here, we exceeded max attempts - return fmt.Errorf("build polling timed out after 150 attempts (5 minutes)") -buildComplete: + // If we reach here, we exceeded max attempts + return nil, fmt.Errorf("build polling timed out after 150 attempts (5 minutes)") + }) + if err != nil { + w.logger.Error("build polling failed", "error", err, "build_id", buildID) + return err + } // Handle build failure if buildResult.Status == "failed" { @@ -395,49 +381,43 @@ buildComplete: // Check VM readiness (max 30 attempts = 30 seconds) w.logger.Info("starting VM status polling", "vm_id", createResult.VmId, "max_attempts", 30) - for attempt := 1; attempt <= 30; attempt++ { - w.logger.Info("checking VM status", "vm_id", createResult.VmId, "attempt", attempt) - - vmInfo, err := hydra.Step(ctx, fmt.Sprintf("check-vm-status-%d", attempt), func(stepCtx context.Context) (*vmprovisionerv1.GetVmInfoResponse, error) { + + _, err = hydra.Step(ctx, "poll-vm-status", func(stepCtx context.Context) (*struct{}, error) { + for attempt := 1; attempt <= 30; attempt++ { + w.logger.Info("checking VM status", "vm_id", createResult.VmId, "attempt", attempt) + w.logger.Info("sending VM status request to metald", "vm_id", createResult.VmId) resp, getErr := w.metaldClient.GetVmInfo(stepCtx, connect.NewRequest(&vmprovisionerv1.GetVmInfoRequest{ VmId: createResult.VmId, })) if getErr != nil { - w.logger.Error("metald VM status request failed", "error", getErr, "vm_id", createResult.VmId) + w.logger.Error("metald VM status request failed", "error", getErr, "vm_id", createResult.VmId, "attempt", attempt) return nil, fmt.Errorf("failed to get VM info: %w", getErr) } w.logger.Info("VM status check", "vm_id", createResult.VmId, "state", resp.Msg.State.String(), "attempt", attempt) - return resp.Msg, nil - }) - if err != nil { - w.logger.Error("failed to check VM status", "error", err, "vm_id", createResult.VmId, "attempt", attempt) - return err - } - // Check if VM is ready for boot - if vmInfo.State == vmprovisionerv1.VmState_VM_STATE_CREATED || - vmInfo.State == vmprovisionerv1.VmState_VM_STATE_RUNNING { - w.logger.Info("VM is ready", "vm_id", createResult.VmId, "state", vmInfo.State.String()) - goto vmReady - } + // Check if VM is ready for boot + if resp.Msg.State == vmprovisionerv1.VmState_VM_STATE_CREATED || + resp.Msg.State == vmprovisionerv1.VmState_VM_STATE_RUNNING { + w.logger.Info("VM is ready", "vm_id", createResult.VmId, "state", resp.Msg.State.String()) + return &struct{}{}, nil + } - // Sleep before next attempt (except on last attempt) - if attempt < 30 { - w.logger.Info("VM not ready yet, sleeping before next check", "vm_id", createResult.VmId, "state", vmInfo.State.String(), "attempt", attempt, "sleep_duration", "1s") - err = hydra.Sleep(ctx, 1*time.Second) - if err != nil { - w.logger.Error("failed to sleep between VM checks", "error", err, "attempt", attempt) - return err + // Sleep before next attempt (except on last attempt) + if attempt < 30 { + w.logger.Info("VM not ready yet, sleeping before next check", "vm_id", createResult.VmId, "state", resp.Msg.State.String(), "attempt", attempt, "sleep_duration", "1s") + time.Sleep(1 * time.Second) } } - } - // If we reach here, VM never became ready - return fmt.Errorf("VM polling timed out after 30 attempts (30 seconds)") - - vmReady: + // If we reach here, we exceeded max attempts + return nil, fmt.Errorf("VM polling timed out after 30 attempts (30 seconds)") + }) + if err != nil { + w.logger.Error("VM status polling failed", "error", err, "vm_id", createResult.VmId) + return err + } // Boot VM _, err = hydra.Step(ctx, "boot-vm", func(stepCtx context.Context) (*vmprovisionerv1.BootVmResponse, error) { From 0c6feea8b6b470b13674bd1ce0b968a1a31112f6 Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 20:17:10 +0200 Subject: [PATCH 09/20] fix: spire --- go/deploy/ctrl/Makefile | 41 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/go/deploy/ctrl/Makefile b/go/deploy/ctrl/Makefile index 29a416acd3..1565ce7d33 100644 --- a/go/deploy/ctrl/Makefile +++ b/go/deploy/ctrl/Makefile @@ -58,36 +58,31 @@ stop: ## Stop and remove Docker container logs: ## Follow container logs @docker logs -f unkey-$(SERVICE_NAME) -spire-register: ## Register Docker container with SPIRE +spire-register: ## Register Docker container with SPIRE (stable selectors) @echo "$(BLUE)Registering ctrl container with SPIRE...$(NC)" @echo "Trust Domain: $(YELLOW)$(TRUST_DOMAIN)$(NC)" @if [ ! -S "$(SPIRE_SOCKET)" ]; then \ echo "$(RED)Error: SPIRE server socket not available at $(SPIRE_SOCKET)$(NC)"; \ exit 1; \ fi - @CONTAINER_ID=$$(docker ps -q -f name=unkey-$(SERVICE_NAME)); \ - if [ -z "$$CONTAINER_ID" ]; then \ - echo "$(RED)Error: ctrl container not running$(NC)"; \ - echo "Start it with: make run"; \ - exit 1; \ - fi; \ - echo "$(BLUE)Container ID: $$CONTAINER_ID$(NC)"; \ - PARENT_ID="spiffe://$(TRUST_DOMAIN)/agent/node1"; \ + @PARENT_ID="spiffe://$(TRUST_DOMAIN)/agent/node1"; \ SPIFFE_ID="spiffe://$(TRUST_DOMAIN)/service/$(SERVICE_NAME)"; \ - if sudo $(SPIRE_DIR)/bin/spire-server entry show -socketPath "$(SPIRE_SOCKET)" -spiffeID "$$SPIFFE_ID" 2>/dev/null | grep -q "SPIFFE ID"; then \ - echo "$(YELLOW)✓ $(SERVICE_NAME) already registered$(NC)"; \ - else \ - IMAGE_ID=$$(docker inspect --format='{{.Image}}' $$CONTAINER_ID); \ - sudo $(SPIRE_DIR)/bin/spire-server entry create \ - -socketPath "$(SPIRE_SOCKET)" \ - -parentID "$$PARENT_ID" \ - -spiffeID "$$SPIFFE_ID" \ - -selector "docker:label:com.docker.compose.service:$(SERVICE_NAME)" \ - -selector "docker:image_id:$$IMAGE_ID" \ - -x509SVIDTTL 3600 \ - && echo "$(GREEN)✓ $(SERVICE_NAME) registered with SPIRE$(NC)" \ - || (echo "$(RED)✗ Failed to register $(SERVICE_NAME)$(NC)" && exit 1); \ - fi + echo "$(BLUE)Cleaning up any existing registrations...$(NC)"; \ + sudo $(SPIRE_DIR)/bin/spire-server entry show -socketPath "$(SPIRE_SOCKET)" -spiffeID "$$SPIFFE_ID" 2>/dev/null | grep "Entry ID" | awk '{print $$4}' | while read entry_id; do \ + if [ ! -z "$$entry_id" ]; then \ + echo "$(YELLOW)Deleting existing entry: $$entry_id$(NC)"; \ + sudo $(SPIRE_DIR)/bin/spire-server entry delete -socketPath "$(SPIRE_SOCKET)" -entryID "$$entry_id" 2>/dev/null || true; \ + fi; \ + done; \ + echo "$(BLUE)Creating new stable registration...$(NC)"; \ + sudo $(SPIRE_DIR)/bin/spire-server entry create \ + -socketPath "$(SPIRE_SOCKET)" \ + -parentID "$$PARENT_ID" \ + -spiffeID "$$SPIFFE_ID" \ + -selector "docker:label:com.docker.compose.service:$(SERVICE_NAME)" \ + -x509SVIDTTL 3600 \ + && echo "$(GREEN)✓ $(SERVICE_NAME) registered with SPIRE using stable selectors$(NC)" \ + || (echo "$(RED)✗ Failed to register $(SERVICE_NAME)$(NC)" && exit 1) clean: ## Remove Docker image @echo "$(BLUE)Cleaning up...$(NC)" From b48b95adce5160b15d942c4d80c22dba2c26efba Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 20:42:54 +0200 Subject: [PATCH 10/20] fix: spire and hosts --- go/deploy/ctrl/docker-compose.yml | 2 ++ go/deploy/spire/environments/development/agent.conf | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/go/deploy/ctrl/docker-compose.yml b/go/deploy/ctrl/docker-compose.yml index 70347d9b01..ceb4a42825 100644 --- a/go/deploy/ctrl/docker-compose.yml +++ b/go/deploy/ctrl/docker-compose.yml @@ -30,6 +30,8 @@ services: - "8084:8084" depends_on: - mysql + extra_hosts: + - "host.docker.internal:host-gateway" environment: # Database configuration UNKEY_DATABASE_PRIMARY: ${UNKEY_DATABASE_PRIMARY} diff --git a/go/deploy/spire/environments/development/agent.conf b/go/deploy/spire/environments/development/agent.conf index 1d3e68e6b6..b5c3f19712 100644 --- a/go/deploy/spire/environments/development/agent.conf +++ b/go/deploy/spire/environments/development/agent.conf @@ -45,6 +45,14 @@ plugins { discover_workload_group = true } } + + # Docker workload attestor for container-based identity + WorkloadAttestor "docker" { + plugin_data { + # Docker socket for container inspection + docker_socket_path = "unix:///var/run/docker.sock" + } + } } health_checks { From 3c888c070573cc98115406506a7f741bb05c7f40 Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 21:16:09 +0200 Subject: [PATCH 11/20] feat: add auth --- go/apps/ctrl/run.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/go/apps/ctrl/run.go b/go/apps/ctrl/run.go index 5311f7102f..d346a26240 100644 --- a/go/apps/ctrl/run.go +++ b/go/apps/ctrl/run.go @@ -121,6 +121,12 @@ func Run(ctx context.Context, cfg Config) error { metaldClient := vmprovisionerv1connect.NewVmServiceClient( httpClient, cfg.MetaldAddress, + connect.WithInterceptors(connect.UnaryInterceptorFunc(func(next connect.UnaryFunc) connect.UnaryFunc { + return func(ctx context.Context, req connect.AnyRequest) (connect.AnyResponse, error) { + req.Header().Set("Authorization", "Bearer dev_user_ctrl") + return next(ctx, req) + } + })), ) logger.Info("metald client configured with SPIRE authentication", "address", cfg.MetaldAddress, "spiffe_socket", cfg.SPIFFESocketPath) From d6f48be2fe1c60df95d2ec5e1523de12e62fc959 Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 21:21:35 +0200 Subject: [PATCH 12/20] fix: import --- go/apps/ctrl/run.go | 1 + 1 file changed, 1 insertion(+) diff --git a/go/apps/ctrl/run.go b/go/apps/ctrl/run.go index d346a26240..c80654c9e4 100644 --- a/go/apps/ctrl/run.go +++ b/go/apps/ctrl/run.go @@ -8,6 +8,7 @@ import ( "log/slog" + "connectrpc.com/connect" "github.com/unkeyed/unkey/go/apps/ctrl/services/ctrl" "github.com/unkeyed/unkey/go/apps/ctrl/services/version" deployTLS "github.com/unkeyed/unkey/go/deploy/pkg/tls" From 77c1c4ea7fe3343fef4a115c6b26e7f76e742d2e Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 21:26:00 +0200 Subject: [PATCH 13/20] chore: log auth header --- go/apps/ctrl/run.go | 1 + 1 file changed, 1 insertion(+) diff --git a/go/apps/ctrl/run.go b/go/apps/ctrl/run.go index c80654c9e4..ec7dded6e8 100644 --- a/go/apps/ctrl/run.go +++ b/go/apps/ctrl/run.go @@ -124,6 +124,7 @@ func Run(ctx context.Context, cfg Config) error { cfg.MetaldAddress, connect.WithInterceptors(connect.UnaryInterceptorFunc(func(next connect.UnaryFunc) connect.UnaryFunc { return func(ctx context.Context, req connect.AnyRequest) (connect.AnyResponse, error) { + logger.Info("Adding auth header to metald request", "procedure", req.Spec().Procedure) req.Header().Set("Authorization", "Bearer dev_user_ctrl") return next(ctx, req) } From 10d185323b8387d33248570beea1dd9f194354f4 Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 21:40:48 +0200 Subject: [PATCH 14/20] fix; remove mock service --- go/apps/ctrl/run.go | 11 +- .../ctrl/services/version/deploy_workflow.go | 522 +++++++----------- go/apps/ctrl/services/version/service.go | 11 +- 3 files changed, 209 insertions(+), 335 deletions(-) diff --git a/go/apps/ctrl/run.go b/go/apps/ctrl/run.go index ec7dded6e8..64f21bedb0 100644 --- a/go/apps/ctrl/run.go +++ b/go/apps/ctrl/run.go @@ -14,7 +14,6 @@ import ( deployTLS "github.com/unkeyed/unkey/go/deploy/pkg/tls" "github.com/unkeyed/unkey/go/gen/proto/ctrl/v1/ctrlv1connect" "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1/vmprovisionerv1connect" - "github.com/unkeyed/unkey/go/pkg/builder" "github.com/unkeyed/unkey/go/pkg/db" "github.com/unkeyed/unkey/go/pkg/hydra" "github.com/unkeyed/unkey/go/pkg/otel" @@ -102,9 +101,6 @@ func Run(ctx context.Context, cfg Config) error { return fmt.Errorf("unable to create hydra worker: %w", err) } - // Create the mock builder service for demo - builderService := builder.NewMockService() - // Create metald client for VM operations with SPIRE authentication tlsConfig := deployTLS.Config{ Mode: deployTLS.ModeSPIFFE, @@ -124,8 +120,9 @@ func Run(ctx context.Context, cfg Config) error { cfg.MetaldAddress, connect.WithInterceptors(connect.UnaryInterceptorFunc(func(next connect.UnaryFunc) connect.UnaryFunc { return func(ctx context.Context, req connect.AnyRequest) (connect.AnyResponse, error) { - logger.Info("Adding auth header to metald request", "procedure", req.Spec().Procedure) + logger.Info("Adding auth headers to metald request", "procedure", req.Spec().Procedure) req.Header().Set("Authorization", "Bearer dev_user_ctrl") + req.Header().Set("X-Tenant-ID", "ctrl-tenant") return next(ctx, req) } })), @@ -133,7 +130,7 @@ func Run(ctx context.Context, cfg Config) error { logger.Info("metald client configured with SPIRE authentication", "address", cfg.MetaldAddress, "spiffe_socket", cfg.SPIFFESocketPath) // Register deployment workflow with Hydra worker - deployWorkflow := version.NewDeployWorkflow(database, logger, builderService, metaldClient) + deployWorkflow := version.NewDeployWorkflow(database, logger, metaldClient) err = hydra.RegisterWorkflow(hydraWorker, deployWorkflow) if err != nil { return fmt.Errorf("unable to register deployment workflow: %w", err) @@ -141,7 +138,7 @@ func Run(ctx context.Context, cfg Config) error { // Create the service implementations ctrlSvc := ctrl.New(cfg.InstanceID, database) - versionSvc := version.New(database, hydraEngine, builderService, logger) + versionSvc := version.New(database, hydraEngine, logger) // Create the connect handler mux := http.NewServeMux() diff --git a/go/apps/ctrl/services/version/deploy_workflow.go b/go/apps/ctrl/services/version/deploy_workflow.go index 518e2b8b09..28b5715b19 100644 --- a/go/apps/ctrl/services/version/deploy_workflow.go +++ b/go/apps/ctrl/services/version/deploy_workflow.go @@ -9,7 +9,6 @@ import ( "connectrpc.com/connect" vmprovisionerv1 "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1" "github.com/unkeyed/unkey/go/gen/proto/metal/vmprovisioner/v1/vmprovisionerv1connect" - "github.com/unkeyed/unkey/go/pkg/builder" "github.com/unkeyed/unkey/go/pkg/db" "github.com/unkeyed/unkey/go/pkg/hydra" "github.com/unkeyed/unkey/go/pkg/otel/logging" @@ -18,19 +17,17 @@ import ( // DeployWorkflow orchestrates the complete build and deployment process using Hydra type DeployWorkflow struct { - db db.Database - logger logging.Logger - builderService builder.Service - metaldClient vmprovisionerv1connect.VmServiceClient + db db.Database + logger logging.Logger + metaldClient vmprovisionerv1connect.VmServiceClient } // NewDeployWorkflow creates a new deploy workflow instance -func NewDeployWorkflow(database db.Database, logger logging.Logger, builderService builder.Service, metaldClient vmprovisionerv1connect.VmServiceClient) *DeployWorkflow { +func NewDeployWorkflow(database db.Database, logger logging.Logger, metaldClient vmprovisionerv1connect.VmServiceClient) *DeployWorkflow { return &DeployWorkflow{ - db: database, - logger: logger, - builderService: builderService, - metaldClient: metaldClient, + db: database, + logger: logger, + metaldClient: metaldClient, } } @@ -137,360 +134,243 @@ func (w *DeployWorkflow) Run(ctx hydra.WorkflowContext, req *DeployRequest) erro return err } - // Step 6: Submit build to builder service - _, err = hydra.Step(ctx, "submit-build", func(stepCtx context.Context) (*struct{}, error) { - w.logger.Info("submitting build to builder service", - "build_id", buildID, - "docker_image", req.DockerImage) + // Step 6: Create VM with Docker image (metald handles build internally) + w.logger.Info("creating VM with Docker image - metald will handle build internally", + "build_id", buildID, + "docker_image", req.DockerImage, + "version_id", req.VersionID) + + // Create VM with Docker image - metald handles build internally + createResult, err := hydra.Step(ctx, "create-vm", func(stepCtx context.Context) (*vmprovisionerv1.CreateVmResponse, error) { + w.logger.Info("updating build status to running", "build_id", buildID) + now := time.Now().UnixMilli() + runningErr := db.Query.UpdateBuildStatus(stepCtx, w.db.RW(), db.UpdateBuildStatusParams{ + ID: buildID, + Status: db.BuildsStatusRunning, + Now: sql.NullInt64{Valid: true, Int64: now}, + }) + if runningErr != nil { + return nil, fmt.Errorf("failed to update build status to running: %w", runningErr) + } - submitErr := w.builderService.SubmitBuild(stepCtx, buildID, req.DockerImage) - if submitErr != nil { - return nil, fmt.Errorf("failed to submit build to builder service: %w", submitErr) + w.logger.Info("creating VM for deployment", "version_id", req.VersionID, "docker_image", req.DockerImage, "workspace_id", req.WorkspaceID, "project_id", req.ProjectID) + + // Hardcoded VM configuration (TemplateStandard + ForDockerImage): + vmConfig := &vmprovisionerv1.VmConfig{ + Cpu: &vmprovisionerv1.CpuConfig{ + VcpuCount: 2, + MaxVcpuCount: 4, + }, + Memory: &vmprovisionerv1.MemoryConfig{ + SizeBytes: 2 * 1024 * 1024 * 1024, // 2GB + MaxSizeBytes: 8 * 1024 * 1024 * 1024, // 8GB + HotplugEnabled: true, + }, + Boot: &vmprovisionerv1.BootConfig{ + KernelPath: "/opt/vm-assets/vmlinux", + KernelArgs: "console=ttyS0 reboot=k panic=1 pci=off", + }, + Storage: []*vmprovisionerv1.StorageDevice{{ + Id: "rootfs", + Path: "/opt/vm-assets/rootfs.ext4", + ReadOnly: false, + IsRootDevice: true, + InterfaceType: "virtio-blk", + Options: map[string]string{ + "docker_image": req.DockerImage, + "auto_build": "true", + }, + }}, + Network: []*vmprovisionerv1.NetworkInterface{{ + Id: "eth0", + InterfaceType: "virtio-net", + Mode: vmprovisionerv1.NetworkMode_NETWORK_MODE_DUAL_STACK, + Ipv4Config: &vmprovisionerv1.IPv4Config{ + Dhcp: true, + }, + Ipv6Config: &vmprovisionerv1.IPv6Config{ + Slaac: true, + PrivacyExtensions: true, + }, + }}, + Console: &vmprovisionerv1.ConsoleConfig{ + Enabled: true, + Output: "/tmp/standard-vm-console.log", + ConsoleType: "serial", + }, + Metadata: map[string]string{ + "template": "standard", + "purpose": "general", + "docker_image": req.DockerImage, + "runtime": "docker", + "version_id": req.VersionID, + "workspace_id": req.WorkspaceID, + "project_id": req.ProjectID, + "created_by": "deploy-workflow", + }, } - return &struct{}{}, nil + w.logger.Info("sending VM creation request to metald", "docker_image", req.DockerImage) + resp, createErr := w.metaldClient.CreateVm(stepCtx, connect.NewRequest(&vmprovisionerv1.CreateVmRequest{ + Config: vmConfig, + })) + if createErr != nil { + w.logger.Error("metald VM creation request failed", "error", createErr, "docker_image", req.DockerImage) + return nil, fmt.Errorf("failed to create VM: %w", createErr) + } + + w.logger.Info("VM created successfully", "vm_id", resp.Msg.VmId, "state", resp.Msg.State.String(), "docker_image", req.DockerImage) + + // Update build status to succeeded since VM creation includes the build + w.logger.Info("updating build status to succeeded", "build_id", buildID) + successErr := db.Query.UpdateBuildSucceeded(stepCtx, w.db.RW(), db.UpdateBuildSucceededParams{ + ID: buildID, + Now: sql.NullInt64{Valid: true, Int64: time.Now().UnixMilli()}, + }) + if successErr != nil { + return nil, fmt.Errorf("failed to update build status to succeeded: %w", successErr) + } + w.logger.Info("build status updated to succeeded", "build_id", buildID) + + return resp.Msg, nil }) if err != nil { - w.logger.Error("failed to submit build", "error", err, "build_id", buildID) + w.logger.Error("VM creation failed", "error", err, "version_id", req.VersionID) return err } - // Wait for build completion with polling (max 150 attempts = 5 minutes) - w.logger.Info("starting build status polling", "build_id", buildID, "max_attempts", 150) - - buildResult, err := hydra.Step(ctx, "poll-build-status", func(stepCtx context.Context) (*BuildResult, error) { - var lastStatus string - - for attempt := 1; attempt <= 150; attempt++ { - w.logger.Info("checking build status", "build_id", buildID, "attempt", attempt) - - buildStatus, statusErr := w.builderService.GetBuildStatus(stepCtx, buildID) - if statusErr != nil { - w.logger.Error("failed to get build status", "error", statusErr, "build_id", buildID, "attempt", attempt) - return nil, fmt.Errorf("failed to get build status: %w", statusErr) - } + w.logger.Info("VM creation completed", "vm_id", createResult.VmId, "state", createResult.State.String()) - currentStatus := string(buildStatus.Status) - w.logger.Info("build status check", "build_id", buildID, "status", currentStatus, "attempt", attempt) - - // Update database if status has changed - if currentStatus != lastStatus { - w.logger.Info("build status changed, updating database", "build_id", buildID, "old_status", lastStatus, "new_status", currentStatus, "attempt", attempt) - now := time.Now().UnixMilli() - - switch buildStatus.Status { - case builder.BuildStatusQueued: - w.logger.Info("build is queued, no database update needed", "build_id", buildID) - - case builder.BuildStatusRunning: - w.logger.Info("updating build status to running", "build_id", buildID) - runningErr := db.Query.UpdateBuildStatus(stepCtx, w.db.RW(), db.UpdateBuildStatusParams{ - ID: buildID, - Status: db.BuildsStatusRunning, - Now: sql.NullInt64{Valid: true, Int64: now}, - }) - if runningErr != nil { - return nil, fmt.Errorf("failed to update build status to running: %w", runningErr) - } - w.logger.Info("build status updated to running", "build_id", buildID) - - case builder.BuildStatusSuccess: - w.logger.Info("updating build status to succeeded", "build_id", buildID) - successErr := db.Query.UpdateBuildSucceeded(stepCtx, w.db.RW(), db.UpdateBuildSucceededParams{ - ID: buildID, - Now: sql.NullInt64{Valid: true, Int64: now}, - }) - if successErr != nil { - return nil, fmt.Errorf("failed to update build status to succeeded: %w", successErr) - } - w.logger.Info("build status updated to succeeded", "build_id", buildID) - - case builder.BuildStatusFailed: - w.logger.Info("updating build status to failed", "build_id", buildID, "error", buildStatus.ErrorMsg) - failedErr := db.Query.UpdateBuildFailed(stepCtx, w.db.RW(), db.UpdateBuildFailedParams{ - ID: buildID, - ErrorMessage: sql.NullString{String: buildStatus.ErrorMsg, Valid: buildStatus.ErrorMsg != ""}, - Now: sql.NullInt64{Valid: true, Int64: now}, - }) - if failedErr != nil { - return nil, fmt.Errorf("failed to update build status to failed: %w", failedErr) - } - w.logger.Info("build status updated to failed", "build_id", buildID) - - // Also update version status to failed - w.logger.Info("updating version status to failed", "version_id", req.VersionID) - versionErr := db.Query.UpdateVersionStatus(stepCtx, w.db.RW(), db.UpdateVersionStatusParams{ - ID: req.VersionID, - Status: db.VersionsStatusFailed, - Now: sql.NullInt64{Valid: true, Int64: now}, - }) - if versionErr != nil { - return nil, fmt.Errorf("failed to update version status to failed: %w", versionErr) - } - w.logger.Info("version status updated to failed", "version_id", req.VersionID) - } - lastStatus = currentStatus - } else { - w.logger.Info("build status unchanged, skipping database update", "build_id", buildID, "status", currentStatus, "attempt", attempt) - } + // Update version status to deploying (after successful VM creation) + _, err = hydra.Step(ctx, "update-version-deploying", func(stepCtx context.Context) (*struct{}, error) { + w.logger.Info("starting deployment", "version_id", req.VersionID) - // Check if build is complete - switch buildStatus.Status { - case builder.BuildStatusSuccess: - w.logger.Info("build completed successfully", "build_id", buildID, "attempt", attempt) - return &BuildResult{ - BuildID: buildID, - Status: "succeeded", - ErrorMsg: "", - }, nil - - case builder.BuildStatusFailed: - w.logger.Info("build failed", "build_id", buildID, "attempt", attempt, "error", buildStatus.ErrorMsg) - return &BuildResult{ - BuildID: buildID, - Status: "failed", - ErrorMsg: buildStatus.ErrorMsg, - }, nil - - default: - // Build is still in progress (queued, running, or other status) - w.logger.Info("build still in progress", "build_id", buildID, "status", currentStatus, "attempt", attempt) - - // Sleep before next attempt (except on last attempt) - if attempt < 150 { - w.logger.Info("sleeping before next build status check", "build_id", buildID, "status", currentStatus, "attempt", attempt, "sleep_duration", "2s") - time.Sleep(2 * time.Second) - } - } + deployingErr := db.Query.UpdateVersionStatus(stepCtx, w.db.RW(), db.UpdateVersionStatusParams{ + ID: req.VersionID, + Status: db.VersionsStatusDeploying, + Now: sql.NullInt64{Valid: true, Int64: time.Now().UnixMilli()}, + }) + if deployingErr != nil { + return nil, fmt.Errorf("failed to update version status to deploying: %w", deployingErr) } - - // If we reach here, we exceeded max attempts - return nil, fmt.Errorf("build polling timed out after 150 attempts (5 minutes)") + return &struct{}{}, nil }) if err != nil { - w.logger.Error("build polling failed", "error", err, "build_id", buildID) + w.logger.Error("failed to update version status to deploying", "error", err, "version_id", req.VersionID) return err } - // Handle build failure - if buildResult.Status == "failed" { - w.logger.Error("build failed", "build_id", buildID, "error", buildResult.ErrorMsg) - return fmt.Errorf("build failed: %s", buildResult.ErrorMsg) - } - - // Deploy if build succeeded - if buildResult.Status == "succeeded" { - w.logger.Info("build succeeded, proceeding with deployment", "build_id", buildID, "version_id", req.VersionID) + // Check VM readiness (max 30 attempts = 30 seconds) + w.logger.Info("starting VM status polling", "vm_id", createResult.VmId, "max_attempts", 30) - // Create VM first - createResult, err := hydra.Step(ctx, "create-vm", func(stepCtx context.Context) (*vmprovisionerv1.CreateVmResponse, error) { - w.logger.Info("creating VM for deployment", "version_id", req.VersionID, "docker_image", req.DockerImage, "workspace_id", req.WorkspaceID, "project_id", req.ProjectID) - - // Hardcoded VM configuration (TemplateStandard + ForDockerImage): - vmConfig := &vmprovisionerv1.VmConfig{ - Cpu: &vmprovisionerv1.CpuConfig{ - VcpuCount: 2, - MaxVcpuCount: 4, - }, - Memory: &vmprovisionerv1.MemoryConfig{ - SizeBytes: 2 * 1024 * 1024 * 1024, // 2GB - MaxSizeBytes: 8 * 1024 * 1024 * 1024, // 8GB - HotplugEnabled: true, - }, - Boot: &vmprovisionerv1.BootConfig{ - KernelPath: "/opt/vm-assets/vmlinux", - KernelArgs: "console=ttyS0 reboot=k panic=1 pci=off", - }, - Storage: []*vmprovisionerv1.StorageDevice{{ - Id: "rootfs", - Path: "/opt/vm-assets/rootfs.ext4", - ReadOnly: false, - IsRootDevice: true, - InterfaceType: "virtio-blk", - Options: map[string]string{ - "docker_image": req.DockerImage, - "auto_build": "true", - }, - }}, - Network: []*vmprovisionerv1.NetworkInterface{{ - Id: "eth0", - InterfaceType: "virtio-net", - Mode: vmprovisionerv1.NetworkMode_NETWORK_MODE_DUAL_STACK, - Ipv4Config: &vmprovisionerv1.IPv4Config{ - Dhcp: true, - }, - Ipv6Config: &vmprovisionerv1.IPv6Config{ - Slaac: true, - PrivacyExtensions: true, - }, - }}, - Console: &vmprovisionerv1.ConsoleConfig{ - Enabled: true, - Output: "/tmp/standard-vm-console.log", - ConsoleType: "serial", - }, - Metadata: map[string]string{ - "template": "standard", - "purpose": "general", - "docker_image": req.DockerImage, - "runtime": "docker", - "version_id": req.VersionID, - "workspace_id": req.WorkspaceID, - "project_id": req.ProjectID, - "created_by": "deploy-workflow", - }, - } + _, err = hydra.Step(ctx, "poll-vm-status", func(stepCtx context.Context) (*struct{}, error) { + for attempt := 1; attempt <= 30; attempt++ { + w.logger.Info("checking VM status", "vm_id", createResult.VmId, "attempt", attempt) - w.logger.Info("sending VM creation request to metald", "docker_image", req.DockerImage) - resp, createErr := w.metaldClient.CreateVm(stepCtx, connect.NewRequest(&vmprovisionerv1.CreateVmRequest{ - Config: vmConfig, + w.logger.Info("sending VM status request to metald", "vm_id", createResult.VmId) + resp, getErr := w.metaldClient.GetVmInfo(stepCtx, connect.NewRequest(&vmprovisionerv1.GetVmInfoRequest{ + VmId: createResult.VmId, })) - if createErr != nil { - w.logger.Error("metald VM creation request failed", "error", createErr, "docker_image", req.DockerImage) - return nil, fmt.Errorf("failed to create VM: %w", createErr) + if getErr != nil { + w.logger.Error("metald VM status request failed", "error", getErr, "vm_id", createResult.VmId, "attempt", attempt) + return nil, fmt.Errorf("failed to get VM info: %w", getErr) } - w.logger.Info("VM created successfully", "vm_id", resp.Msg.VmId, "state", resp.Msg.State.String(), "docker_image", req.DockerImage) - return resp.Msg, nil - }) - if err != nil { - w.logger.Error("VM creation failed", "error", err, "version_id", req.VersionID) - return err - } + w.logger.Info("VM status check", "vm_id", createResult.VmId, "state", resp.Msg.State.String(), "attempt", attempt) - w.logger.Info("VM creation completed", "vm_id", createResult.VmId, "state", createResult.State.String()) - - // Update version status to deploying (after successful VM creation) - _, err = hydra.Step(ctx, "update-version-deploying", func(stepCtx context.Context) (*struct{}, error) { - w.logger.Info("starting deployment", "version_id", req.VersionID) - - deployingErr := db.Query.UpdateVersionStatus(stepCtx, w.db.RW(), db.UpdateVersionStatusParams{ - ID: req.VersionID, - Status: db.VersionsStatusDeploying, - Now: sql.NullInt64{Valid: true, Int64: time.Now().UnixMilli()}, - }) - if deployingErr != nil { - return nil, fmt.Errorf("failed to update version status to deploying: %w", deployingErr) + // Check if VM is ready for boot + if resp.Msg.State == vmprovisionerv1.VmState_VM_STATE_CREATED || + resp.Msg.State == vmprovisionerv1.VmState_VM_STATE_RUNNING { + w.logger.Info("VM is ready", "vm_id", createResult.VmId, "state", resp.Msg.State.String()) + return &struct{}{}, nil } - return &struct{}{}, nil - }) - if err != nil { - w.logger.Error("failed to update version status to deploying", "error", err, "version_id", req.VersionID) - return err - } - // Check VM readiness (max 30 attempts = 30 seconds) - w.logger.Info("starting VM status polling", "vm_id", createResult.VmId, "max_attempts", 30) - - _, err = hydra.Step(ctx, "poll-vm-status", func(stepCtx context.Context) (*struct{}, error) { - for attempt := 1; attempt <= 30; attempt++ { - w.logger.Info("checking VM status", "vm_id", createResult.VmId, "attempt", attempt) - - w.logger.Info("sending VM status request to metald", "vm_id", createResult.VmId) - resp, getErr := w.metaldClient.GetVmInfo(stepCtx, connect.NewRequest(&vmprovisionerv1.GetVmInfoRequest{ - VmId: createResult.VmId, - })) - if getErr != nil { - w.logger.Error("metald VM status request failed", "error", getErr, "vm_id", createResult.VmId, "attempt", attempt) - return nil, fmt.Errorf("failed to get VM info: %w", getErr) - } - - w.logger.Info("VM status check", "vm_id", createResult.VmId, "state", resp.Msg.State.String(), "attempt", attempt) - - // Check if VM is ready for boot - if resp.Msg.State == vmprovisionerv1.VmState_VM_STATE_CREATED || - resp.Msg.State == vmprovisionerv1.VmState_VM_STATE_RUNNING { - w.logger.Info("VM is ready", "vm_id", createResult.VmId, "state", resp.Msg.State.String()) - return &struct{}{}, nil - } - - // Sleep before next attempt (except on last attempt) - if attempt < 30 { - w.logger.Info("VM not ready yet, sleeping before next check", "vm_id", createResult.VmId, "state", resp.Msg.State.String(), "attempt", attempt, "sleep_duration", "1s") - time.Sleep(1 * time.Second) - } + // Sleep before next attempt (except on last attempt) + if attempt < 30 { + w.logger.Info("VM not ready yet, sleeping before next check", "vm_id", createResult.VmId, "state", resp.Msg.State.String(), "attempt", attempt, "sleep_duration", "1s") + time.Sleep(1 * time.Second) } - - // If we reach here, we exceeded max attempts - return nil, fmt.Errorf("VM polling timed out after 30 attempts (30 seconds)") - }) - if err != nil { - w.logger.Error("VM status polling failed", "error", err, "vm_id", createResult.VmId) - return err } - // Boot VM - _, err = hydra.Step(ctx, "boot-vm", func(stepCtx context.Context) (*vmprovisionerv1.BootVmResponse, error) { - w.logger.Info("booting VM", "vm_id", createResult.VmId) - - w.logger.Info("sending VM boot request to metald", "vm_id", createResult.VmId) - resp, bootErr := w.metaldClient.BootVm(stepCtx, connect.NewRequest(&vmprovisionerv1.BootVmRequest{ - VmId: createResult.VmId, - })) - if bootErr != nil { - w.logger.Error("metald VM boot request failed", "error", bootErr, "vm_id", createResult.VmId) - return nil, fmt.Errorf("failed to boot VM: %w", bootErr) - } - - if !resp.Msg.Success { - w.logger.Error("VM boot was not successful", "vm_id", createResult.VmId, "state", resp.Msg.State.String()) - return nil, fmt.Errorf("VM boot was not successful, state: %s", resp.Msg.State.String()) - } + // If we reach here, we exceeded max attempts + return nil, fmt.Errorf("VM polling timed out after 30 attempts (30 seconds)") + }) + if err != nil { + w.logger.Error("VM status polling failed", "error", err, "vm_id", createResult.VmId) + return err + } - w.logger.Info("VM booted successfully", "vm_id", createResult.VmId, "state", resp.Msg.State.String()) - return resp.Msg, nil - }) - if err != nil { - w.logger.Error("VM boot failed", "error", err, "vm_id", createResult.VmId) - return err + // Boot VM + _, err = hydra.Step(ctx, "boot-vm", func(stepCtx context.Context) (*vmprovisionerv1.BootVmResponse, error) { + w.logger.Info("booting VM", "vm_id", createResult.VmId) + + w.logger.Info("sending VM boot request to metald", "vm_id", createResult.VmId) + resp, bootErr := w.metaldClient.BootVm(stepCtx, connect.NewRequest(&vmprovisionerv1.BootVmRequest{ + VmId: createResult.VmId, + })) + if bootErr != nil { + w.logger.Error("metald VM boot request failed", "error", bootErr, "vm_id", createResult.VmId) + return nil, fmt.Errorf("failed to boot VM: %w", bootErr) } - w.logger.Info("VM boot completed successfully", "vm_id", createResult.VmId) - - // Generate completion timestamp - completionTime, err := hydra.Step(ctx, "generate-completion-timestamp", func(stepCtx context.Context) (int64, error) { - timestamp := time.Now().UnixMilli() - w.logger.Info("generated completion timestamp", "timestamp", timestamp) - return timestamp, nil - }) - if err != nil { - w.logger.Error("failed to generate completion timestamp", "error", err) - return err + if !resp.Msg.Success { + w.logger.Error("VM boot was not successful", "vm_id", createResult.VmId, "state", resp.Msg.State.String()) + return nil, fmt.Errorf("VM boot was not successful, state: %s", resp.Msg.State.String()) } - // Update version status to active - _, err = hydra.Step(ctx, "update-version-active", func(stepCtx context.Context) (*DeploymentResult, error) { - w.logger.Info("updating version status to active", "version_id", req.VersionID, "completion_time", completionTime) - activeErr := db.Query.UpdateVersionStatus(stepCtx, w.db.RW(), db.UpdateVersionStatusParams{ - ID: req.VersionID, - Status: db.VersionsStatusActive, - Now: sql.NullInt64{Valid: true, Int64: completionTime}, - }) - if activeErr != nil { - w.logger.Error("failed to update version status to active", "error", activeErr, "version_id", req.VersionID) - return nil, fmt.Errorf("failed to update version status to active: %w", activeErr) - } + w.logger.Info("VM booted successfully", "vm_id", createResult.VmId, "state", resp.Msg.State.String()) + return resp.Msg, nil + }) + if err != nil { + w.logger.Error("VM boot failed", "error", err, "vm_id", createResult.VmId) + return err + } - w.logger.Info("deployment complete", "version_id", req.VersionID, "status", "active") + w.logger.Info("VM boot completed successfully", "vm_id", createResult.VmId) + + // Generate completion timestamp + completionTime, err := hydra.Step(ctx, "generate-completion-timestamp", func(stepCtx context.Context) (int64, error) { + timestamp := time.Now().UnixMilli() + w.logger.Info("generated completion timestamp", "timestamp", timestamp) + return timestamp, nil + }) + if err != nil { + w.logger.Error("failed to generate completion timestamp", "error", err) + return err + } - return &DeploymentResult{ - VersionID: req.VersionID, - Status: "active", - }, nil + // Update version status to active + _, err = hydra.Step(ctx, "update-version-active", func(stepCtx context.Context) (*DeploymentResult, error) { + w.logger.Info("updating version status to active", "version_id", req.VersionID, "completion_time", completionTime) + activeErr := db.Query.UpdateVersionStatus(stepCtx, w.db.RW(), db.UpdateVersionStatusParams{ + ID: req.VersionID, + Status: db.VersionsStatusActive, + Now: sql.NullInt64{Valid: true, Int64: completionTime}, }) - if err != nil { - w.logger.Error("deployment failed", "error", err, "version_id", req.VersionID) - return err + if activeErr != nil { + w.logger.Error("failed to update version status to active", "error", activeErr, "version_id", req.VersionID) + return nil, fmt.Errorf("failed to update version status to active: %w", activeErr) } - w.logger.Info("deployment workflow stage completed successfully", "version_id", req.VersionID, "vm_id", createResult.VmId) + w.logger.Info("deployment complete", "version_id", req.VersionID, "status", "active") + + return &DeploymentResult{ + VersionID: req.VersionID, + Status: "active", + }, nil + }) + if err != nil { + w.logger.Error("deployment failed", "error", err, "version_id", req.VersionID) + return err } + w.logger.Info("deployment workflow stage completed successfully", "version_id", req.VersionID, "vm_id", createResult.VmId) + w.logger.Info("deployment workflow completed", "execution_id", ctx.ExecutionID(), "build_id", buildID, "version_id", req.VersionID, - "status", buildResult.Status, + "status", "succeeded", "workspace_id", req.WorkspaceID, "project_id", req.ProjectID, "docker_image", req.DockerImage) diff --git a/go/apps/ctrl/services/version/service.go b/go/apps/ctrl/services/version/service.go index 0452de6201..937e45384a 100644 --- a/go/apps/ctrl/services/version/service.go +++ b/go/apps/ctrl/services/version/service.go @@ -2,7 +2,6 @@ package version import ( "github.com/unkeyed/unkey/go/gen/proto/ctrl/v1/ctrlv1connect" - "github.com/unkeyed/unkey/go/pkg/builder" "github.com/unkeyed/unkey/go/pkg/db" "github.com/unkeyed/unkey/go/pkg/hydra" "github.com/unkeyed/unkey/go/pkg/otel/logging" @@ -10,18 +9,16 @@ import ( type Service struct { ctrlv1connect.UnimplementedVersionServiceHandler - db db.Database - hydraEngine *hydra.Engine - builderService builder.Service - logger logging.Logger + db db.Database + hydraEngine *hydra.Engine + logger logging.Logger } -func New(database db.Database, hydraEngine *hydra.Engine, builderService builder.Service, logger logging.Logger) *Service { +func New(database db.Database, hydraEngine *hydra.Engine, logger logging.Logger) *Service { return &Service{ UnimplementedVersionServiceHandler: ctrlv1connect.UnimplementedVersionServiceHandler{}, db: database, hydraEngine: hydraEngine, - builderService: builderService, logger: logger, } } From 64834609c2f68e1e5b9e2a52409c55a07040c90f Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 21:57:07 +0200 Subject: [PATCH 15/20] chore: log --- go/deploy/metald/client/cmd/metald-cli/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/deploy/metald/client/cmd/metald-cli/main.go b/go/deploy/metald/client/cmd/metald-cli/main.go index ebb2e5c4ba..0fccb27f18 100644 --- a/go/deploy/metald/client/cmd/metald-cli/main.go +++ b/go/deploy/metald/client/cmd/metald-cli/main.go @@ -562,7 +562,7 @@ func handleCreateAndBoot(ctx context.Context, metaldClient *client.Client, optio VMID: vmID, Config: config, } - + log.Printf("createReq: %+v/n", createReq) createResp, err := metaldClient.CreateVM(ctx, createReq) if err != nil { log.Fatalf("Failed to create VM: %v", err) From 2dff09b9ed3b2b720a2db3b8efe776dd236998c8 Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 22:01:48 +0200 Subject: [PATCH 16/20] chore: log --- go/deploy/metald/internal/service/vm.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/go/deploy/metald/internal/service/vm.go b/go/deploy/metald/internal/service/vm.go index af29ae6035..ca014fd7a1 100644 --- a/go/deploy/metald/internal/service/vm.go +++ b/go/deploy/metald/internal/service/vm.go @@ -2,6 +2,7 @@ package service import ( "context" + "encoding/json" "fmt" "log/slog" "math" @@ -59,6 +60,15 @@ func (s *VMService) CreateVm(ctx context.Context, req *connect.Request[metaldv1. slog.String("method", "CreateVm"), ) + // DEBUG: Log full request config for debugging + config := req.Msg.GetConfig() + if config != nil { + configJSON, _ := json.Marshal(config) + s.logger.LogAttrs(ctx, slog.LevelInfo, "DEBUG: Full VM config received", + slog.String("config_json", string(configJSON)), + ) + } + // Record VM create request metric if s.vmMetrics != nil { s.vmMetrics.RecordVMCreateRequest(ctx, s.getBackendType()) From fef6781f92addd97e9ec78fe8ca54e9e05546fdb Mon Sep 17 00:00:00 2001 From: chronark Date: Wed, 9 Jul 2025 22:02:59 +0200 Subject: [PATCH 17/20] adhaksdajksf --- go/deploy/metald/internal/service/vm.go | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/go/deploy/metald/internal/service/vm.go b/go/deploy/metald/internal/service/vm.go index ca014fd7a1..f3317ae10d 100644 --- a/go/deploy/metald/internal/service/vm.go +++ b/go/deploy/metald/internal/service/vm.go @@ -60,21 +60,20 @@ func (s *VMService) CreateVm(ctx context.Context, req *connect.Request[metaldv1. slog.String("method", "CreateVm"), ) - // DEBUG: Log full request config for debugging + // Record VM create request metric + if s.vmMetrics != nil { + s.vmMetrics.RecordVMCreateRequest(ctx, s.getBackendType()) + } + config := req.Msg.GetConfig() + + // DEBUG: Log full request config for debugging if config != nil { configJSON, _ := json.Marshal(config) s.logger.LogAttrs(ctx, slog.LevelInfo, "DEBUG: Full VM config received", slog.String("config_json", string(configJSON)), ) } - - // Record VM create request metric - if s.vmMetrics != nil { - s.vmMetrics.RecordVMCreateRequest(ctx, s.getBackendType()) - } - - config := req.Msg.GetConfig() if config == nil { err := fmt.Errorf("vm config is required") span.RecordError(err) From d7da84e38bef4721319e58cc304b34133dd664d7 Mon Sep 17 00:00:00 2001 From: chronark Date: Thu, 10 Jul 2025 09:12:41 +0200 Subject: [PATCH 18/20] fix: imports --- go/deploy/metald/client/go.mod | 4 +++- go/deploy/metald/client/go.sum | 8 ++++---- go/deploy/metald/client/metald-cli | Bin 0 -> 18900546 bytes 3 files changed, 7 insertions(+), 5 deletions(-) create mode 100755 go/deploy/metald/client/metald-cli diff --git a/go/deploy/metald/client/go.mod b/go/deploy/metald/client/go.mod index 89ecf4d9ec..36a2120332 100644 --- a/go/deploy/metald/client/go.mod +++ b/go/deploy/metald/client/go.mod @@ -4,7 +4,7 @@ go 1.24.4 require ( connectrpc.com/connect v1.18.1 - github.com/unkeyed/unkey/go/deploy/metald v0.0.0 + github.com/unkeyed/unkey/go v0.0.0-00010101000000-000000000000 github.com/unkeyed/unkey/go/deploy/pkg/tls v0.0.0 ) @@ -28,3 +28,5 @@ replace github.com/unkeyed/unkey/go/deploy/metald => .. replace github.com/unkeyed/unkey/go/deploy/pkg/tls => ../../pkg/tls replace github.com/unkeyed/unkey/go/deploy/pkg/spiffe => ../../pkg/spiffe + +replace github.com/unkeyed/unkey/go => ../../.. diff --git a/go/deploy/metald/client/go.sum b/go/deploy/metald/client/go.sum index b646af454b..665693e8b6 100644 --- a/go/deploy/metald/client/go.sum +++ b/go/deploy/metald/client/go.sum @@ -2,8 +2,8 @@ connectrpc.com/connect v1.18.1 h1:PAg7CjSAGvscaf6YZKUefjoih5Z/qYkyaTrBW8xvYPw= connectrpc.com/connect v1.18.1/go.mod h1:0292hj1rnx8oFrStN7cB4jjVBeqs+Yx5yDIC2prWDO8= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= @@ -16,8 +16,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= diff --git a/go/deploy/metald/client/metald-cli b/go/deploy/metald/client/metald-cli new file mode 100755 index 0000000000000000000000000000000000000000..9cd59413cd8947d0aa3dc499d5f29beb8b9f73cf GIT binary patch literal 18900546 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

Ho);pZbsdQROF( z1)f2Uaub}ji@08Z{Jwk+T^H+`{HA;k=ErC4!p`t~doBmLF0;IxMt|Or7mpih$L}wX z=SP%WSAVcL&CBmC?NO}6%YFI!K8M#%5*N!O-V@}Y{cal`@SD$}`FR_jf#L1>93DKm z*~FhXln;3!csAScB<2(BTy64`%Pc1!IZA$Vmhs?o=abwxaia^LH(zkFlpI0w$2Skt z9MPrmK1P`PW!{xs1!vxK@j$apc_ClpUcl5pvEKB2LwR3bo){~~1_|!Hd1e|p%k~^= zKEKHwX>DNc)|+Eheogs6b8-rECTS+TeMa`*9^CZ9ji+{)^jYi9^pdkMwB^f+N6|*d zXy!thd#>!)^G#^fy?iM7fxH{!JZzvdzq*HORcYqHaq!a}?AO|Lrg23#<+_<`ExO2@jKT*QwKM0w{)5L3_L}Tj(GYWTF?1n6VeZJ4j~zU0vSwMjrtIM@ z)_v<}=jICY`1GHaFyA+{m~fa+l$J35@$cuGC*<2uV%&wT0;+!cpPVmem> zzj(#e8|s3enBTkzJO(PrtLx1egPg_4$tuhzud$5z(vE<+DGF^P

QBEeeedauERs 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

a2jZ|1XIoPh=Z-r3Q-qj_T!F-`waP``4gCfI)- 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

mg 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 E?RetmxKhsgay5ZQa@cK;uPtar!60&!m~ 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

;;ckJcHkMY;2Nc_I*I}bYeuL*EaI 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 Y6DyL_k7L*hrjY*a`9LNOxegsA_I8bdgKES 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 z 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%0Aef#ZL~p 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

Wj=WKLa%Z@>~acfwji(jptsA(tEnfS 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

f;<~oWklnOb!8*z3dj{D?Ck&ix&nHfz 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

v*J!?ws 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 z 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 _?PuSD{Rh36e%~6qXwUv- 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®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�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

k1fI)PUDR9CG0CTdM>oqjt-<; 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 z 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%0D(J9V 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≺$BUl3|6y|}b7vF6gombLkfr;2kT3-VPP<2#Mb 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

WSe65e&K#IUu9nu1->ytQn_vt1RN|o` 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�FBQkn=2BzL<=Zz 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